查看: 15884|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! f6 {' h. [7 o/ a5 i& Y4 k8 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig1 \4 M9 M! k  C! Y2 u/ u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# l4 ]1 m# P  }+ l0 F0 k% uusage: himr <address> <value>. sample: himr 0x80040000 0x0
) E# W- h  i1 _8 n
7 r" X) b1 `, q( G* w: \, |+ w0 Q6 y
) Z- I( K2 S9 _' k5 _9 c6 t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  C. G9 B+ v. V/ M) L# u/ X
4 c/ a" n4 t$ j$ e) f5 w/ ^9 ]8 u2 x
补充内容 (2012-3-8 09:42):- ]2 x3 D6 ^6 M/ _6 U* X. T4 d, s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
! D  l, Z- ^8 q9 W( O7 g' {这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ V" g/ E* s0 x8 \) Y4 ^* L4 ~( k* V

; U( c1 P3 Y' Q' Whimr <address> <value>. sample: himr 0x80040000 0x0
7 l6 C# O9 y4 S  R( g9 S! P/ B
1 o; p% S$ T& w8 _8 X例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% z$ o9 @! ?4 q! S1 o: l1 j1 m
himr 0x80040000 0x00
7 O5 b4 a& h! t- F! nhimr 0x80040001 0x11' _2 C+ T2 E, i3 w
himr 0x80040002 0x22" a! N; h( y) K, ^
himr 0x80040003 0x337 o' k5 T2 r7 H, o: w9 e$ }
himr 0x80040004 0x44/ b+ E4 E" R/ U/ T) V# S) S. U% w
himr 0x80040005 0x55" |) B+ [. ]% f4 `

$ S  R; ^& L7 u9 d5 ~& uSN也是类似。
6 s7 h' o9 z$ T0 J# x9 V) J4 J( M: @  S0 R, W* l
现在主要是,谁告诉我们MAC和SN的地址?
, `4 y0 t: r' A9 w4 x# O7 V3 v5 A5 B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / j" p* O: a* y
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 B! D7 P& s* f4 v. Q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 V% G) ~' `/ w! _" s4 @- [
1 F6 v; S: c6 E& A+ j$ T; Z! D修改的代码早有了。到今天不会编译。
% l7 R% `7 d$ l7 d5 o需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>* V0 S6 k1 z) @
  2. #include <malloc.h>( {& X; c" }8 d0 S
  3. #include <sys/types.h>
    ; J# @$ @! Y) `/ c4 N  h
  4. #include <sys/stat.h>& I* d9 Y* H+ X! _" i3 \
  5. #include <sys/ioctl.h>+ D. v. S+ j5 ?( Z
  6. #include <stdio.h>
    : M& B/ o1 I4 {' H
  7. #include <string.h>2 }4 R  `  l7 h; \7 U
  8. ' S+ s8 ^3 g8 P4 m) w, d
  9. typedef struct {. k5 I  @$ u: `# Q/ y1 A
  10.         unsigned int        e2prom_cmd_sub_addr;
    - R" P. g. K) q
  11.         unsigned int        sub_addr_count;
    5 i) c1 ~7 |; L) ]3 c8 c9 Z$ g% f
  12.         unsigned char*        e2prom_cmd_data;6 c% H# B6 z5 I( `+ o$ y
  13.         unsigned int        data_count;
    5 y- j! c7 j2 a" u$ F6 O- f  z
  14. } e2prom_s_cmd;' e8 d/ s( G4 z& s1 e" ?
  15. 7 o2 B6 T$ X4 h* A2 m
  16. #define E2PROM_CMD_READ 17 m& M4 Y- a' o2 F0 X* {
  17. #define E2PROM_CMD_WRITE 2' X( B6 U0 \7 l, P0 ~7 p7 x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 ?0 y0 h7 |" G  g7 Q. w
  19. 1 h7 T8 m$ ^  z; N0 ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; z, w0 X' E! e$ V
  21. {
    1 D( w* P7 a: B% R* [/ \
  22.         int fd, ret;8 p) f5 N; b+ ^) E) f8 J$ j
  23.         e2prom_s_cmd arg;
    3 W* r" P* k* {" K
  24.         unsigned char buf[0x18];
    6 K/ X% M4 Q6 q/ ^6 ~; k; W
  25. & i( q9 g; p) l/ J8 W# {: |
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 L# a% v3 W6 E5 \1 x) {5 O
  27.         if (fd  < 0) {8 t7 D) ^6 B( s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* b( ]- ^# _2 {
  29.                 return -1;# X$ t7 f& e' E* \% l
  30.         }! p8 W) f8 g3 |; N9 C
  31.         arg.sub_addr_count      = 2;
    & q6 T! @8 J/ K  u2 _5 d2 G
  32.         arg.data_count          = 0x18;* X! U& \- @; ?* I4 `7 O
  33.         arg.e2prom_cmd_sub_addr = 0x290;( L' i+ I8 o0 ^$ V1 s1 P4 w" p: j
  34.         arg.e2prom_cmd_data     = buf;
    7 k) t/ @- h+ @& v7 p* p
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);, {8 o3 G% x& k
  36.         if (ret != 0) {/ d6 T1 @) v' |2 H; O+ U& _& s* C8 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * K3 r9 Y) z! Z6 c4 _& h- M
  38.                 return -1;8 I1 x. s/ W$ q: R+ i
  39.         }
    ; c- z: Y5 h6 h$ V
  40.         memcpy(mac, buf, 6);9 F  V. m) K9 t, I) K( g' J, q
  41.         memcpy(stbid, &buf[6], 18);+ ~& Y$ ~: W' V
  42.         stbid[18] = '\0';
    ! q! a' J$ L# j" W7 p, w6 x

  43. 9 U* R# [$ [8 |1 C7 p& I0 Y, B( t. B
  44.         return 0;! h* \  Y5 o0 f. o- I6 G
  45. }5 S( Q! L4 A' j* e6 H( u5 ?0 d0 ^

  46. $ J" |- Q3 E9 j+ |1 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 i& ?5 s3 r5 c* ?- ^
  48. {) M  v0 I0 X) c, b8 ~! Z3 W$ J
  49.         int fd, ret;
    ! M( d, ?0 F# s$ z: c2 y( L; k/ k" j
  50.         e2prom_s_cmd arg;
    ! }( x# n0 ~0 h' e0 {# t: x8 U
  51.         unsigned char buf[0x18];+ L5 }( z. |  V+ L1 w9 L" q% U

  52. 8 S- _6 w3 _0 v3 z: B* n
  53.         memcpy(buf, mac, 6);/ ^& ]  |1 v9 G+ ], b. {" x
  54.         memcpy(&buf[6], stbid, 18);
    6 }: q- W: n! A$ X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, h, p7 h1 l9 V! C
  56.         if (fd  < 0) {
    - g+ m/ o5 k: A; x  O2 i' Y$ a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 v) n# K2 q, `3 l+ X
  58.                 return -1;
    ! H! I  H9 h1 R2 b- }5 e
  59.         }
    9 q  C3 A1 @# R# n
  60.         arg.sub_addr_count      = 2;; ~% i( t. X9 ?1 J6 u
  61.         arg.data_count          = 0x18;! C: ^9 Y1 `* p. B
  62.         arg.e2prom_cmd_sub_addr = 0x290;) q+ {6 |4 p; F, K" F6 E, t( o+ W) ^
  63.         arg.e2prom_cmd_data     = buf;
    , b. L; r2 l$ ?- G& ~+ q! T3 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    : ]8 L% ~' n- X; i  \; m- v7 y
  65.         if (ret != 0) {! P, l) o# m- n- P& R) Z! l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : \' C1 X- s- R1 ^
  67.                 return -1;% X6 q& ]; s2 E# K0 G) c4 d
  68.         }  j. J# p  d* Q1 u; i- w
  69. - p2 I/ G/ y2 y
  70.         return 0;
    5 d' v/ f0 X2 K! G2 x2 u
  71. }' |9 r" X) `# H6 Q4 w/ C

  72. / Y, x' }9 u+ M, u
  73. int main()
    ) ^, o/ a1 v& J  x3 j3 v) q
  74. {9 {) H4 Y0 d- n6 `' A' A
  75.         char c;$ ~# x' o/ c) d; Q
  76.         int i, macs[6];" N' G9 H* S; w7 g' q2 s
  77.         unsigned char mac[6];( N, F8 K; I! l
  78.         unsigned char stbid[256];9 d$ @' N( u) G& b' k( @; @; w
  79. 8 @3 B9 |: d% P! Q. k; p
  80.         if (readparam(mac, stbid) < 0)
    2 T9 l* r/ C2 z& x" A
  81.                 return 1;
    % G- ]0 s5 B3 y" D) A- ?3 j

  82. 0 ?& F" Z. W9 W2 @( Q( o! E8 S# Z9 p
  83.         printf("Current parameters: \n");* `% R: e1 z7 I& j4 u3 N! o1 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 G. U' l* w2 f0 c" l
  85.         printf("  STBID: %s\n", stbid);
    9 s2 @. ?: k9 x, X1 k7 E
  86.        
    . y: b: q  W" O8 ~0 K7 ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . i; ^  z/ ^3 q9 O  F- {2 ]- q; ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% d6 Y& s: P+ c9 s
  89.                 printf("Input MAC error\n");
    - N5 ^3 I$ G' i
  90.                 return 1;& o9 n; k& S* q7 I9 Q
  91.         }
    $ F$ T9 Z  ]% T2 g' H8 d2 q" [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# Y. Q, A% t. f" U% |7 E
  93.         printf("\nPlease input new STBID: ");  v# T. _, y1 ?9 N
  94.         scanf("%s", stbid);4 c: ]  R  D) x$ r, R8 n
  95.         if (strlen(stbid) != 18) {) F- B$ I8 ^' A. m0 H& s& s7 o
  96.                 printf("Invalid stbid\n");
    ( O& L$ C) m: [! y
  97.                 return 1;2 G) Y- T4 X( ?- K
  98.         }  f: P# t; N1 l1 n; M
  99.         printf("\nNew parameters: \n");
    % J. i# G3 U  M" G. l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) ?4 O2 ]7 a6 C4 `$ |
  101.         printf("  STBID: %s\n", stbid);
    ! L# f2 [2 o) U
  102. ) [5 v; R) C0 W" c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . P! t3 L6 E, [
  104.         for (;;) {
    1 L" @1 d; o/ h# ?8 U
  105.                 c = getchar();
    " ?4 b! b" A0 Y" E9 m
  106.                 if (c == 'y' || c == 'Y')
    , J' O- u2 v! d9 F, N4 P1 i! N
  107.                         break;
    $ X/ k4 E$ w' u" Q
  108.                 if (c == 'n' || c == 'N') {! Z2 J: U7 y2 S2 P6 G$ k
  109.                         printf("\nAborted.\n");  C+ M6 _2 E5 o2 ]2 l3 A' H
  110.                         return 1;* t. M5 Q* H, m" |( ^3 V
  111.                 }) T+ n- p, p$ [( m
  112.         }1 X. b4 L& l4 {% w
  113.         if (writeparam(mac, stbid) == 0)
    0 Q+ ?+ O& }; V4 r  p, f9 D
  114.                 printf("Parameters changed.\n");! `- S; T8 S+ M$ D6 L% H# d

  115. . b  l; _4 k6 _, h% I  x+ O
  116.         return 0;
    , k9 u0 `1 h: K- r2 A
  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
$ G/ ~1 ?. A' J$ f: O% j在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' v) J$ a6 V* ]7 H2 b' H
你用的编译命令行格式是什么?! \4 Y5 z' G, Y. `, X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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