查看: 16981|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 e8 ^9 \+ k' ^$ \6 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 }/ H0 K- Z/ {+ `3 ^% g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* ?8 @, J2 z! S3 R; G
usage: himr <address> <value>. sample: himr 0x80040000 0x07 z" |0 W' h, m
' r# S+ J$ B0 K9 ~

4 g! n; i4 J3 ~" v8 T8 P3 C不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ J" I, U3 k/ f! e- e

; C$ j7 ^! c" |补充内容 (2012-3-8 09:42):
5 A, P: ^+ t" x# c. P- U' h- ^3 ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# z* e' W1 ^& B- }& L% E这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
2 l( F7 M( l# p7 y/ y4 J/ H5 E: O8 V8 K% M( l6 T% d  b- N7 l9 G+ C; z# t
himr <address> <value>. sample: himr 0x80040000 0x0
) r, o+ O/ q( T8 ^+ F- ?' ^9 b. ?- k4 [- f
1 I2 Y. ]8 a  V+ e& v例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 ]7 Y0 @: _4 x8 y' p! f; shimr 0x80040000 0x007 q7 T1 }' S" ?
himr 0x80040001 0x11
0 d. ~% f* p. ~6 q! Ahimr 0x80040002 0x22
7 F) N- l6 Y/ G( M: ihimr 0x80040003 0x33# M1 }) G- y+ g. s5 b5 h' A
himr 0x80040004 0x44; b6 w$ q; l2 U& L9 o
himr 0x80040005 0x55
! d4 c/ B9 p; t& ]8 W# M4 u, V# K* }: Q0 u
SN也是类似。
& g" v( r* u) j  S+ Z8 E- F+ c) s7 k! c! O
现在主要是,谁告诉我们MAC和SN的地址?$ b, n8 }1 E8 e' W( o  T0 W
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 [4 k8 X( K# r8 v  n' x3 c# t
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 L) C, I2 b& E6 B0 \% D/ i, Z4 s" l% T源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) a% [) }9 g2 `  p; h8 R  R: g
$ a* e; O  E& i+ P( U# o
修改的代码早有了。到今天不会编译。; B$ v: s1 ]- `9 ~3 F; V! ?
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - M- e$ l/ B+ h8 _3 e! V
  2. #include <malloc.h>
    & q" N6 L6 |/ y5 a) [: r
  3. #include <sys/types.h>  _+ V5 X: @, p4 G
  4. #include <sys/stat.h>5 v3 @$ J) y' f0 q  @  i3 m
  5. #include <sys/ioctl.h>: m; Z6 o. K. g/ W7 E
  6. #include <stdio.h>8 I$ e: W" `% i8 O& }
  7. #include <string.h>5 G) @$ ?  v7 h
  8. / i" Y4 J( K% V& t: A
  9. typedef struct {; i8 n6 n4 j0 T7 M. P% @
  10.         unsigned int        e2prom_cmd_sub_addr;: N% `9 o, Y! G! i* z
  11.         unsigned int        sub_addr_count;
    ' E: M/ v+ B8 `9 g& l
  12.         unsigned char*        e2prom_cmd_data;  i2 F# `0 ]) l6 L9 P0 T8 D9 y
  13.         unsigned int        data_count;& a# t5 x, f1 y& v* N' |/ z/ p/ ]
  14. } e2prom_s_cmd;
    1 V( J: G& Q9 K0 }3 ?( q6 ]

  15. : ]0 X1 X) `# w6 q2 k
  16. #define E2PROM_CMD_READ 14 q  A& ]$ G2 A. a8 T" U6 o8 Q: g
  17. #define E2PROM_CMD_WRITE 2
    + F2 }+ l: n% E" G4 O! I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . y, E6 L. ^' s  I& d6 y
  19. 8 d2 ]% L  s' y$ q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) X2 r% K# j- S: Z+ i+ B
  21. {( b( H4 V, T! o/ x& ?
  22.         int fd, ret;
    # w/ @7 l( B8 l5 h" Y3 h5 s
  23.         e2prom_s_cmd arg;
      S( P% @6 V% ^. m: v8 l
  24.         unsigned char buf[0x18];
    ; d& w, J0 T! B/ j5 [! [0 J
  25. + ]& l, h* u0 L  B; M* j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . ^- O5 v/ D8 v
  27.         if (fd  < 0) {9 g7 m( @- }) G0 Y; e8 V5 c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, o& C- f$ W, j  u9 l7 u3 D
  29.                 return -1;
    ( N! J  S( L, T# p  P. I: k
  30.         }
    6 G# o! j% k1 e# n' t; ?/ a
  31.         arg.sub_addr_count      = 2;
      S. h  E1 I" Y7 J
  32.         arg.data_count          = 0x18;! B# q  }, d% S+ K6 Y& V% K
  33.         arg.e2prom_cmd_sub_addr = 0x290;% f6 e! Y( f( ]3 P) N. W% \8 h: f
  34.         arg.e2prom_cmd_data     = buf;
    : a! M+ T: q  [- P$ Z& `8 h2 ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! p& _. g1 ]; U- {
  36.         if (ret != 0) {
    ' [/ B, H# Z$ Q( Y/ d) b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # `  I* |! g/ p+ Q3 m' _& s7 b4 r
  38.                 return -1;" k6 U1 \% O. J2 C
  39.         }
      t1 R6 S# L' I, r
  40.         memcpy(mac, buf, 6);
    , v+ d5 [" k8 w# T* x$ U
  41.         memcpy(stbid, &buf[6], 18);0 [$ R5 X, R% n' Z+ `
  42.         stbid[18] = '\0';7 |( z( F! W$ H( X, |5 Y
  43. ! a. b* d) Y, s3 P; }4 V( P
  44.         return 0;
    6 H2 }" }! I% k$ `  }" W; Z/ R8 d
  45. }
    6 I7 ^4 c- k" x/ v- o; G/ p
  46. 2 m  L9 e  @; n) A4 M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 E8 D* U  |) E6 J2 ~  p
  48. {, w8 a. m+ M7 X! k
  49.         int fd, ret;
    + ?! J  c$ L! u: j
  50.         e2prom_s_cmd arg;
    ) S! e2 F9 M5 I
  51.         unsigned char buf[0x18];5 c, C! V  I& s9 [1 ?7 N
  52. $ r- {2 [3 D6 J  i/ R
  53.         memcpy(buf, mac, 6);
    0 J+ p" ~% N4 l- m1 e
  54.         memcpy(&buf[6], stbid, 18);3 S& _7 j! {' Y- z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " u0 d* `; [, p) R- o# u/ w
  56.         if (fd  < 0) {+ N& s6 n( M6 `! v* F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      m. q' m  q! O& V& a6 {) X
  58.                 return -1;6 {% g  x$ F9 S7 G
  59.         }
    : V2 m% l6 C' j' F( @' c% P; m$ T
  60.         arg.sub_addr_count      = 2;
    2 a% J: j! {7 K: d- r- @
  61.         arg.data_count          = 0x18;0 H$ k) b  x% y; n9 v+ @! c* ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;  B! g. Y) z5 ?
  63.         arg.e2prom_cmd_data     = buf;( I  y3 A8 ?8 n' ?7 U7 m
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 A- j5 x2 H% z' S+ Z
  65.         if (ret != 0) {
    0 n0 ?# J/ A* T! a- i- i' m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ S* u( b! x$ P7 l9 k( F8 M% |
  67.                 return -1;
    1 @* L1 X  Z- {6 k
  68.         }
    1 _2 v) Q  j6 P8 U/ R/ U# Q
  69. $ p8 ^7 N( q5 p  Y
  70.         return 0;
    % I. |' k2 s4 [
  71. }
    % T: Z3 s- I4 F$ O+ F
  72. 5 p1 J: O- a; P6 T' p0 h# C
  73. int main(); z/ Z6 P- W3 t3 R. \6 r
  74. {
    4 ^6 L' Z; |. X5 Q7 m4 R5 k1 s
  75.         char c;
    ( t/ Q% f2 q8 Y4 w  b$ P% D& {
  76.         int i, macs[6];. Z* a5 \8 i5 d  U" @
  77.         unsigned char mac[6];
    5 @9 c4 X# O& y& L
  78.         unsigned char stbid[256];
    3 x; c: P8 A. \6 E) F. f
  79. # S" _% s& ?0 S# }7 `
  80.         if (readparam(mac, stbid) < 0)! X0 {7 N: q! W% v% n
  81.                 return 1;; [3 L) j- A0 W/ n; t, H
  82. , q$ s+ w. p2 `( ^* c1 a
  83.         printf("Current parameters: \n");  A- T/ n7 D/ \! K+ v' s1 O! U8 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; o1 `# r* N0 j# o
  85.         printf("  STBID: %s\n", stbid);3 R4 p- o! S3 x: s
  86.         9 J& M, ~6 \) p1 E3 i) R+ s1 W
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . s2 I# L  n) f
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 Z2 d9 i2 R7 a* j( U8 ]
  89.                 printf("Input MAC error\n");# c7 |  W* S6 @( v2 G+ x
  90.                 return 1;& }% ^$ X4 m0 L( O, x
  91.         }3 ]1 Y) _: b" K" l6 }; _) h% f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) c0 ?5 @6 \' }- S+ f( K" m. ~
  93.         printf("\nPlease input new STBID: ");4 G% f6 B8 T/ y! Z$ Q- @9 T. x
  94.         scanf("%s", stbid);% F# T& I0 p* k" \: f, |
  95.         if (strlen(stbid) != 18) {
      p7 u  L$ H, H; ?; X9 v7 t
  96.                 printf("Invalid stbid\n");7 s- r5 J3 s, T) W% e2 L' `0 m) @0 k
  97.                 return 1;
    * l' |' @# s5 n& j, h7 ?8 `
  98.         }
    : ]6 s- C) K1 A1 x) E4 c0 }) n
  99.         printf("\nNew parameters: \n");
    - J# W1 ?; }# C: \' K& G0 D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( R5 F; p  r0 I6 ^$ D2 l2 W
  101.         printf("  STBID: %s\n", stbid);
    5 u$ b5 {  k5 v1 \  _8 y4 P. `

  102. 4 Z' J1 @" j$ x; W
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 R5 T# @( s! N- h$ ~
  104.         for (;;) {  x5 W# _1 D5 Z) C' H
  105.                 c = getchar();
    : [( B( f) r! P/ `4 U& N
  106.                 if (c == 'y' || c == 'Y')- |, |+ W% l, |# E1 n# C2 ~  t. |7 ?
  107.                         break;
    / h( K4 C( Q( d4 v. v  A# r* y% m
  108.                 if (c == 'n' || c == 'N') {
    6 `$ L+ S7 ?! K0 U' }# V
  109.                         printf("\nAborted.\n");
    ' E' E/ ~9 K+ z
  110.                         return 1;
    & ~' y4 l8 \( {( d: C9 V
  111.                 }/ F" J' K, k# ^  s6 A
  112.         }
    5 I2 m3 ^5 A* U7 ?" o/ V
  113.         if (writeparam(mac, stbid) == 0) : G. N" q( |4 B: ?7 f& C
  114.                 printf("Parameters changed.\n");
    3 w+ z3 N4 Q; G0 ^

  115. 9 g7 A8 I) A4 H7 b3 R7 U: o
  116.         return 0;
    $ T7 W  Y, L% |  ?  ~+ V( }
  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
1 Z5 A4 d' R, P( `/ w2 u在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
2 H5 A6 k( X" d1 e
你用的编译命令行格式是什么?/ P/ r4 h  D$ \
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部