查看: 17410|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; H5 }, ?' |4 q/ n! X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 ^5 R9 p0 e9 e7 s3 W. G3 Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 n& O2 ]3 b! N& |; v* }  F
usage: himr <address> <value>. sample: himr 0x80040000 0x0# B' `$ Y; ]" `; V  {2 ]. [
$ D* k+ B1 w1 l

! p  l: |  i5 z  e/ {2 H不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: y( v8 G/ D7 R6 E

5 Q7 d' A) z3 x补充内容 (2012-3-8 09:42):
2 V& Y$ e0 R% L. Mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( S+ z: z. m. \) D
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
! z% y: }# d* M* a! A1 X0 X
: v7 O4 i, K3 P+ qhimr <address> <value>. sample: himr 0x80040000 0x0# z) ]. b, }9 S* T
' D* d: O4 u, D, C, K, W( }
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" y0 X9 D7 f1 \2 s5 l( h$ rhimr 0x80040000 0x00
0 d6 E* Y6 j5 x  F/ yhimr 0x80040001 0x11' |) ?& Q* |8 m. M) i0 |
himr 0x80040002 0x227 M& }3 ~8 j7 H! o
himr 0x80040003 0x33' s+ v- _7 a. M4 ]  v
himr 0x80040004 0x44" P. G/ a* n! d6 t" P" n* t
himr 0x80040005 0x55
  z  M( B) |& m+ }- O9 ?/ O) Q, e
6 R1 c  o/ q3 t( _/ `SN也是类似。
" q7 ^( s" u7 H; u* _! }# \' K0 `; o1 n6 w$ ~5 q
现在主要是,谁告诉我们MAC和SN的地址?; Q5 {0 H7 Y5 ^7 j6 B* O% Y$ N( S
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  N$ W( ~1 H% ^& J9 Z; ^9 S# q一直想找到运程修改MAC和SN的办法,苦于无解啊

' B; A1 }9 U  _( ^8 A6 `# r源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- q3 ?( d+ R+ _4 \4 A: W7 a% ]& [" K. T/ u) q4 |
修改的代码早有了。到今天不会编译。
+ k' a# K* e  L' ^9 s需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 i4 L5 `; x( W, {5 v9 k0 P
  2. #include <malloc.h>
    4 J2 I, y/ @3 V; ?1 h
  3. #include <sys/types.h>
    ' j5 M. U7 S. k# V9 T+ ^
  4. #include <sys/stat.h>( v! Y* b1 o. F+ D
  5. #include <sys/ioctl.h>
    4 Y% T3 k9 b9 M- _, N
  6. #include <stdio.h>" [) j; V8 ~0 _* R% ~; a" r& |
  7. #include <string.h>! f7 C! q7 K8 T0 L0 l
  8. * h4 g) e4 _2 F8 u
  9. typedef struct {
    4 o' L! y# R3 B+ L2 T; X1 `  T6 o, A
  10.         unsigned int        e2prom_cmd_sub_addr;
    / d. n3 }9 r4 b( X4 X
  11.         unsigned int        sub_addr_count;# S/ i6 t- A: Q2 x6 r& ^
  12.         unsigned char*        e2prom_cmd_data;1 C6 E) ~# f% ~
  13.         unsigned int        data_count;1 z; g, `" J6 `# j9 S5 x; r9 Z6 G
  14. } e2prom_s_cmd;
      |/ n2 w7 F/ ]- B  `: V" K  |7 W6 d
  15. ' }$ B" b' o) f8 N' x5 w) V) M2 O
  16. #define E2PROM_CMD_READ 1% s& L7 l- R% z9 B% w& t' c
  17. #define E2PROM_CMD_WRITE 29 t' d  }' s) L4 d( ~! E  u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 C3 ^+ L# k6 |  G- D9 b

  19. 6 a4 x% y8 R. u
  20. static int readparam(unsigned char *mac, unsigned char *stbid); ?) v4 d* e8 W
  21. {
    1 V7 A! C0 v" x6 @  B
  22.         int fd, ret;, F4 `0 D4 ^# C7 E6 A& ]
  23.         e2prom_s_cmd arg;
    ; f- v6 K, }8 W' T" Y
  24.         unsigned char buf[0x18];
    " P6 d9 q" h( P$ a
  25. 5 D" \" B( G% ?+ G, G8 h9 }' M% o) N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 b1 r( I3 n2 Z! ?6 x
  27.         if (fd  < 0) {
    5 x4 d/ z7 B; ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * l9 g& ^, h9 ~2 b
  29.                 return -1;
    2 t9 @9 L% Q5 A" P
  30.         }
    , U7 {& j. Z3 S& |2 u' p
  31.         arg.sub_addr_count      = 2;
    ' d( u0 ^: z& D' A3 b- K
  32.         arg.data_count          = 0x18;) Q) P. h% O  ^  g/ {" R8 [; `
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 p$ {' I" h: o8 K5 Y' D2 B* l: n
  34.         arg.e2prom_cmd_data     = buf;
    1 t) a* O& y& o& \% L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * i: P5 R# n$ N+ M( J5 p& U
  36.         if (ret != 0) {6 Z9 U8 |% D$ u6 _3 p$ c# U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( }8 O# h' |0 P/ ?
  38.                 return -1;
    ) t, z# U# S( K& v' F( K
  39.         }
    $ g% s# L# j/ P3 p  p( {; v& B
  40.         memcpy(mac, buf, 6);
      \! ]& v) o2 b) M
  41.         memcpy(stbid, &buf[6], 18);4 t( z7 [  B$ Q( J
  42.         stbid[18] = '\0';
    ; w  i5 `. V$ f- r

  43. $ f+ c& |; ]3 [
  44.         return 0;
    2 m! z# |& h6 o* G9 M7 `. Q
  45. }; _2 s# \# D$ |$ z5 L) j

  46. ' _1 t9 _6 L/ \% j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # E2 Z" E" n; ?) b- v" N9 L
  48. {+ z0 l6 Y) V+ r/ c1 C5 V: F
  49.         int fd, ret;
    / c6 N- x# R* B
  50.         e2prom_s_cmd arg;
    9 d& W6 T5 R" k6 p$ T/ v& o7 h
  51.         unsigned char buf[0x18];
    : n- ^: g: c* F* j! k

  52. . G: t& l- ?3 D7 @5 r
  53.         memcpy(buf, mac, 6);
    " v. ^5 M% h+ L- a/ O/ ]
  54.         memcpy(&buf[6], stbid, 18);7 L3 C$ Z6 F1 _- n$ ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 S! R& c: N+ {5 a4 h
  56.         if (fd  < 0) {% o5 P6 b- r8 r4 ]2 N+ c2 h% q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / `  |+ j& b" d0 K4 {+ k! |/ A8 f3 [
  58.                 return -1;4 \1 M* T" F; O! L# m
  59.         }3 \( c- `, J+ w& h2 t6 q
  60.         arg.sub_addr_count      = 2;
    2 w% U8 Z' j% O8 N/ @" `
  61.         arg.data_count          = 0x18;. C5 G+ R4 ]% O* H* s
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 w- k5 u, c; y0 ~' Q
  63.         arg.e2prom_cmd_data     = buf;
    ( g" y! e+ D/ K# z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. N5 H, k( S3 r; o
  65.         if (ret != 0) {
    9 o* V! @0 |' q" Q# N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    $ M5 t' Y5 {# T( F8 c  g
  67.                 return -1;
    - s, ]4 w1 v4 D2 f5 Z6 y  H
  68.         }7 P7 c9 D" `6 E* O) u6 \1 E% S* w
  69. & o4 _% \0 Z! N( y1 y1 ^( ?6 H
  70.         return 0;2 B5 M" n$ j, I6 D" M' Y! g" Q
  71. }. H2 ^) q6 a( H1 a: F8 u
  72. + p  y" J5 l/ i4 z# z, F8 f8 y) R
  73. int main()
    . `6 P$ S3 J3 p; w
  74. {
    0 h* i& _* _) j
  75.         char c;
    ; u, a  f" K9 W4 V+ E8 w
  76.         int i, macs[6];
    " e- A+ Y. `4 a" z/ P4 E; a
  77.         unsigned char mac[6];
    8 i5 w+ C- h8 ^# Y
  78.         unsigned char stbid[256];) S& D4 k3 @9 i1 v: E

  79. , {/ y6 Z" X% v! e3 B$ u/ O
  80.         if (readparam(mac, stbid) < 0), F' `/ E0 k- k$ Q! J8 [2 A
  81.                 return 1;
    9 s5 n1 Q; x% T) z% B( q4 \  }

  82. ( P$ y" K" u* \5 w7 Z6 L
  83.         printf("Current parameters: \n");
    7 M4 Y* f- k6 J- Z0 l' ?; X- F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " _: s' b& f% v4 G
  85.         printf("  STBID: %s\n", stbid);6 d/ c% a* D/ y9 }7 W% M, m0 v
  86.         ! D* {$ ?. S' o2 u; P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 g3 K, M( c8 j& v  @! e( I, o. P) _6 S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) ?# S; q6 v$ J
  89.                 printf("Input MAC error\n");% H) }1 [$ _" Q6 A1 ]/ U
  90.                 return 1;
    6 B2 j" d% M6 s" J- P/ Y4 M  n
  91.         }
    , @9 K8 W' m( y/ u0 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. G% {% t6 W' j5 j- R
  93.         printf("\nPlease input new STBID: ");
    + b1 _% v& \$ e9 G0 \: |
  94.         scanf("%s", stbid);
    : f3 W# M, k" a. b% }; Y& j) f1 G; k3 V
  95.         if (strlen(stbid) != 18) {0 h; P) ~  f( v
  96.                 printf("Invalid stbid\n");
    + g4 q, ], z1 q4 ~# n$ i, F
  97.                 return 1;5 P+ }7 e- Q; a
  98.         }% q+ h# x8 n+ B" z
  99.         printf("\nNew parameters: \n");! p& z: \, g& q1 L& I: B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 d5 R+ _5 V; Q8 f
  101.         printf("  STBID: %s\n", stbid);1 o3 U, `2 _6 N9 t1 Q2 D4 ^, B. X
  102. ( p4 b( a7 _9 m5 R& Z4 y( m- s8 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 `7 l! {7 y0 b2 P
  104.         for (;;) {
    ! ~# O( b3 m" e  H3 |
  105.                 c = getchar();6 K$ v- }: y  t$ e7 w$ I% W/ D3 x
  106.                 if (c == 'y' || c == 'Y')
    $ y( n' l0 F) e3 n5 }7 f
  107.                         break;
    ' _; ~* b( X% m! i* G' M; ]
  108.                 if (c == 'n' || c == 'N') {
    * P- J* x) Y+ a: o7 x) s, w8 J
  109.                         printf("\nAborted.\n");
    $ @- [  Y7 a& g/ n  r. i2 v
  110.                         return 1;
    2 I6 a4 F+ c, b+ a5 u, S6 l
  111.                 }
    ! g6 T1 ]& K( s2 `8 B& i
  112.         }
    . S3 H7 I, }" U
  113.         if (writeparam(mac, stbid) == 0)
    ) I1 x' L+ D) V
  114.                 printf("Parameters changed.\n");7 ~( l% f) C2 y0 B% v7 e4 {7 k) e
  115. % P9 n  w( Y+ L* |+ ]
  116.         return 0;
    ! @8 o. \1 I6 m/ W4 i/ O$ q8 b! s
  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
" k+ b5 v3 c1 K) ?* C7 n7 D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. n% v, G/ l6 @+ R% }
你用的编译命令行格式是什么?& ^) U7 b8 x2 Q* 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客服返回顶部