查看: 16687|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , Y3 \! p; U2 m$ x$ L5 {5 {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 s/ U, q3 F3 f: J, ]2 M: D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( A" R  ^0 @0 O7 {! G$ Z* ^9 I
usage: himr <address> <value>. sample: himr 0x80040000 0x0
" J4 H+ y2 @- Q
9 ^5 [. u, T# F; K
3 Y8 {7 V: ?% V( A6 @  R6 A不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! N2 P1 H2 a+ L% b  e1 p) M

, A4 n6 Z/ W) d- w, t" w( X. l2 [' _补充内容 (2012-3-8 09:42):6 {2 G# |3 i% [
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
6 J6 N# z/ z' d* `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# u7 Y+ i! z& U7 N; M; W( @' N
  i: A8 |: C% l6 }1 @4 V/ Fhimr <address> <value>. sample: himr 0x80040000 0x0/ @7 p. D3 M( i2 v; y0 V

6 a. N( L: ?" Q; {& p$ y# a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 a. }! H3 s- U' }
himr 0x80040000 0x00
8 p  g: N9 j1 K+ u+ V0 k* T* xhimr 0x80040001 0x11% _, l$ B0 ~6 f, w7 g4 b7 G
himr 0x80040002 0x22
; Z/ x5 s7 J) z* b- y7 vhimr 0x80040003 0x33
, K/ C* J" H2 W$ _himr 0x80040004 0x44
4 k) i" B& T6 Bhimr 0x80040005 0x554 j& p' R3 s( L0 C: Q( f
3 q5 y  t; ]$ M8 ~. ~( O
SN也是类似。
8 p& U3 ^- w- Q7 f* o, T' U, y5 }/ y% g7 P% r
现在主要是,谁告诉我们MAC和SN的地址?5 s! V0 Y" i  b$ f6 S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 w; n# D7 s- A. R" r2 J; G  M一直想找到运程修改MAC和SN的办法,苦于无解啊

2 Z0 a+ e/ Q2 J1 P) B" y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 [+ @/ t% [& j6 E5 w5 T# c  b

6 v  s) z) a5 }修改的代码早有了。到今天不会编译。5 {" I% _& u2 h  x0 _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + G- g4 i: B* m& W% |
  2. #include <malloc.h>
    ! ]! E4 @& Q. u8 z- b
  3. #include <sys/types.h>
    , r3 r% X, F/ B/ g
  4. #include <sys/stat.h>
    / d- w+ Z; w: Z" T
  5. #include <sys/ioctl.h>9 S6 @, G3 l0 Q8 w
  6. #include <stdio.h>/ v& Y. c! U6 z: j  y0 z. p& y
  7. #include <string.h>
    # M+ x- ?& W. K

  8. % R" T1 F- t2 j5 M+ m  X9 R
  9. typedef struct {
    7 b4 j6 d4 u/ |
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; C, v" t! F) d5 |- Y3 @
  11.         unsigned int        sub_addr_count;& g! I; w4 m; ]
  12.         unsigned char*        e2prom_cmd_data;
    - ]- g% x& _& L$ k" o
  13.         unsigned int        data_count;
    0 s7 y+ R2 d7 n7 f; T
  14. } e2prom_s_cmd;/ W& w: V4 Q. F; B
  15. ( P$ l3 M7 {0 C' P9 B, y" ?0 V
  16. #define E2PROM_CMD_READ 1; R0 L/ u- {5 g1 J
  17. #define E2PROM_CMD_WRITE 2( [2 O9 s) d9 n7 b8 i% Y. t5 u, c. [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 Y& i; G1 B- p; u" ?

  19. 4 T* N' C2 l3 M' W' U8 F+ r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# ~# T7 @1 A8 v' U- f/ F
  21. {1 }# w" r$ F/ t  ]( v
  22.         int fd, ret;
    - [# a3 }8 p) ]) y! F% s  Y
  23.         e2prom_s_cmd arg;
    + e8 |: N8 m; v. ]$ H0 M; k
  24.         unsigned char buf[0x18];
    % b+ p3 E# X" a8 t6 P  y
  25. - @: l* [) \* B2 B5 G! m# c" }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' O' m/ P9 F& K) d& N  V  {
  27.         if (fd  < 0) {& \4 A2 ~0 f2 A( O* _" q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 @6 f1 S3 s$ j! u! O( [% M9 v% k
  29.                 return -1;
    : r) H# {/ n3 k& c' {: p# P
  30.         }
    ) X, ]# {& J9 m) J- F. S& @  n
  31.         arg.sub_addr_count      = 2;- k) U% i9 i' {8 P
  32.         arg.data_count          = 0x18;: r: Z0 X$ I, J6 e4 b
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 p3 C- i) x+ e" d5 Y* ?! F
  34.         arg.e2prom_cmd_data     = buf;
    # Q$ |4 _6 q/ C. M/ Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 O7 z4 E* l7 Q& g. y8 f  Q3 R
  36.         if (ret != 0) {
    1 c$ n- q* U! V# `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / }/ V- _0 b. d
  38.                 return -1;
    + H* f  Y9 W% m+ Z% L( Z: w+ [
  39.         }+ A/ [8 A+ K& G3 ^, }& n" y) {
  40.         memcpy(mac, buf, 6);
    9 s: Q- `" U+ a$ G/ s! \
  41.         memcpy(stbid, &buf[6], 18);
    4 `# D& h7 E! s/ |
  42.         stbid[18] = '\0';+ ?" j( \+ S, T/ a4 k4 W, X! t

  43. . w; D5 Y) K/ X
  44.         return 0;
    : ]! f' X# q+ W5 G% K/ B2 L
  45. }$ N! j: u+ c- F, B8 f
  46. 3 ^* m) K* z* ]; w2 N+ ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , U4 Q* q# ]7 n# {, u5 f
  48. {
    ( A6 ]0 T* L* t, N" p
  49.         int fd, ret;7 F8 }: i+ g( O; y4 z
  50.         e2prom_s_cmd arg;; b) H1 |# G$ {& t: [
  51.         unsigned char buf[0x18];
    6 m1 n: Q" w, C1 Y( a! o/ R
  52. . T, s, F1 g$ k& r0 |% B
  53.         memcpy(buf, mac, 6);' F' h/ @4 N- g2 A! q( E' n$ v' A
  54.         memcpy(&buf[6], stbid, 18);
    + V, H' W  `- }: I; W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . a$ L& z( V, O9 [
  56.         if (fd  < 0) {& f% m; W3 p; J8 `7 _  j
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ Z: j, V5 M9 h* n- X. ^& @
  58.                 return -1;
    6 J: @- F1 G$ J- `- A4 y9 \2 s
  59.         }
    + c; g0 t& r( z, w9 A- U
  60.         arg.sub_addr_count      = 2;) ^8 W0 }9 c0 W; V' B) {
  61.         arg.data_count          = 0x18;
    ) i4 O3 L/ r( c* K% Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ g3 ?0 P& B: S; i, A3 Q4 ?% X0 ]
  63.         arg.e2prom_cmd_data     = buf;! }: ?/ M2 r6 L6 m$ k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* w4 @: f. @3 L8 M6 a. ?
  65.         if (ret != 0) {  U+ K9 L  H+ Z1 Y& Y( R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & u* H% w- x! W2 S. S6 r
  67.                 return -1;% K& B( `( R5 W, n
  68.         }! y; C* E/ |( G$ T  }2 Q5 r
  69. 9 }0 X( |; q- V
  70.         return 0;, A" }0 {1 P2 c# \- t& |
  71. }
    % Q  ]& f/ w0 Y, W, C9 S8 C- ?

  72. * W  W3 s. s3 B. d" x
  73. int main()9 S- J9 r: z4 t7 I
  74. {
    + j2 j' q/ _4 W3 Y
  75.         char c;5 s( P$ ^# Y2 Z+ C( ]. _
  76.         int i, macs[6];: f1 n( K0 c5 G. G1 e& e& d
  77.         unsigned char mac[6];
    1 c9 y/ |% w9 w% \2 s9 ?9 I
  78.         unsigned char stbid[256];
    $ _9 S$ I* }% H% }+ F

  79. 3 _+ S1 U8 S9 [) \
  80.         if (readparam(mac, stbid) < 0)6 C+ ]  l) [1 o0 K- Q
  81.                 return 1;
    5 F: U/ z' G0 u8 G; W& ]
  82.   X' c. W& N! o" l2 W; \" l
  83.         printf("Current parameters: \n");
    ; x) H4 W' Y' C9 X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ w( \9 A) b9 p1 O( R6 D# y. I
  85.         printf("  STBID: %s\n", stbid);
    / G/ ]- M0 J2 v6 k/ r( W8 L
  86.        
    8 Z+ [; c, Y, Q% t0 D6 S- o1 `6 w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      \) L) G+ W; B
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  D3 a  x' ^" g
  89.                 printf("Input MAC error\n");
    2 ^' }( G% Z$ Q  M, z
  90.                 return 1;
    0 |: h* X! z" a. {
  91.         }
    5 o% R- z# R$ v8 A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 r5 Q5 T7 J( u5 @& G6 \8 l! B2 R
  93.         printf("\nPlease input new STBID: ");& `% p0 P& B9 H& E" e' u6 W  k
  94.         scanf("%s", stbid);% ^- }& H+ J) L+ ]1 c; I0 X
  95.         if (strlen(stbid) != 18) {
    + \$ V4 O/ e( l/ X4 m( a# |
  96.                 printf("Invalid stbid\n");
    4 l6 z% D" ~4 u+ m& L. T* ~  X
  97.                 return 1;% j, J3 O6 T) O( S
  98.         }
    ( e5 H* M7 f4 J3 r2 n$ I' K
  99.         printf("\nNew parameters: \n");
    ( @! e0 {2 u. p! T5 O- j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% S/ d% n& a; j! o* n- I# o" b+ e
  101.         printf("  STBID: %s\n", stbid);
    4 ?; G: J! v$ i8 e% Y& |$ j
  102. 3 I* \' ]' {9 F! M2 b; B& Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");, C$ X# ~1 |$ w, W
  104.         for (;;) {  W/ @% i" d1 H$ p# z, l' ~/ l/ R
  105.                 c = getchar();4 T& K  G( \7 `8 w- }
  106.                 if (c == 'y' || c == 'Y')
    8 s0 p3 f8 `% w
  107.                         break;1 |6 R5 q9 }1 i/ V
  108.                 if (c == 'n' || c == 'N') {  a- e) ]7 B3 l& Y) {
  109.                         printf("\nAborted.\n");& T! \; ?3 @; p: s. Y. e& N! _
  110.                         return 1;. s3 W$ k, U. Y
  111.                 }* \; F4 t  p0 c/ R% w, r9 X
  112.         }" K9 b% m3 ?# |/ A+ @$ |* r
  113.         if (writeparam(mac, stbid) == 0)
    ! a. J# ]" I7 f) a6 m
  114.                 printf("Parameters changed.\n");
    ) E9 e2 J/ v$ o, S' S
  115. % Q& q0 `+ B- K5 }& K
  116.         return 0;7 B/ V* e, `; T2 Q
  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 ! }! X; F" y. M. J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 P+ w: ^. v- {6 P+ o5 v, B7 x
你用的编译命令行格式是什么?8 {1 A0 n+ N  F  b, b/ y' A, R# M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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