查看: 16708|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 T4 q7 ]: ?( e+ A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) Q4 q7 `7 y/ l. f1 a1 a) |9 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' P1 p% x9 w& X8 J! H/ C* F* e
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) x: ~1 A5 z: g" u% K% _0 u0 ?& F( \' T  w8 O  ^- V7 R, w
, R: W9 |& B# z1 h4 J5 B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& D" D" O9 G6 b: [8 }# }/ \) m# j! }: q% I) u
补充内容 (2012-3-8 09:42):  Q+ _& Z; c; ~7 G
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! S4 N$ |& u% s
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& H3 z, z! H# K2 s! w: e
' T$ ?  o4 d! L7 }  n/ s
himr <address> <value>. sample: himr 0x80040000 0x0. A% K$ h9 C/ g! O' T/ a0 z6 L

6 ?$ P! S* q  F  H( E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: R& i, c! D+ E) d1 J
himr 0x80040000 0x00
3 L5 j# V6 T- o# T2 Vhimr 0x80040001 0x11
: H; e  E! f, D8 V" thimr 0x80040002 0x22
. t5 J0 Y2 u; D, Uhimr 0x80040003 0x33# W' \/ M8 C/ J7 b# Z
himr 0x80040004 0x44* b/ Z) r) C8 U0 a9 J
himr 0x80040005 0x55
6 M; v7 U! P/ i' a8 f  i) L# x& t# ^5 l" \
SN也是类似。
- Y! u( S9 _3 \* p4 Y6 @
  k) _* j+ o2 ]% X现在主要是,谁告诉我们MAC和SN的地址?2 V  i& h  ~' T6 ~* P1 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 v- @% |% ?2 J, }
一直想找到运程修改MAC和SN的办法,苦于无解啊

% M5 v& n) `% b  Z9 Z# i1 Z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 R8 P' s! q6 {+ U
. u, y( i+ n! g$ \修改的代码早有了。到今天不会编译。5 b* {& x! I. S! C( s; c1 S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) h; N$ x5 |& E* ~* l
  2. #include <malloc.h>! m! J6 Y: e$ z: M" D/ r: t
  3. #include <sys/types.h>+ A1 M5 l# }; B
  4. #include <sys/stat.h>
    + g. H! O3 V) Z6 o& k
  5. #include <sys/ioctl.h>
    & P! w, q/ R  o- x2 B+ L; _
  6. #include <stdio.h>
    . J' R0 ^" r" e4 t! \
  7. #include <string.h>
    0 v' {- Y8 E1 j8 H% F
  8. ' C) P3 x. R& Z, g; ?7 `2 u
  9. typedef struct {
    * v+ M) l6 j* _/ d( b2 |
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 q8 c1 ^: o2 @/ q4 Y0 w) l
  11.         unsigned int        sub_addr_count;
    $ E3 [+ G! t& R: O$ A7 ]8 ^: V% X
  12.         unsigned char*        e2prom_cmd_data;
    6 g, r3 H+ x! j% x* _8 R3 i
  13.         unsigned int        data_count;# q% {' V9 D9 \6 M" u
  14. } e2prom_s_cmd;
    : ~5 x! R' h  ]- E( x

  15. + V3 `- S. c* ?- j' b4 {4 N4 E) J3 I
  16. #define E2PROM_CMD_READ 1
    * }& @& I* v8 b: A2 V/ ~' q
  17. #define E2PROM_CMD_WRITE 26 [* Y6 ^2 R* A  X9 v. M2 [1 b% {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , S  M) Y5 n/ Y' f5 {9 N* v1 ]
  19. $ @& Q2 |, v; C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % L; ]# \, V9 u) r& M! u" l
  21. {
    ' l6 v. W! n7 v( x5 U. k
  22.         int fd, ret;  l- l7 f- q+ _3 S1 e
  23.         e2prom_s_cmd arg;
    ( f% O4 m6 ^4 ~1 z& l0 `& ^7 B" O
  24.         unsigned char buf[0x18];: y1 s- y0 e' o( r

  25. 2 s) |: j! w6 @# K! _( v8 v
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# ^1 q5 u* ]& k0 G& l# J5 ^
  27.         if (fd  < 0) {
    5 \0 M$ S$ ]; d" [5 _9 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. V* H; g# Q& Y4 ?( c
  29.                 return -1;. S1 ~/ W( c  n% F
  30.         }
    ( j' F% y# N' T9 ~' o* O- ?+ g
  31.         arg.sub_addr_count      = 2;
    . M; j# f: P$ s6 h6 R
  32.         arg.data_count          = 0x18;
    6 a5 D% g+ @( e8 ?) B
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ E5 [* V9 p9 _8 p& a7 }1 [6 O( V' a
  34.         arg.e2prom_cmd_data     = buf;
    ' n1 C3 c0 Y, J/ X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 c; N; B8 V. q2 s  K
  36.         if (ret != 0) {1 a0 z2 R8 v. S/ d7 |! ]& Y4 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    6 N$ y$ I9 c& f
  38.                 return -1;# S( X- Y' {' K+ s; h* X
  39.         }+ `% Q3 Q8 o4 [( N
  40.         memcpy(mac, buf, 6);" C. `4 F0 R8 G8 u( o
  41.         memcpy(stbid, &buf[6], 18);
    7 \# t) {6 c3 F. [% U$ I5 P
  42.         stbid[18] = '\0';
    ; R" s% G! a+ V! B0 _

  43. % J6 v8 L  g3 r! M& u* U' r( `: c  N
  44.         return 0;  ~+ s: G& z, U) q$ [0 L
  45. }3 s$ i( F! d2 ]& K( m; }

  46. 1 t+ f- j; v" b: V/ z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ d* v8 M' l& P' j; h! R1 n2 ~
  48. {8 @9 a  r2 x4 H" n; j5 c, r% \/ e
  49.         int fd, ret;. C. l$ Q3 I: I9 f2 H
  50.         e2prom_s_cmd arg;
    6 z+ ?5 S8 \5 Y! w
  51.         unsigned char buf[0x18];' B0 {) B1 h& \8 ^# X1 R

  52. : T3 v& O" Z# d3 H8 g
  53.         memcpy(buf, mac, 6);  ^% Q8 x/ h% k! @
  54.         memcpy(&buf[6], stbid, 18);) y& t9 Q9 f3 B' x1 I( ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . s& g( w$ Z0 u! `
  56.         if (fd  < 0) {
    5 H" Y5 n8 j, S1 ^( c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' e3 S0 C' w! U
  58.                 return -1;
    9 h# i4 P; Z! `" d  x
  59.         }& {4 ?( l3 B( Q7 R. Q
  60.         arg.sub_addr_count      = 2;
    * f- y. ]0 s; a# ~9 y) U5 H, e
  61.         arg.data_count          = 0x18;
    ' B) Z6 i! f' c4 C( E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / M/ i+ {9 R* h9 S, B$ u7 B
  63.         arg.e2prom_cmd_data     = buf;
    ; E& f) l9 @6 W: d+ n# r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 c. L& |( }8 |) y: C8 p
  65.         if (ret != 0) {2 A# R! @( e: J* m6 p% w7 c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 S' c. _+ c7 I, a3 J. N
  67.                 return -1;) L" y2 e6 g3 F2 J7 O
  68.         }
    % }/ m1 [' a6 H& x( i& [

  69. ; h7 ?* N/ G& I8 m4 {& Q
  70.         return 0;. d7 A3 u4 f4 z" W. ?: U9 p5 S
  71. }, C9 s9 m, s8 M8 D# O2 h

  72. 4 m! a' H$ M7 R7 p: i  p( h! \) m2 ]
  73. int main()
    - D$ j0 o0 X, E
  74. {
    ; ^. y5 k: A0 ]' b6 E2 Y
  75.         char c;
    - T  I' r6 F' e) T
  76.         int i, macs[6];& ]- A- n% ~6 U/ ~2 a
  77.         unsigned char mac[6];+ Q9 v& b2 G+ S& O
  78.         unsigned char stbid[256];
    ( E+ U6 m2 x7 B

  79. 1 z. I0 K5 a* N; ^
  80.         if (readparam(mac, stbid) < 0)2 X2 l/ c. \' Y" }; |' r
  81.                 return 1;1 g0 v7 d3 m& v1 B) Z% E9 C
  82. ( W* x! k3 ]$ `5 k, g" [
  83.         printf("Current parameters: \n");
    , G% W: ~5 N# F' `# N2 y- _  ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! I! h7 V# Z5 z+ U+ C2 t
  85.         printf("  STBID: %s\n", stbid);
    # N; f, t& l; |; b9 {( E$ i
  86.        
    ; c# K5 f( o, Q: V/ |/ a8 m) v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% y3 B, m9 `2 E# E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! {0 G- c& E3 q* t" N
  89.                 printf("Input MAC error\n");
    % K& I2 Y1 W3 A% d# o) L2 i9 `. R4 q
  90.                 return 1;
    5 O8 I) |& z! m+ c1 A& d! p
  91.         }
    3 h! z0 I1 b: h5 C4 f; z  R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # F! n7 W) e  W" q4 j4 t, U
  93.         printf("\nPlease input new STBID: ");
      ~3 P: e( A) m/ C  f
  94.         scanf("%s", stbid);
    * }! Z0 J- @. X/ f3 L1 l. S
  95.         if (strlen(stbid) != 18) {2 V5 ^9 H, G- _, ^( V+ ?9 D& S* C
  96.                 printf("Invalid stbid\n");
    / G7 C/ D1 U  q
  97.                 return 1;; d/ `: X' m  L' P% I, s* |
  98.         }
    7 R3 D: h: S; y+ [
  99.         printf("\nNew parameters: \n");
    8 t7 q% i3 T2 \* [0 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: i# D9 B6 Q- A  s, _& w
  101.         printf("  STBID: %s\n", stbid);. r9 {9 C) B3 t! k9 Q4 Q

  102. & ^/ T6 {( Y. T! \
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . `3 ]4 J: E- Q7 ~! z' L& D% r
  104.         for (;;) {
    & ]8 V7 r' r7 r- m+ }. m$ I8 j
  105.                 c = getchar();6 z; ~  H0 O% T" ~- u  Y
  106.                 if (c == 'y' || c == 'Y')
    / w4 l4 R" X- X
  107.                         break;! m4 O0 @: v1 i4 I7 W3 W; B* p
  108.                 if (c == 'n' || c == 'N') {# P  V- Y4 y. F: P, ~
  109.                         printf("\nAborted.\n");* G  i9 X/ T- |+ W( E. H  j' m+ Q
  110.                         return 1;
    " b8 y* V; W& @! d9 G/ P* J- ]: U0 ^
  111.                 }
    5 \* a7 B& j* c4 X( V7 x0 `
  112.         }
    4 u' l" s. c# Q! u
  113.         if (writeparam(mac, stbid) == 0)
    ( d) _( ~& K' U3 q# R/ m1 e
  114.                 printf("Parameters changed.\n");
    * [7 s- M) B& ?" z- }, q2 b
  115. + F% P2 @  @7 U, }, \6 a
  116.         return 0;* R6 T2 j2 H/ N$ X
  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
; ]% {2 f+ s# y7 W, N. _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  C# b4 t2 R. \% @3 `) Q
你用的编译命令行格式是什么?
7 T( w. d) b+ h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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