查看: 17682|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 b2 N3 h: i( D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 e5 T- s& M7 p1 a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; Y; c. f5 c* y( J% Z: lusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 c8 }' k+ a( Y6 u+ L+ R* ]# \4 F0 G/ L# P) ?
# J# K- [, d; m8 B# c" w3 [8 y5 E9 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 Q, }' V6 ?8 V! }  J, ]+ j

8 X' p, C4 f' Z/ _) e补充内容 (2012-3-8 09:42):
& q, g4 a4 w$ e. K( V" A( X( Z! Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 T& R  `4 k5 G9 v3 o$ C
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。% ~3 O6 P/ P2 k9 O( c

7 H9 W; _( X* x7 f* M) u% zhimr <address> <value>. sample: himr 0x80040000 0x0! r% U, G, J1 F2 V; M- W4 k
9 R9 D& f' G- V2 E2 N9 D5 h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ f) ?8 e( ]( V/ o* mhimr 0x80040000 0x00
1 ?0 j2 H+ h  U" v- _himr 0x80040001 0x11" s6 R3 y  c" I, u! x% Y5 j. d
himr 0x80040002 0x22' v) a: T7 v- c- y% d: c6 o1 t. O
himr 0x80040003 0x33
# W# J+ W9 \: z- c, y  d" v5 jhimr 0x80040004 0x448 z+ h  L4 S5 @
himr 0x80040005 0x55
6 g2 ]7 E$ `3 Z* N) ]) a2 y; ^+ R  s7 j+ v, o/ F
SN也是类似。# S# C- @: _6 X, ~, V2 Q

* |! _4 O: J( ^* ~# z现在主要是,谁告诉我们MAC和SN的地址?
: U- Y* k: h% R+ h
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ A% ]) L& M6 ^4 N. a  }一直想找到运程修改MAC和SN的办法,苦于无解啊
# b1 C- m1 L3 M& {# r; y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 l' C( p' v" \" i) r: g. A- }% x

6 \: w4 w+ X' U( z$ m修改的代码早有了。到今天不会编译。" C; F3 `/ n5 D# w
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>& k. ^' q; C& H' y, x  x) b
  2. #include <malloc.h>
    2 H7 z2 x0 u4 [' L
  3. #include <sys/types.h>
    ) i2 M: C5 Q; v) v# A& r& ]
  4. #include <sys/stat.h>4 {+ ^* f* E( U7 y7 l6 r* M3 q
  5. #include <sys/ioctl.h>
    9 E, |; g. d0 ]. I
  6. #include <stdio.h>
    5 x' m8 ~# x: c) u, }
  7. #include <string.h>
    % o5 b1 V' Z! p, F% k; X& O
  8. + v+ u; h' c/ h7 M' G0 C
  9. typedef struct {
    5 l2 `- Z2 T( g7 c" E; @) G
  10.         unsigned int        e2prom_cmd_sub_addr;
    - C. c4 {! ?1 Q! p4 p  a
  11.         unsigned int        sub_addr_count;
    5 ]! _& B9 n: g% H7 s
  12.         unsigned char*        e2prom_cmd_data;6 I1 X: ~9 q" i* t5 e% [8 l- o
  13.         unsigned int        data_count;; v' ?/ a9 l' Z! [- r9 g, E& ~0 V
  14. } e2prom_s_cmd;
    : e1 N" Y, v& }: i) f6 I9 G

  15. , ~, y/ k5 T0 ]
  16. #define E2PROM_CMD_READ 1
    ) p7 _- t# U" G6 Y, {5 K$ E; O
  17. #define E2PROM_CMD_WRITE 2
    5 D) [! }" J# b7 Q. y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 n' W+ u' w! S' `( c

  19. 1 Q  D( L- }& H' [5 e4 R" N. K1 B+ I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & W# w3 T) M# B  S0 B$ T# q
  21. {+ U, H) o; R& [; U2 a
  22.         int fd, ret;
    3 D1 P* b  ^6 m) Z( F- B1 R
  23.         e2prom_s_cmd arg;# Y; W: x9 G8 _3 t! O( `6 X: A7 D
  24.         unsigned char buf[0x18];; Q* ^8 P; f8 t) ^( G6 g
  25. , @; s# ]$ c8 U6 R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 u6 a- r# e  V& t2 _, p
  27.         if (fd  < 0) {, q/ V/ w) [) p4 k2 C& Q" B6 N, U9 p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);! ]8 n4 |3 d/ s  r" c
  29.                 return -1;/ l) @1 ~2 l$ @9 [
  30.         }1 `" e: N6 m) L; m+ J1 e4 \
  31.         arg.sub_addr_count      = 2;
    6 C+ L1 d, W. c0 x" n8 L4 i4 d
  32.         arg.data_count          = 0x18;
    ; x; C! |( M! ~! ^
  33.         arg.e2prom_cmd_sub_addr = 0x290;; S& K2 x. Z$ X- S' w6 x6 ~
  34.         arg.e2prom_cmd_data     = buf;
    & P) p2 ?7 A, J* I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 H6 y, S' s7 ^  ]
  36.         if (ret != 0) {
      g/ n4 q! r" v  J: y9 a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & c* i* @% H/ D* G  q2 X( ~) T8 D
  38.                 return -1;
    ; ]5 Y! i# T7 V7 B/ `5 o
  39.         }
    ; y- i- w+ F5 M* ^' ~9 w- C
  40.         memcpy(mac, buf, 6);
    5 ]' J! i/ |* T9 e6 r
  41.         memcpy(stbid, &buf[6], 18);
      }- k/ b( q! k; W5 b! U
  42.         stbid[18] = '\0';- \  a+ L% ^! x$ R+ ]& i/ N
  43. & _: F  |/ Y2 P2 Y& l2 q* C5 o( i7 Q
  44.         return 0;, Q$ Z' T0 T6 ~) b
  45. }
    0 ?  k, z1 ]1 y/ h7 V
  46. / s, I( H- u' _/ m: z0 Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) ~# m& x6 T* N) V- F
  48. {7 Z% Q0 Y* g: g6 X
  49.         int fd, ret;
    5 J5 x9 c( E: W2 Y" V& V
  50.         e2prom_s_cmd arg;+ _, r4 r+ {- [2 N; L# V/ Z
  51.         unsigned char buf[0x18];' a2 J7 O0 x) u
  52. : q0 l7 N( E, R
  53.         memcpy(buf, mac, 6);9 x0 y* Q; o- o0 ?8 t+ b2 P0 i
  54.         memcpy(&buf[6], stbid, 18);% q- a* G! [0 O2 ^; o3 Q3 p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 f8 X% G7 T3 Z5 L- [! i: I( f/ f0 G
  56.         if (fd  < 0) {7 Q8 ^% t( {2 [3 q) D0 r) [! n0 c- P. R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 d- s8 Y1 l3 P+ F
  58.                 return -1;
    4 z. ^+ M# C0 q  n2 P: j7 A
  59.         }
      S2 d' I  `5 W8 c7 q
  60.         arg.sub_addr_count      = 2;
    * J6 @% b8 l* S# r6 _. A
  61.         arg.data_count          = 0x18;
    9 d8 V* s4 ~2 C& }7 s" Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " Y7 w: |! O$ [, O
  63.         arg.e2prom_cmd_data     = buf;
    # ]' i( l: \. {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , B, b, g! |; n; @) V) V) Y
  65.         if (ret != 0) {
    8 l  y+ v7 h0 i" t' |$ B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / U4 d; f2 X( @
  67.                 return -1;* [9 d. I; n  c8 O0 o! n
  68.         }# j0 I5 f/ k3 H4 X% ?; _8 V% ~
  69. 3 J7 d1 l  B+ J1 y6 P: ?7 ~8 X1 R
  70.         return 0;8 B# C7 k$ C  l; W9 W) i
  71. }
    $ d  n5 l2 O$ W2 ~
  72. ; n" t2 j* M" x: j& [
  73. int main()- y/ `3 h0 L6 \# ]
  74. {. p4 U# M+ D& X7 [8 i0 Y9 @, f+ ?
  75.         char c;
    ; I9 ]- E! q* i: H
  76.         int i, macs[6];
    2 g) G8 q& F7 r  [7 @: N7 D. w% ~
  77.         unsigned char mac[6];
    , z  N- Q! y  b9 a
  78.         unsigned char stbid[256];" F: {! g1 B+ f/ N' G# X

  79. ' A8 u9 n1 L3 t( d: V" Y
  80.         if (readparam(mac, stbid) < 0)
    , v9 b0 k7 o- m6 X' R$ a
  81.                 return 1;, V3 w( {; E, t# x9 `$ f6 ^
  82. # ~9 \) R1 G8 D! H
  83.         printf("Current parameters: \n");$ E' L  r  X. C4 p' ~' Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # n) r0 s& L( g3 h" n6 o
  85.         printf("  STBID: %s\n", stbid);' X8 O) u8 _) f5 R; A
  86.        
    , j2 m& e# J1 |/ A9 q/ Q# @, Y$ b" U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ w& y" @, e0 Y- P! E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 {, _; W/ L! X6 N
  89.                 printf("Input MAC error\n");
    $ {+ A7 J% A+ l2 q* J: x3 E! A/ k
  90.                 return 1;/ a# P) P, z: q3 o: V
  91.         }7 v' u5 g" H# [7 k6 w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - T- `) p4 s9 x% Y6 \; M4 N
  93.         printf("\nPlease input new STBID: ");. W! x/ }5 v2 X2 I' |( B# S
  94.         scanf("%s", stbid);5 ]% {1 Q. U( ~( Z+ z9 o( q* M
  95.         if (strlen(stbid) != 18) {6 j9 P& N- |/ k2 I
  96.                 printf("Invalid stbid\n");* h9 B* o. Y6 W: D( K1 d
  97.                 return 1;
    % O- e) B$ T; P1 p
  98.         }3 ]2 \; h5 i  Z/ A' T  E
  99.         printf("\nNew parameters: \n");! Q0 n& u! K, z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- x4 i8 X7 x( n+ F7 ^. b6 K
  101.         printf("  STBID: %s\n", stbid);
    + y1 Y# s2 u% C0 O
  102. 7 q+ ^4 h) a+ S0 a' K# @
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 [. A8 j, B0 z! C: v; Z6 C
  104.         for (;;) {
    / M: B, a+ V( x1 E) F
  105.                 c = getchar();* r( j3 `; W9 m- J7 r+ a4 v: ]3 b
  106.                 if (c == 'y' || c == 'Y')3 k, O% z. |2 ]0 j( I
  107.                         break;+ Q' b4 G& r+ m# V# E3 ~
  108.                 if (c == 'n' || c == 'N') {% ]4 H* z! }! E& D2 @9 C8 F/ z
  109.                         printf("\nAborted.\n");
    , o& V1 n1 u" p/ P! X
  110.                         return 1;
    6 l7 b- Q7 v  l* I/ p
  111.                 }
    0 X* B7 \. g! a; r
  112.         }
    : x: n( B) b+ ^2 V
  113.         if (writeparam(mac, stbid) == 0)
    , x+ W& Z3 F7 H, i% A' c
  114.                 printf("Parameters changed.\n");
    4 e  a( I* c1 E; m+ @' f3 J2 {7 A4 H

  115. 5 B* B6 x- n5 k. J6 C# T7 u
  116.         return 0;. Z0 h7 P3 C& ?; \
  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 8 {0 P5 H/ k/ P
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, k5 Y7 ~- B3 m" {6 V( v9 Y你用的编译命令行格式是什么?
  \; i; B' q$ E& G# W
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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