查看: 15869|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* X$ a$ Q; A/ [9 @; o$ y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % ~; j; \& F- F. n( H+ i  k$ [7 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* Z, a5 O( L% |4 S2 j
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# l$ H& N2 C( z' i' \) k
9 F  h0 P, R+ w* D! ?2 @' W2 ?
1 E1 _5 N; w7 V不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ k6 p- b: q( c) e& T7 Q

4 g3 {5 r! L( A( w: U补充内容 (2012-3-8 09:42):
2 `% Y8 P8 z6 n. t1 [( Hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; D# l, l4 F( i+ X( |+ D( N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# Q5 d! p  R- ~% m( p) n  D

* D8 P0 `( b& Q, P+ c+ v, z! Ohimr <address> <value>. sample: himr 0x80040000 0x0
4 C8 S- }9 u; I8 \' s! [5 @' n" L7 j9 ?$ N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' h- e3 Q! o8 W; _2 N) F" N2 Uhimr 0x80040000 0x00
8 I+ ?% z% h$ K, l& s, I+ \6 E: Nhimr 0x80040001 0x11
5 C0 j% ?5 F# ^$ j- Jhimr 0x80040002 0x221 I* s3 Z3 ?- _8 r+ ?% r9 |
himr 0x80040003 0x337 ^- @4 }$ X3 r6 l- a
himr 0x80040004 0x44* ~# u+ h+ ?: \8 `7 Y) N
himr 0x80040005 0x55
/ z: _8 F9 g: N4 C7 |$ a4 v# c. H5 n( W- f
SN也是类似。
5 T4 t5 f/ r# ]% y, q# l1 H9 ^( O; K4 |. j5 m+ i4 c
现在主要是,谁告诉我们MAC和SN的地址?
/ C* s! a9 G6 Q5 w1 P$ V8 l4 ~; x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 e/ M# ?- N1 E( {' N) \一直想找到运程修改MAC和SN的办法,苦于无解啊

1 ^# O6 h: t; |  B& @* H+ y7 y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
  p7 v6 a7 n3 f! ^& n% P. ?5 c% F7 l7 J0 T  J
修改的代码早有了。到今天不会编译。0 ]4 M: X- ^9 h  U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 ^, ?; M! V& K3 V3 I7 ~6 Y
  2. #include <malloc.h>1 R# ~1 U4 ~# x2 `4 Z) j
  3. #include <sys/types.h>
    3 U8 n* Z7 @5 a2 H- }4 ]
  4. #include <sys/stat.h>
    0 L" P2 u( `5 {* `% W$ A. o1 o0 s6 ^
  5. #include <sys/ioctl.h>
    ; }5 c7 x9 [, M4 _" a
  6. #include <stdio.h># R* n+ t5 X. m  Y) Y) ~( U
  7. #include <string.h>! T( F) X2 r, w" M" ?+ V% }0 |* n
  8. 0 z' P& m2 t  B) Y2 s
  9. typedef struct {
    . s! n7 f7 B7 A, ?! }# S0 T
  10.         unsigned int        e2prom_cmd_sub_addr;0 s& g, C$ B( t# n1 s; R; `
  11.         unsigned int        sub_addr_count;) y& H. x9 [  f
  12.         unsigned char*        e2prom_cmd_data;
    ) J8 k2 X$ W- {
  13.         unsigned int        data_count;9 T2 n9 q  q9 {7 {: S
  14. } e2prom_s_cmd;
    " y* F3 H# L; o# S9 y& h5 ?- I
  15. 8 j* g3 l  W- x) O* |' F. n
  16. #define E2PROM_CMD_READ 1
    % I% s. `5 C  L9 J, w- l
  17. #define E2PROM_CMD_WRITE 2. O9 Z) U# u# }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 s  f, F: T+ D# a

  19. / M8 @. e% Q  p# O, C7 Q4 {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 ^" n1 s! [9 `# V
  21. {
    / p% g7 y6 z+ w7 y* r1 p! M
  22.         int fd, ret;' J1 @4 p7 ]' e0 a# e% _( ]
  23.         e2prom_s_cmd arg;
    . j4 h! E4 n0 {3 ]3 l
  24.         unsigned char buf[0x18];
    3 d& E9 P/ x# R0 W& w2 Q4 ~1 T
  25. 0 A7 P. l0 k5 |; h3 U) J3 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : o. u0 o/ p: ~
  27.         if (fd  < 0) {' g, g5 l9 w; p/ |% Z6 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 |7 A4 l" F' h! I
  29.                 return -1;
    ( {+ n( u, c, y) b1 s! C; t3 |, l
  30.         }& V. {4 X. \. N* V: d9 K+ R
  31.         arg.sub_addr_count      = 2;
    9 ?# F4 M* u" }
  32.         arg.data_count          = 0x18;) Y7 f6 ^' G9 Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;- }: p0 u/ {4 u7 r6 P- [0 `) `+ V
  34.         arg.e2prom_cmd_data     = buf;
    ) n. m. H+ V4 S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* w! {0 d- b* r# a7 J
  36.         if (ret != 0) {7 s3 b0 G( @% r1 u3 U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 L8 q: H4 i6 c6 O) I
  38.                 return -1;
    2 l( x6 ^. R% j
  39.         }
    ) A& p7 |( R- l
  40.         memcpy(mac, buf, 6);
    ( v$ K5 t* Y) y8 \( H, n3 f
  41.         memcpy(stbid, &buf[6], 18);
    : f3 G# W' H; V( ~
  42.         stbid[18] = '\0';
    ) k! I2 E# s: T2 E) ?$ n
  43. # ^3 u' B( b# ^8 [3 n3 {
  44.         return 0;
    1 g- x( v; K7 [. @# P
  45. }
    % m/ Q! [3 W- n$ O" _& f+ g

  46. ) B- [3 x7 G) o, ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 A! u' m- |3 \& `( I4 G
  48. {
    & P5 P7 u+ F  Z* @6 j% P' q7 \, p
  49.         int fd, ret;
    3 b2 {' ^+ u" ^* z8 Z* K
  50.         e2prom_s_cmd arg;% s' Z- F$ o  a7 [( [
  51.         unsigned char buf[0x18];) A/ [& K6 b9 I$ ^9 v. ~

  52. : k- H5 u5 G4 P
  53.         memcpy(buf, mac, 6);
    ' N/ K3 }& a* R8 c9 m  ~! c) Z
  54.         memcpy(&buf[6], stbid, 18);% e2 z3 R5 G  ^! y0 Q" Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 }; Y; \3 m4 X% B' Y' A
  56.         if (fd  < 0) {
    6 E: N' W3 p5 B  A! y6 A* e9 {! h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 }$ v; z/ _7 Z' [3 c) g
  58.                 return -1;, O6 E4 A& I  K( ^
  59.         }; L8 X/ K& W% \( K9 u
  60.         arg.sub_addr_count      = 2;; P5 l% W; J. k" L* e0 M: @1 i0 ~
  61.         arg.data_count          = 0x18;( j* ]5 l  q1 C+ Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 o' F1 m' B6 M" ]1 A7 a
  63.         arg.e2prom_cmd_data     = buf;: @" i! `; \( f  S& F* N6 o  O1 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 F. Z  z+ N* g% V' \0 |
  65.         if (ret != 0) {
    7 r. q( \- p6 m& B+ J
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* y' d0 K6 ]8 C( v% v* C
  67.                 return -1;
    8 Y4 I, L4 Q4 N# T4 H
  68.         }/ g% u7 l7 a4 R5 k$ P, [5 p8 `
  69. & {5 w$ {6 w  u( c% {! d9 R
  70.         return 0;: D5 T. s/ ?0 D9 }1 X1 @  I; B
  71. }3 o' y7 H/ t, c* w

  72. 7 G( |3 H  W, ]0 j/ m
  73. int main()
    3 s# q7 S9 j+ R4 a
  74. {
    3 a7 ]- Z/ y$ c9 W7 D. T
  75.         char c;
    8 j) L0 {$ [' _8 S+ a: y
  76.         int i, macs[6];
    * E% {9 l3 T) k
  77.         unsigned char mac[6];
    6 R# F5 R7 F# I- O2 [  v
  78.         unsigned char stbid[256];
    ! x1 Y6 G7 n& \- v& ?

  79. & ~' F- f) d5 z, F4 [5 S
  80.         if (readparam(mac, stbid) < 0)3 w; o, n, Q4 R6 D, a
  81.                 return 1;
    ' t; t& \( ^7 e6 Y
  82. 9 J. @* D0 d+ s. r6 N6 x# @8 C
  83.         printf("Current parameters: \n");
    ; C, d! Q- \- S! u" A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' c3 h+ i: {. M  c* n, T, s7 @
  85.         printf("  STBID: %s\n", stbid);& w: o3 A% }  Q7 ?' M+ k% f
  86.        
      z/ G( l) J6 S1 @# y8 b% _; g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 l. R9 a, O) I, [; k- }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 y1 w5 v. @' l  B! J
  89.                 printf("Input MAC error\n");
    ) t0 z2 c7 I. F: z$ H- o
  90.                 return 1;
    5 _+ I) o: b4 K0 {' k
  91.         }
    ; S# A) F+ E/ |$ t0 b7 ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* @/ W/ n  H% \8 s; J' Y' Y: |
  93.         printf("\nPlease input new STBID: ");2 [; s& Q0 ]+ r$ [6 \' \/ B9 z$ E
  94.         scanf("%s", stbid);8 Q5 w9 s; u* F' S
  95.         if (strlen(stbid) != 18) {
    9 ~* W* ?8 _$ V# ~8 A
  96.                 printf("Invalid stbid\n");( h- p7 a6 r. L% D" Z5 v8 x! K8 |
  97.                 return 1;
    ! G$ F6 Z' Y6 @& r; \3 w
  98.         }
    9 [, ~: b5 o- ?  V9 X6 U
  99.         printf("\nNew parameters: \n");
    # O$ R' g) U. R5 {! j0 b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; H5 C- S$ {1 Z0 Z+ `
  101.         printf("  STBID: %s\n", stbid);
    - O: _6 e6 ]8 `$ k
  102. % Z3 X5 T' n( S. M2 s+ ~- X0 p
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 G6 {! K- R6 g, s9 @1 x/ l: z
  104.         for (;;) {3 k* B2 s6 b% q: g* l1 F
  105.                 c = getchar();5 Q) [; F7 T6 a# @: w) n
  106.                 if (c == 'y' || c == 'Y')
    / k& b* L4 u! \4 \3 B
  107.                         break;* {9 o! j: n2 y. L  |3 \8 k% P
  108.                 if (c == 'n' || c == 'N') {+ W  w9 Y3 w& e, U
  109.                         printf("\nAborted.\n");
    - W. h5 g4 u) Q4 d! f; [" O, r
  110.                         return 1;
    ! }6 Y  _. D+ }5 x
  111.                 }4 k$ B. q; |0 O& O$ _
  112.         }
    3 L/ B- }& P% R, V& z" _8 k! g
  113.         if (writeparam(mac, stbid) == 0) ; u3 B% n8 \9 h5 a( T9 N, e6 ?
  114.                 printf("Parameters changed.\n");
    9 x  g: _' p: q

  115. ' `+ _2 o7 B0 P4 q- G
  116.         return 0;
    4 o" Z3 m+ v* `5 Z4 h$ {
  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 7 e6 E- {3 g$ V) P
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 V0 |: }* r! q2 t. l, ?8 o  q& r
你用的编译命令行格式是什么?
+ z6 I( `$ C% c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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