找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15000|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + l3 F6 R2 g% o3 F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      \$ E7 J% @! b: O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 D; d& R$ c% ?3 N
usage: himr <address> <value>. sample: himr 0x80040000 0x0! y  Y$ a9 e+ H
% y; g7 d! M# P; o4 Y: G( `
/ H/ |$ ^4 h1 i& e
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: g- F6 x# t  ]1 \1 J3 Y. S6 x6 e$ t
补充内容 (2012-3-8 09:42):* t, Z5 z+ Y" F/ d0 z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 {- l: q# @  |- n4 u
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
8 ^2 E: v" r6 S5 t+ ]  ]# S! ~( b; h* \1 l5 S
himr <address> <value>. sample: himr 0x80040000 0x00 a; Q" `. o! z0 l

$ w! r, i1 H4 v! f& ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  C4 U4 o! l& B( lhimr 0x80040000 0x00
* ~8 P) ^7 c+ S2 hhimr 0x80040001 0x11' ~) W. g' p7 d6 G
himr 0x80040002 0x22
8 }4 D3 W8 d! }5 ?: fhimr 0x80040003 0x33
% j* V3 g* X' A- y0 f  E+ Q# rhimr 0x80040004 0x44: W. o& g; h4 i( N  l
himr 0x80040005 0x55
& D: w, v$ k, ^2 z- j- e" C- Q# a! L, G, k/ s
SN也是类似。9 x, }: F: W0 M/ r: ]8 K3 b
; ~) s6 w' [9 C
现在主要是,谁告诉我们MAC和SN的地址?$ ^. m, R$ W# u
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, k& U' }! q% V一直想找到运程修改MAC和SN的办法,苦于无解啊
2 N3 q3 @+ D7 R- n, t! b- [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! |, ^- g2 j' [. W9 a
+ L! R( w. h: ?- ]" T2 Q
修改的代码早有了。到今天不会编译。
* t2 i9 H! M; x6 O' }0 N需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , Q& [4 O( C' X8 |' p% x& u3 q
  2. #include <malloc.h>" T4 N1 X2 W( d: h: _3 E' |( J
  3. #include <sys/types.h>
    / \3 r" _, O1 O7 J* W
  4. #include <sys/stat.h>
    4 J/ |; |' s. C2 `/ ^' p6 h
  5. #include <sys/ioctl.h>
    9 e" h- g& g" i/ X4 _! i+ i; a
  6. #include <stdio.h># y/ M% r7 j% e8 u6 T* \
  7. #include <string.h>/ P& j- z7 U8 d1 e1 p5 n; C

  8.   [7 O& A- q2 O# i9 S
  9. typedef struct {0 X1 o3 {1 K0 F/ {# X. O: ?$ A
  10.         unsigned int        e2prom_cmd_sub_addr;
    / s  s3 i( }3 W: n6 c
  11.         unsigned int        sub_addr_count;
    - E& m  G2 T( J- i# I/ c$ T' i
  12.         unsigned char*        e2prom_cmd_data;
    5 G: r+ [' x9 D
  13.         unsigned int        data_count;0 R3 `2 P& W0 _  c! m( U
  14. } e2prom_s_cmd;( ~7 Z8 i& g: C$ w+ l
  15. ) y% Q# g6 |: [7 B7 z6 Z; X. q
  16. #define E2PROM_CMD_READ 1
    8 k2 C3 B5 \, S
  17. #define E2PROM_CMD_WRITE 2
    0 t( j, s. t8 [# g( n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 l& H+ ^9 H4 M  f9 L

  19. 1 B; q/ n) c+ _0 R! e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! V8 r6 k2 N: k1 u
  21. {! }; G: h7 F* b5 I
  22.         int fd, ret;
      M& _/ m  k3 h: p
  23.         e2prom_s_cmd arg;- S5 b' s: x" i! B4 u- e2 T
  24.         unsigned char buf[0x18];
    ; X8 v: W" L# x1 v. z
  25. $ Q7 p: n6 X* o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" r6 e$ d$ v& x3 H( t
  27.         if (fd  < 0) {5 p4 v( i7 E* o$ X$ q# _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( H! b2 @6 D  f
  29.                 return -1;
    6 @5 D& D+ F2 X) Y4 I
  30.         }
    # U3 P# ]# p7 J8 R* l) ~1 T( N
  31.         arg.sub_addr_count      = 2;
    0 K$ T0 R( S1 c7 Q. [5 D
  32.         arg.data_count          = 0x18;
      a% C- `: H9 Z& B( T" ^$ F# A
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 S# P6 ~) X4 y9 W3 W
  34.         arg.e2prom_cmd_data     = buf;
    6 \+ Y. m5 f% i4 ]/ N) S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # D$ Q+ w0 x" D. G
  36.         if (ret != 0) {
    - E2 W) Q0 B9 [; @3 b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; h3 q- }  _3 _4 _, z
  38.                 return -1;
    + b0 p$ y& i% y: {2 U
  39.         }: F2 D2 i+ T( Y0 }5 t. U
  40.         memcpy(mac, buf, 6);
    1 _( o$ w* k1 m) O
  41.         memcpy(stbid, &buf[6], 18);2 V" b" E4 e/ z# j; ^
  42.         stbid[18] = '\0';
    8 Y/ V0 V! J9 B3 I4 ?
  43. 5 G# P/ p  A) B8 p; I9 _( A+ v
  44.         return 0;
    * \5 ?' E0 Q4 `) {8 e" t+ n
  45. }/ x: a/ |0 i- z

  46. 6 v" V9 e+ H6 K8 W$ Q/ H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ y$ t! [  C  T  V# C) G
  48. {- t: ]! }  e, C; H( f' R: \* a! x4 ?
  49.         int fd, ret;" ^% G' z' h4 b$ A2 q9 |% ~
  50.         e2prom_s_cmd arg;
    . B$ F$ t  _8 M1 {  I! n9 M8 @
  51.         unsigned char buf[0x18];/ X! A$ A) z7 m2 y  Y' W8 D5 ~

  52. ! f+ Y  M& j/ o+ z
  53.         memcpy(buf, mac, 6);
    . A9 x# @( v0 i1 v3 l+ H/ ]
  54.         memcpy(&buf[6], stbid, 18);
    ' V" n8 s9 }9 D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 q/ I* o5 ]! A. V
  56.         if (fd  < 0) {
    0 T9 l& e4 ?# R) o6 P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 Y- F8 D+ l- }' \/ g
  58.                 return -1;! o9 e% ?( ~$ Y: [% r, ]5 m0 `
  59.         }1 H/ Y1 p8 ^1 z0 t
  60.         arg.sub_addr_count      = 2;
    1 r: }! d  u$ |& M8 q
  61.         arg.data_count          = 0x18;, p1 y' {6 C  B. D1 b: i! ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;, ?7 w+ f& F: H) y
  63.         arg.e2prom_cmd_data     = buf;
    ! p% V' [, {/ d1 \  n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ n1 W  A9 p" f  h
  65.         if (ret != 0) {) V  Q& J0 u: e, N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " ?+ _5 t1 F/ K5 K
  67.                 return -1;
    ; @6 Q0 e9 K" u
  68.         }
    4 I. f2 N5 n( j: K0 S

  69. 4 }' s; o' \9 {3 e' x! @9 Z4 d+ _
  70.         return 0;
    ( U2 Z* P* Y" C, A( ?: Q% h% V% V) l$ Q
  71. }2 D7 r  ~/ |- c* Z; Q- {
  72. ( h. x! j, c/ R/ H; w" X, \
  73. int main()
    . g' w) F! u, w
  74. {
    & b, `* R+ w, F' O+ w
  75.         char c;7 r  {5 t1 T6 g4 L, Z9 D% `+ W
  76.         int i, macs[6];
    ; e" ?1 \- z1 v- K- w$ m
  77.         unsigned char mac[6];
    ! Q. c( I& ]* E- F. S) I$ q4 b% b
  78.         unsigned char stbid[256];
    : E( |/ v/ [+ S) g
  79. - ^1 m4 R3 n! T5 N
  80.         if (readparam(mac, stbid) < 0)4 I! }* i; o) l! z) c9 h! y/ u
  81.                 return 1;
    % j( Q& K, ^$ c+ }+ V

  82. ! N2 f* g( o: F3 x: H6 h
  83.         printf("Current parameters: \n");
    ( ^* r+ i! F; \% @4 T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* }: C& X/ A6 G$ n9 [: J, t
  85.         printf("  STBID: %s\n", stbid);
    ' e; I5 d' v4 k4 ]
  86.         1 q# m# O0 K, z! Y# W3 F/ W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; `% @3 q3 B4 E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {2 `: E0 G/ |$ y6 Y% q/ @+ T( }
  89.                 printf("Input MAC error\n");9 a$ d9 a' U; I5 e1 p$ c
  90.                 return 1;
    9 _; c+ t* I( x8 D6 t1 p
  91.         }
    / N' s4 K. {6 V5 Z3 ^; c/ Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + X. f! V0 }% v$ z
  93.         printf("\nPlease input new STBID: ");
    ' {+ o1 b9 V) ~
  94.         scanf("%s", stbid);
    6 _( @  h) G6 F+ E  b( p. `# r$ ?" G7 Q
  95.         if (strlen(stbid) != 18) {
    & G% H& w4 H* Q( M. m& U
  96.                 printf("Invalid stbid\n");
    ; w& w- u0 @' U) B/ ~, X
  97.                 return 1;
    - ?9 @$ o( w) U8 Y
  98.         }
    9 K& d2 e2 s. s+ c5 J# M
  99.         printf("\nNew parameters: \n");- L$ n3 q1 S+ k+ {7 S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : S8 E) A, J. s# Z
  101.         printf("  STBID: %s\n", stbid);
    ! y7 b& t1 L5 {! q8 @' B5 z

  102. : N: `( ~0 [4 b5 p9 s! `6 ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");) }5 V" P: H( B3 u/ h& e3 S
  104.         for (;;) {
    - i5 y6 l9 f! T
  105.                 c = getchar();
    9 C( @8 `4 v& C0 j  s$ h; h; `9 U
  106.                 if (c == 'y' || c == 'Y')8 e9 I- \% f. P
  107.                         break;
    $ E- V0 t7 }7 i) s9 j
  108.                 if (c == 'n' || c == 'N') {
    6 ]/ h2 {' O' C
  109.                         printf("\nAborted.\n");
    ! T& g3 X. w6 L- Z: h9 s: R
  110.                         return 1;
    ! Z% H$ J4 Z. o3 S0 s' @
  111.                 }
    ; s( B$ s+ D4 C) O2 w- R5 t6 L
  112.         }
    . E. z- m& c5 K/ K1 L; F
  113.         if (writeparam(mac, stbid) == 0)
    * j" I4 S9 ~8 W/ S" t$ H3 u
  114.                 printf("Parameters changed.\n");# e5 d0 A: M3 S6 b% z- b* H
  115. 7 T, s8 g& M. `$ {( @
  116.         return 0;) f- `2 B: P* n5 i! z: A
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 | 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 | 显示全部楼层
0522 发表于 2012-3-23 18:24
. P* H+ l0 p4 y8 c: J在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! k. _! A5 P8 ?% H. x  L$ e! V, Q你用的编译命令行格式是什么?- p  W* r- {5 P% u9 z8 c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2025-12-9 06:21 , Processed in 0.022426 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表