查看: 16953|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 I. Z) E! e! \6 ^* C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* P( M# m4 q# ~. {+ c9 h
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 m( T# L( |: Q2 ^8 J" D
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 _0 t3 p. B$ a9 c* _: Y3 D2 L1 K& J% q

/ Q) L1 I7 J8 O$ ~8 M- p6 ^+ J不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! b2 G: W$ Q* x3 O, f/ |
! N! D+ g' t  ]' y补充内容 (2012-3-8 09:42):% A+ e" _! j( d' {2 C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 j& B3 U' Y/ {9 O+ Z1 z! i
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 L$ X( J! Y$ n, b  F) r* |  o+ l

0 C, g, B/ q7 a. s3 M% u2 q# @himr <address> <value>. sample: himr 0x80040000 0x0( `9 i: j* f; x4 h$ D+ ~
8 }9 k) G) A& G
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& @+ A+ e, Q% K5 Zhimr 0x80040000 0x00
8 r. F, E% e8 I8 H( D  h, Ihimr 0x80040001 0x11
6 R: L5 j/ k# j" y0 p0 Ahimr 0x80040002 0x22( }4 {. P' E: g: q# Q
himr 0x80040003 0x33
/ ^" U% O  l, chimr 0x80040004 0x440 U9 K* z1 Y8 i$ C7 h( U
himr 0x80040005 0x55; J/ S2 X, `' _/ j: f: U
9 ]+ b/ x; C& n) G% N% r  U) a
SN也是类似。
) I+ v- o6 A+ _" e: N1 L( v6 o9 c$ ~. j& j4 h6 Z/ o
现在主要是,谁告诉我们MAC和SN的地址?
$ _4 g& |5 Q2 o3 c$ _
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& h% J& N7 x! Q$ v: S6 F' D' j一直想找到运程修改MAC和SN的办法,苦于无解啊

! e- G) g5 P/ c" _2 ~& a3 V源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' D: u/ u/ p) g2 D, C/ J; P2 m0 [4 j$ Z, \3 c
修改的代码早有了。到今天不会编译。
) k- c0 a, v; d: u# e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' e# K9 x1 L0 Q2 C0 Y8 Z3 `
  2. #include <malloc.h>
    , Z5 [8 q8 K: U- L' M: P+ f% F) _
  3. #include <sys/types.h>$ ]1 m: o  r  M% l- y& M
  4. #include <sys/stat.h>; W3 R& S) n7 d+ i
  5. #include <sys/ioctl.h>
    ) U: H4 A1 H1 o( i
  6. #include <stdio.h>
    ' ^1 l, B% v& f1 K
  7. #include <string.h>6 X0 _) Y1 \& S, c
  8. 7 Y/ T1 C" ]- a7 w' t% _8 g+ j" d
  9. typedef struct {
    2 K! D2 t) a6 D$ w9 q" ]
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 ?# w: v" y% R1 r( l% O* y
  11.         unsigned int        sub_addr_count;, O: l5 k8 h7 X0 r5 b  U
  12.         unsigned char*        e2prom_cmd_data;
    $ D2 m3 [" c( p& h/ h2 Y7 X
  13.         unsigned int        data_count;
    & m. i* Z! k7 d" S1 ^
  14. } e2prom_s_cmd;) X$ i8 F# o4 [) t
  15. 7 x  A" d/ k/ n  M' o8 `/ N8 r5 I  f6 M
  16. #define E2PROM_CMD_READ 1
    4 A; Q1 X& e0 @0 ]
  17. #define E2PROM_CMD_WRITE 2
    1 p4 U6 K7 O& p% I- E, d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# e5 _. H  O$ X" H+ `" P9 I# V3 \* \
  19. - ]: I; I' A4 o  \: M+ @& d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 N7 R$ j6 X/ I/ O9 c/ y% F
  21. {1 @, k. O# p: J1 c' i! S' h
  22.         int fd, ret;
    1 \8 [  i  y6 b9 `
  23.         e2prom_s_cmd arg;7 s4 {. N! _8 W
  24.         unsigned char buf[0x18];
    - s6 ~0 Y7 O1 F2 O
  25. & }5 W; j& f; _' o3 X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! W) B# F2 [, @: r
  27.         if (fd  < 0) {" {+ m5 m4 @& d  \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 Y$ Y0 E7 j+ D* f
  29.                 return -1;% s2 r8 R% N1 ]5 V
  30.         }
    $ j, }  B0 y: S8 R- B
  31.         arg.sub_addr_count      = 2;
    : @1 |) }1 a* n& E+ `8 W( G
  32.         arg.data_count          = 0x18;
    5 e/ Q5 _9 e" o$ d& }' K
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) G* i- X5 L# \4 x# E
  34.         arg.e2prom_cmd_data     = buf;
    6 Y* N+ k1 s% N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 X/ V  z" v, x( K8 j
  36.         if (ret != 0) {: k2 D, r' E- W6 Q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 S& e( d/ `/ Z! d
  38.                 return -1;  O' `# h7 T1 [% ^# U
  39.         }# M9 V8 ~' b5 K9 ]% v4 G
  40.         memcpy(mac, buf, 6);" ^4 P2 P1 k& ?+ ^
  41.         memcpy(stbid, &buf[6], 18);4 {+ {/ j! ~- F) C4 k# S9 A! |. T
  42.         stbid[18] = '\0';
    1 a2 k  R5 _: M9 U
  43.   B4 {3 [6 P0 T2 K
  44.         return 0;
    9 \1 c+ X% M4 E, G4 R3 F
  45. }' V: o8 f) ^8 l' B

  46. 6 a- Y$ F9 w6 V7 O
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! e/ g  k( D/ l( C" ~3 g
  48. {& d/ R+ Q! N9 `
  49.         int fd, ret;
    : X" z& l* `9 k
  50.         e2prom_s_cmd arg;
    " q( s, H& ^- a' Z, _, r8 Z9 o
  51.         unsigned char buf[0x18];  L9 J) [( L$ M4 u
  52.   b, A& L+ i9 |. s
  53.         memcpy(buf, mac, 6);: ~. h! r1 P3 z! Z0 C4 C2 z
  54.         memcpy(&buf[6], stbid, 18);
      x6 J! \! R, |4 s5 R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . p4 C( f* e. V, M! ]5 B
  56.         if (fd  < 0) {4 [7 n2 V" g8 f) i! ?# ?" h- i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 Y2 O$ M4 b9 r9 m- K+ x
  58.                 return -1;
    1 n% c% O; q3 ^( b
  59.         }
    1 {# K# x* e$ P
  60.         arg.sub_addr_count      = 2;1 p& f& w) D% c; K( p9 V
  61.         arg.data_count          = 0x18;! [* B& X9 u  Q* t: J# x
  62.         arg.e2prom_cmd_sub_addr = 0x290;) V: I; Q' j" l1 ^, m  h6 R% `
  63.         arg.e2prom_cmd_data     = buf;
    $ Q6 p- j2 S6 a: a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 _( U+ R& @( y$ O
  65.         if (ret != 0) {
    " Q# U% @4 E/ @
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- O6 i( v# j  Q- l
  67.                 return -1;: {0 B& c+ I- t
  68.         }
    2 U+ v4 C1 }  J

  69. ( @+ {/ l# k/ a) p. g
  70.         return 0;1 M% G6 w4 C+ n- N, Z8 r
  71. }
    . r( V- }( ]8 V& |* l

  72. ; v! m1 W" ]/ Z# d
  73. int main()$ g. A: B! v' o/ K
  74. {
      D# f5 e8 A$ W2 ~3 L
  75.         char c;
    / b' ~2 g9 g$ Q5 ?5 F; q
  76.         int i, macs[6];
    1 B3 z8 L0 t; e3 K9 c
  77.         unsigned char mac[6];" k0 A7 Y3 m* X. u4 f) X
  78.         unsigned char stbid[256];9 ]2 ?# U' R1 U  ?& G

  79. / s0 z8 m4 ]4 k
  80.         if (readparam(mac, stbid) < 0)
      |' K. N+ ]" }. m0 H, I# ~
  81.                 return 1;
    1 `* z- m) }% `& r5 h' I4 c4 h

  82. & w( G7 c7 w' [: d2 Q  O$ W
  83.         printf("Current parameters: \n");
    4 i) S4 W7 n. O  ?. G# }- Q" A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. z, r: m2 ^" |5 A
  85.         printf("  STBID: %s\n", stbid);
    " c& t! k) e2 D
  86.        
    1 H9 g9 Y- g$ e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( m" c/ W- Z! t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - V1 V' z! N1 k
  89.                 printf("Input MAC error\n");
    - v& W3 R3 f9 d8 l9 j1 ~7 I2 {: D- D
  90.                 return 1;5 L1 ]+ H, m: J1 O1 |
  91.         }
    2 o$ O2 V/ ^1 s- X  {& C$ B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    : p" ^: u& y2 ?% s7 Z" W5 n4 o. _  o
  93.         printf("\nPlease input new STBID: ");' J+ j3 b+ d, N
  94.         scanf("%s", stbid);3 V! {3 ^  t5 m
  95.         if (strlen(stbid) != 18) {
    + [' z& S( C# p' }' d
  96.                 printf("Invalid stbid\n");  ?: X' G: K% _& V
  97.                 return 1;8 i4 g7 d0 p% W# ]- Q
  98.         }
    + T' M3 w7 v: q: H- g/ Y0 Y" u% P! d
  99.         printf("\nNew parameters: \n");
    8 h. n' G  f) a: }+ y. G6 V- y. j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - c" }" _5 r: [& p0 H7 }! R# p& x
  101.         printf("  STBID: %s\n", stbid);
    0 i! |! Q6 m, {
  102. ! ?6 c: x4 H3 i$ X9 A6 D* H5 w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 {& E7 @9 E4 {* u7 [
  104.         for (;;) {
    * S  W/ H% Y8 D! \' b5 o' \
  105.                 c = getchar();# ?1 d2 W0 v7 o  A4 W8 i$ S0 n
  106.                 if (c == 'y' || c == 'Y')8 x- W9 a* o  q% {, _4 E
  107.                         break;) h' F- e9 A; x( X; y" d
  108.                 if (c == 'n' || c == 'N') {
    , l3 m- P9 P. a: d4 W
  109.                         printf("\nAborted.\n");2 Z0 @3 |( L# [# a4 ~
  110.                         return 1;
    3 Q$ {6 Q* N: p7 L% p
  111.                 }. F8 x6 ~8 k6 `! A" t1 ?
  112.         }5 @2 e/ R) f& F% P
  113.         if (writeparam(mac, stbid) == 0)
    6 Y8 ]* i$ t2 V3 G& i8 I/ b# j
  114.                 printf("Parameters changed.\n");
    1 T) W( q* u* O4 l: z

  115. % c3 m' Q% ]3 |
  116.         return 0;
    " O4 t+ w% d& m4 C, N/ k% g
  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 + p2 H$ F( {  q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

) h$ w9 G- Q, S# [- Y% A; O你用的编译命令行格式是什么?
, h! ]# o2 @5 N& M9 ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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