查看: 16145|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 i3 V9 z2 M9 F' J9 X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 @+ G- t; g: i( N  O0 `$ p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 b2 |, p" x/ B0 O7 Y0 Dusage: himr <address> <value>. sample: himr 0x80040000 0x03 W  l, |/ e, Q0 q2 g
" P& e: f3 ^( \; j

3 @0 d0 J" i1 Z* F$ p2 C, n7 o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& y# K" o5 ]0 t; U( R6 b& o& }0 ^9 |+ s% S& R2 e' j( {
补充内容 (2012-3-8 09:42):6 k- }, @9 i( m/ ?
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" X8 ]( p0 f. t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  `( p$ m/ o% a

+ ~( H" s2 x( ehimr <address> <value>. sample: himr 0x80040000 0x05 p  y9 |  w' H) n0 P0 o5 P
/ I9 G% ^, T1 ]. y8 P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( ^: Z2 ~- t( a! O
himr 0x80040000 0x00" c3 \% }1 T0 n6 p
himr 0x80040001 0x11
" b2 {) |3 b2 ]% K3 vhimr 0x80040002 0x228 k( @2 J3 `( w4 F) K- x
himr 0x80040003 0x33
+ q8 ^( H2 F  }7 C' ]9 K- H. Thimr 0x80040004 0x44  a! \9 p6 Y7 T8 X1 v- P
himr 0x80040005 0x55
9 |5 r6 n! Z% _1 ^5 `. H) P2 H# F. b9 [3 G2 H4 [
SN也是类似。
6 r0 Z0 T3 q" M# D* ^! W% f5 r0 r2 w5 l6 X
现在主要是,谁告诉我们MAC和SN的地址?- ], ^) @, z" _+ Y4 A+ }: N
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & v# y( Z0 j3 p3 K  a
一直想找到运程修改MAC和SN的办法,苦于无解啊

3 s) |; k2 b+ Z* n$ d2 I" a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , n, Y8 y- l: }4 l

9 Y& h0 ~) P" P  t1 q7 x/ r修改的代码早有了。到今天不会编译。
, ~  s# k% A0 k; \9 s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% V& H; O% i7 ~! \: i8 O
  2. #include <malloc.h>8 w, C2 ?  F2 l- K4 X
  3. #include <sys/types.h>
    7 q, r7 N3 \7 o2 B' _, Q/ @  p
  4. #include <sys/stat.h>
    ' t7 o3 z: G& Q: N  [8 _! e. u
  5. #include <sys/ioctl.h>& ?6 s5 J% p8 x
  6. #include <stdio.h>& t8 I6 h# z; N
  7. #include <string.h>
    & K$ L% \7 |$ U* t% x8 y: \
  8. 5 D- v0 M2 ^* C* z6 C6 D  w. q
  9. typedef struct {
    ( n1 }. E4 z' s3 X' D5 }8 |
  10.         unsigned int        e2prom_cmd_sub_addr;
    , o4 `* w5 L* y2 L. y- z
  11.         unsigned int        sub_addr_count;7 L9 B; o: B& n' O5 P: Y- z# S1 r# {
  12.         unsigned char*        e2prom_cmd_data;! I, R1 `6 s% L& `
  13.         unsigned int        data_count;4 {( J1 b3 W3 k; w3 I0 w- J% |
  14. } e2prom_s_cmd;, q+ I. X/ C4 v

  15. 2 ^. `7 d! `, @8 ]2 c/ Z: j3 E$ F
  16. #define E2PROM_CMD_READ 1. C  f2 k$ }5 a% `# J
  17. #define E2PROM_CMD_WRITE 2
    / m6 {  T/ b* ]& L5 o4 `2 m: ~4 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! L+ H2 y" v; {: h" ^
  19. 4 j( l8 e& ]% ?6 f- a: [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & j9 O% s0 e6 D2 [
  21. {
    8 E* ?: t4 n/ i7 V! K5 ~
  22.         int fd, ret;& Z% y# h6 O/ z- y, Q
  23.         e2prom_s_cmd arg;
    1 n6 j0 k# N1 c# H6 D. J+ M
  24.         unsigned char buf[0x18];
    & w0 k+ |+ g& w% U7 w$ c( n. J

  25. 6 A6 i- {4 C1 W* H- M+ u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 u  d& ], b. S- c
  27.         if (fd  < 0) {! `7 X2 v  n0 o* l# c2 M0 R. [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 s$ Q3 R, ?9 R- p
  29.                 return -1;6 v& @8 `  w! W7 ~# ]
  30.         }7 N+ W( ^' p! M
  31.         arg.sub_addr_count      = 2;
    5 {) k8 }3 A( H
  32.         arg.data_count          = 0x18;* N5 \* d5 t9 z8 i
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " N+ l9 E4 C: X' ?, y" V! i$ `
  34.         arg.e2prom_cmd_data     = buf;6 p* X) b( s) d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ n) [3 f$ F# ^2 P8 M
  36.         if (ret != 0) {) |! x" s" @% k2 G: E; i7 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . `1 W+ L" P7 I0 A5 @5 D
  38.                 return -1;7 F  A# e; p' V0 b' B/ q8 K# n1 b
  39.         }
    $ ]  V* i/ O3 C* W0 E! F7 I8 w# n
  40.         memcpy(mac, buf, 6);. Q# M+ \6 T* O
  41.         memcpy(stbid, &buf[6], 18);( k( K( o) Z( J5 A7 [5 Z# r
  42.         stbid[18] = '\0';- {4 |+ [+ d  b" f& ?8 Z+ \

  43. " u4 |2 q8 r, n0 I# t. y
  44.         return 0;
      ?/ J. ^9 \% B8 Z7 N
  45. }
    ) P8 Z) ^7 v1 F( H1 j

  46. 8 k5 N$ s$ _7 l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 R4 n$ L5 Z6 v9 A9 o! T$ h- p" Y
  48. {1 l# Y3 O. C. l6 y( i
  49.         int fd, ret;1 C* a  Y+ u% v1 [, i
  50.         e2prom_s_cmd arg;  n9 s4 j& `$ T4 H9 t/ {& |  h
  51.         unsigned char buf[0x18];* w+ o6 l; W" ^! V; q& d5 X

  52. # _- {! r1 }! }; k# d5 D
  53.         memcpy(buf, mac, 6);6 q  O; I7 p5 Z
  54.         memcpy(&buf[6], stbid, 18);
    + |3 m8 Z2 f  c6 p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    - L& F5 t. b' W0 U
  56.         if (fd  < 0) {
    ( g  Q. x0 }8 L6 v9 z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);! B7 `) [- ^; ^
  58.                 return -1;& t3 A6 Z5 o1 e1 q2 W, }; I
  59.         }( o) h/ ^3 I/ ^& N; L4 ?4 Q. `; `% E
  60.         arg.sub_addr_count      = 2;
    & _/ V5 y8 y& p: I3 V
  61.         arg.data_count          = 0x18;
    * B/ }3 l& k) I/ f: h9 }6 r. ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : M6 S( [* E. k
  63.         arg.e2prom_cmd_data     = buf;2 g' @; o$ g9 n  A9 l
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" a& d/ W4 m. v
  65.         if (ret != 0) {
    " M( G1 \: P% U4 i" V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 e2 P% R3 M2 ^, n
  67.                 return -1;; l& s! s) P: ]5 G2 L# b# @: y
  68.         }; c5 O$ }0 v% g

  69. 7 Z$ \( g& C8 L
  70.         return 0;
    7 [/ E2 m) M1 K6 m' H
  71. }, w  k7 |. ^# m# m

  72. + J: G' ]* j. `& H
  73. int main()9 r( Z5 N2 _+ V7 k+ J, c
  74. {
    . {1 G3 T( v5 R+ ?
  75.         char c;/ h4 R$ O/ k: P( s, ^- j* |! r9 g: P
  76.         int i, macs[6];
    2 }' ^8 ?0 p$ \% h, C; \$ {
  77.         unsigned char mac[6];
    # W! c* }# x7 [1 X/ ]% A, A$ w
  78.         unsigned char stbid[256];
    ( c" M& C& d$ n7 ]$ H2 C8 K

  79. / H* \; Y! I1 y0 \; b) N
  80.         if (readparam(mac, stbid) < 0)' Y0 \% a% R  Q& c. v; ^" f
  81.                 return 1;
    1 e! B/ T0 Y0 M, t1 @* W
  82. " X" x! U  I. O' b1 n
  83.         printf("Current parameters: \n");
    * v" t3 r) ?: b* {! ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ l7 J" q* N7 k7 K$ g- y
  85.         printf("  STBID: %s\n", stbid);
    & p! P) r% H3 ~$ S! j9 m
  86.        
    " j/ `* I% O5 a. y7 L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- u1 W, x5 Z* w* h& G  ?" ^; w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% i/ ~+ b. [7 ~3 J5 B
  89.                 printf("Input MAC error\n");
    " P5 W& }$ _7 W& o
  90.                 return 1;
    ) t' T& {8 a5 C' d7 e' o" Q: }
  91.         }
    / I. j% m0 X9 \% m1 L' V7 W$ [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' I2 E5 ^& c. P, i0 x7 a
  93.         printf("\nPlease input new STBID: ");
    ( i3 B  X) g: q2 {& s5 {+ f: S
  94.         scanf("%s", stbid);
    ! _7 D# d0 g8 _+ g: I+ q
  95.         if (strlen(stbid) != 18) {: r6 A. W: A) K# G4 X2 B/ o6 o
  96.                 printf("Invalid stbid\n");
    ( _: ?4 q3 s6 t: Y
  97.                 return 1;$ F4 M1 Y) K! S' |# Y* E
  98.         }
    2 X& \# N- B2 ?4 j4 {) f) }% ~
  99.         printf("\nNew parameters: \n");- _% C* @2 y: v& Y; z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 p  L4 r# e; v1 Y
  101.         printf("  STBID: %s\n", stbid);; b$ F$ s% \, _' u; b- I
  102. 6 I5 @1 J, r* H5 G7 U5 b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . u2 `: ~, t4 A7 v# z, R+ @
  104.         for (;;) {9 Z- u3 p6 {. ?7 v5 x
  105.                 c = getchar();
    1 h+ R3 F3 o4 U. `1 m* T4 f# i* Q" A
  106.                 if (c == 'y' || c == 'Y')
    4 H( s0 I& D' w; I4 M3 a$ U9 Q
  107.                         break;
    9 t6 b1 v) S6 H/ |3 W
  108.                 if (c == 'n' || c == 'N') {
    + Y$ Q7 d3 u+ s
  109.                         printf("\nAborted.\n");, f  \& N( f5 R# j  S
  110.                         return 1;
    , t- H  w2 l/ k7 J' f
  111.                 }( |: t3 \3 z! t. g4 Q
  112.         }
    . c# O* C; m9 p
  113.         if (writeparam(mac, stbid) == 0) $ z: ]! _' j( I3 m# X
  114.                 printf("Parameters changed.\n");# a1 L" m8 b  ?0 `

  115. / {! l& g" n7 h7 S8 l5 _4 [8 {
  116.         return 0;
    & o, E5 x: V6 t/ w
  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 0 M" I: ]& j1 R6 b8 J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ s' P9 A7 l0 Y/ i; E" M8 e
你用的编译命令行格式是什么?) F. y* M& U, W' E
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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