查看: 17958|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. k- t+ p$ `! C" U0 M( }; d$ n
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. d! p' j5 d, k: g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 C/ N0 o+ b7 P3 M7 s
usage: himr <address> <value>. sample: himr 0x80040000 0x0
( J! F( t6 R9 ?$ Q. C- e
; j6 N3 B7 g# J1 H
3 p. s+ [9 X6 s/ i! W4 p: Q, e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?+ w* l8 _( D. X7 D5 ^
- B: z1 A3 H9 y: L2 i" ?/ [' _3 S' a8 v
补充内容 (2012-3-8 09:42):) L/ I4 _0 J+ C5 E' R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 t7 w! _- R; Y, p) x0 m& N
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 z2 F; e+ ?# U4 P
/ e7 a# i( g+ {% v
himr <address> <value>. sample: himr 0x80040000 0x0
0 g! C. G  i3 ?2 t: Y. E; T; S
' v+ @+ ~' F( s8 p6 G& V例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 u. W1 M6 Q! x  [0 g0 ohimr 0x80040000 0x00
7 j' M6 }2 M  U/ Ehimr 0x80040001 0x11
4 R) t0 P+ _3 Chimr 0x80040002 0x228 }2 }* V1 B! V( ^' A2 e" I) B
himr 0x80040003 0x33
. p/ g  k9 o: P% J8 ]! Phimr 0x80040004 0x44
( K- N; r5 D0 p3 w7 B6 ahimr 0x80040005 0x55
! F* W$ j8 G8 B9 ~; _0 q& o, w1 j% q" Z* _# t
SN也是类似。
. J8 Q" Q6 ~# n  T( e  T
5 T. y/ z/ `8 ?, J8 Q# j现在主要是,谁告诉我们MAC和SN的地址?& c, A; `  i2 ^. |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 s5 d! X. B9 F一直想找到运程修改MAC和SN的办法,苦于无解啊

' [- R: b; P/ l源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# Y1 \- V- ^* W$ C! H' ?! D
' i) @# a9 H; V* D9 z6 Z! w" C修改的代码早有了。到今天不会编译。/ O! Q' i' e. m- n6 h
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 Z8 ^# G9 ]  ]4 h
  2. #include <malloc.h>
    6 p5 y( i/ C0 @! M
  3. #include <sys/types.h>0 w8 _" a5 x4 V
  4. #include <sys/stat.h>
    + D) X6 J2 \1 l: \
  5. #include <sys/ioctl.h>
    / w( `4 V( c3 R0 }1 P7 Y2 T
  6. #include <stdio.h>; T% d  ~+ F5 p( v' v1 d3 X1 M
  7. #include <string.h>/ [: P! G2 t2 z5 \

  8.   x' F  i9 O2 f$ {7 U5 k
  9. typedef struct {
    ) m# L% j/ z: P# {- u4 z
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 s/ @# _: p' ^7 ?* ]
  11.         unsigned int        sub_addr_count;
    9 Y2 t$ F+ d! e" H( R
  12.         unsigned char*        e2prom_cmd_data;7 Q$ H  L( _5 Y+ {8 W: y7 _: Q0 C: T
  13.         unsigned int        data_count;( h7 r  X9 f! l' m
  14. } e2prom_s_cmd;
    / l# y  F6 h9 _1 f

  15. / y' e7 X4 F9 G9 o1 j' E0 w
  16. #define E2PROM_CMD_READ 1. i9 d( \8 @. f' T0 ?- J
  17. #define E2PROM_CMD_WRITE 2
    * Y/ S+ ~/ C9 S& b  q& |) D* M) n0 Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ y6 y( f9 a1 ?! b
  19. . j6 {: s1 M; v" m, F1 t9 s0 J# P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ }, F% e" H8 [8 S
  21. {5 P& v7 t: {' j0 a3 V" R
  22.         int fd, ret;1 z$ m/ x4 U2 C9 ~
  23.         e2prom_s_cmd arg;
    ! G% Z& K. U; Y) j/ ]* q9 |- d
  24.         unsigned char buf[0x18];
      c; t( n2 l0 }5 P/ P) l1 B3 z

  25. , Z2 _1 W7 a$ Y8 L
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 l/ L4 t5 F' n' W8 Z. H
  27.         if (fd  < 0) {- Y4 r0 e9 H# a2 A" c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * Y; c3 F5 m# S' K6 r
  29.                 return -1;+ a6 O' N0 O$ t% a
  30.         }
    : E9 Q5 `- |3 @# k- P/ k& x
  31.         arg.sub_addr_count      = 2;% `2 d4 U% J5 B6 C9 p
  32.         arg.data_count          = 0x18;% _% T; r! }' A8 X6 t- l; }
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 D7 P5 s, b& |1 |, {
  34.         arg.e2prom_cmd_data     = buf;  f6 R+ M9 }5 L6 t4 ]+ l/ a: d  \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % l; p5 g) p" H6 r" g( y, n5 L
  36.         if (ret != 0) {
    2 H, @3 }. i  g; R% ?- |" v. M
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 f3 S, d8 I. Y% K/ B
  38.                 return -1;1 {# p2 v6 C8 p' J% {
  39.         }
    % ~8 r9 G6 V. X) I3 N/ v8 P
  40.         memcpy(mac, buf, 6);
    : V% |% a' X. t
  41.         memcpy(stbid, &buf[6], 18);8 N; t/ a2 }7 \1 u
  42.         stbid[18] = '\0';: T& m! m, Y, T  I/ C9 g
  43. 2 r9 T3 u9 `# H& Y$ F
  44.         return 0;+ G$ C# h' n9 C
  45. }
    ; K- d- |( X% A2 j3 H

  46. 8 @) B2 S0 w# r7 T8 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) }# e& p& z6 x( }+ J( C
  48. {9 @: C& C! s' L% N3 w
  49.         int fd, ret;
    ' O0 E- M8 ?; X7 R
  50.         e2prom_s_cmd arg;
    & C4 _, f* L( L* `5 I+ P
  51.         unsigned char buf[0x18];
    $ D$ {8 A% r% d$ c. z, I5 o

  52. 4 }) B) I! M3 p. U1 i) ^4 r% z6 m
  53.         memcpy(buf, mac, 6);) b, s! `4 I8 }6 r+ a4 v, U9 J
  54.         memcpy(&buf[6], stbid, 18);5 _; d% }' K% T& B8 |7 ], v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 y, p. O  G  g3 d# x
  56.         if (fd  < 0) {* R: N2 J+ y2 f% i. U+ {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* ]$ C' c( M% X4 T. d
  58.                 return -1;
    % {, Y8 z( l/ ~* \! Y
  59.         }
    8 O% T6 w# m0 ^6 O
  60.         arg.sub_addr_count      = 2;
    - a( V" s2 w# l* r0 }: V" j  V1 q
  61.         arg.data_count          = 0x18;0 U" G) Q; }. q4 a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # a) [1 D' f; r! C
  63.         arg.e2prom_cmd_data     = buf;
    5 d$ U8 F7 s! t$ Z: E: F' T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" j  z, x1 a% B6 w! u  c2 s! Z
  65.         if (ret != 0) {
    * A# z4 I( D% I0 C: Q) Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: |4 W0 m* o5 H( x! g3 G* l
  67.                 return -1;: _% |! x& X7 v
  68.         }! h* U/ m1 C2 t3 c

  69. ) P. _# w4 G  S6 g3 j. N
  70.         return 0;  z7 m- o  |2 p
  71. }
    2 R! c$ N! V# p) c5 y- W0 ~& p
  72. # I) ^, r7 p5 C4 l1 u2 i- P+ x, G
  73. int main()
    3 C$ U+ ^. y2 w0 m& Y0 @7 J
  74. {. H6 M, c5 G! E0 d! j# t
  75.         char c;. Z/ ]1 j5 f3 s; `
  76.         int i, macs[6];6 q( o  l  X% J- H* C" E
  77.         unsigned char mac[6];; U: o" G  q  I; i$ `7 h; p) i$ Z9 b
  78.         unsigned char stbid[256];
    1 [4 A3 S7 m# l" r0 R! i7 p

  79. & B/ K! H" Q! G( u' h' n
  80.         if (readparam(mac, stbid) < 0)0 z# R* N1 @$ E! @) h
  81.                 return 1;
    5 z" \- s) Y% o' r
  82. ; B0 N/ N: y- q% Q, S2 @
  83.         printf("Current parameters: \n");4 {# L! g/ F. R( C) k
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 r# Z9 D$ O" Q
  85.         printf("  STBID: %s\n", stbid);
    7 u2 H0 O% l( \9 `  X  \
  86.         " @4 i! ~: w2 Z5 ?+ i3 ^5 P# }/ S" O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, q8 z5 W6 j& z' b# W- H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 v) h7 ]. T# n/ V$ E4 V
  89.                 printf("Input MAC error\n");
    6 g: u. t- h$ ]! s8 v
  90.                 return 1;) _% Q& e% i! n; C  l
  91.         }
    / A/ ^3 d" o4 J" ]4 @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- ]( ~1 c' G3 E* u
  93.         printf("\nPlease input new STBID: ");
    . N" m. {0 u( X2 z7 A( Y
  94.         scanf("%s", stbid);  r7 R0 L" Q% h
  95.         if (strlen(stbid) != 18) {3 E; [! X* J- L# [; Y4 V
  96.                 printf("Invalid stbid\n");
    : Y5 y8 Y7 B# x
  97.                 return 1;1 `9 F4 P/ h$ ^! V* H7 G& W( ]' V. X( G
  98.         }
    " N' f% }) z9 B9 g
  99.         printf("\nNew parameters: \n");  \2 B  L. D) U* A6 s* c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) T& Y% b2 r9 d6 E* W  ~" a' t
  101.         printf("  STBID: %s\n", stbid);" I% P6 p2 ^# U. ?
  102. , \8 m! x2 p. h/ b  y
  103.         printf("\nDo you want to change paramemters? (y/N) ");: D) s! z, `# \& s# f. q' V
  104.         for (;;) {
    ' q/ [. z2 O" R+ Y$ u2 V
  105.                 c = getchar();: M6 n4 ~) _. K8 Z/ S2 \8 V
  106.                 if (c == 'y' || c == 'Y')4 Z( G/ j6 \# H2 L( S
  107.                         break;! Y4 s: u  r) B! h# }' f( u. O6 E
  108.                 if (c == 'n' || c == 'N') {/ L, e! n/ i, e2 j2 }
  109.                         printf("\nAborted.\n");2 `6 J5 d( G6 z9 l. A# V4 l
  110.                         return 1;/ ~/ c4 B3 ]  g
  111.                 }0 a/ ], T5 Q0 C8 y( X3 j  l" i
  112.         }
    # V2 a: g3 V0 l( ?: B' F
  113.         if (writeparam(mac, stbid) == 0)
    $ r) h% R# p, {" V
  114.                 printf("Parameters changed.\n");
    2 n8 s4 b. B2 s$ c& x+ G& {
  115. 9 s2 z" Y4 i/ {
  116.         return 0;/ C* Q/ o, \% g3 m/ N
  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 D$ x+ i4 ?0 \  Y; u9 z3 ]. G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- ^2 e5 V5 }6 t+ ]+ N: p# C. }
你用的编译命令行格式是什么?
5 B1 p$ R9 E! c; ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部