找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15615|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & s! x- m+ o1 d& I% ?* ?; R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 `: X/ e1 q# i# Y4 p9 o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 Q, s, q% ?( i: L( f; k/ l& Q' s3 L; Eusage: himr <address> <value>. sample: himr 0x80040000 0x0
# }4 w% f  D/ ^2 J( P* q" W6 ~/ F2 V% ~$ k" I5 ?$ U
3 P3 J& [' e1 h; E6 r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?4 R; \: m. T1 Z3 a3 I

$ |8 i# v) P0 K, {补充内容 (2012-3-8 09:42):
6 G+ \0 A) H1 W  }# h# z+ I& r! Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 ]3 u8 [3 X7 v6 o4 ^% D4 o$ m! S: w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。7 Y, Y0 \% E: G6 z

9 d& L: n: U; o/ h$ z) a% mhimr <address> <value>. sample: himr 0x80040000 0x08 I& {+ a* ^: i* q

4 `# O0 X8 o, o- r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 u1 J% r1 X+ N* u! \. ~
himr 0x80040000 0x00
2 ~1 f6 B+ c% H- _) r" z/ |9 ~  ^8 I$ _himr 0x80040001 0x11: @& i; C' Z0 R9 o- B& Y# d) @7 Y6 l
himr 0x80040002 0x22* W% T! g& p' A
himr 0x80040003 0x33$ k/ _9 h& p, w8 g5 ]) p2 G
himr 0x80040004 0x44
3 E2 L8 }8 o9 [/ H5 X; a* d# V5 _' _6 Fhimr 0x80040005 0x55
. d8 o; o" p! m( Y  Z
1 ]8 O& W6 O+ y  h5 y; ZSN也是类似。
& G" ~' m+ G% [! S. l' y5 M5 x! Z/ P7 X8 D% v( C
现在主要是,谁告诉我们MAC和SN的地址?" Y5 |- P% W$ d8 _/ L# M( f/ `7 q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 G* H% J# ]7 t$ {8 ~
一直想找到运程修改MAC和SN的办法,苦于无解啊

# T) W2 X8 Z) o3 k$ Q, o/ ^- {  K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. w6 [& {/ J+ \9 m
8 d5 W+ M- n- J' B/ _4 s3 n修改的代码早有了。到今天不会编译。5 t9 {9 v; C* C5 G9 X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / y# g% o" S: p
  2. #include <malloc.h>  B/ W6 n0 c8 c. A* w. C% c
  3. #include <sys/types.h>
    * D" \" g4 b' R( S% X" o+ V
  4. #include <sys/stat.h>
    $ C$ B- f" X. w& R
  5. #include <sys/ioctl.h>
    . O" w% l8 q5 `6 y
  6. #include <stdio.h>" a! V; w) t0 a$ i
  7. #include <string.h>, a# h; v+ g3 b6 k7 Z2 \/ a
  8. 4 h7 ]- d- `- D8 o. [% g
  9. typedef struct {5 w. [- D& P- t/ \+ x. I0 {
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; d  [* n+ k' N/ n' n
  11.         unsigned int        sub_addr_count;" y6 u* x( d! d, o0 ~0 M
  12.         unsigned char*        e2prom_cmd_data;
    , v4 @! W" A6 @5 C9 J$ K/ A
  13.         unsigned int        data_count;% \2 ?3 d# ?% c5 n' d
  14. } e2prom_s_cmd;8 O7 _" B/ r+ l5 h' c/ U

  15. 1 x, d4 K: r( V6 J5 n; R) v$ ^
  16. #define E2PROM_CMD_READ 1
    5 ~) ]6 H% y, g, w5 r
  17. #define E2PROM_CMD_WRITE 2* o1 J3 D' J+ a4 T& F4 D4 U
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 v# L6 a; G1 J3 \; P
  19. ) K" H3 q$ {: v9 A( ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 p7 j& N0 @' M+ y
  21. {& V; X3 s- k- `7 S8 j9 p
  22.         int fd, ret;  Q) U" `) x% o
  23.         e2prom_s_cmd arg;+ a+ P6 P; B% I1 T
  24.         unsigned char buf[0x18];
    # h6 ^3 B: W+ v# m9 B

  25. ! b5 F2 A& q+ {5 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% l, [. M) q! ^7 C. h5 i2 y
  27.         if (fd  < 0) {2 U! J1 `. z* n: J" g8 g- n5 q: f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ A. g# a# U) s) ~8 i) _  q* j
  29.                 return -1;
    : q8 c0 y% l; i- o' n  C, K$ j- g
  30.         }$ g  M8 N; {; B4 h2 _! c
  31.         arg.sub_addr_count      = 2;
    " w( d: d. F; R- d1 B4 T# q
  32.         arg.data_count          = 0x18;4 O+ ~# y- F8 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; ]# {9 |" W7 \# O# o7 i
  34.         arg.e2prom_cmd_data     = buf;9 h, f; I$ J; i1 ]. z# h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 O6 J" Q/ H# H1 ?
  36.         if (ret != 0) {
    * B4 O- _; m: {2 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) i5 U4 r$ H1 b4 u+ I  ]7 p% Y
  38.                 return -1;9 c# f5 t# P5 p8 p* v' [
  39.         }
      B7 `$ d$ o  a3 o$ W
  40.         memcpy(mac, buf, 6);0 C, B; K4 P* |1 G! l) m4 K) ]7 T
  41.         memcpy(stbid, &buf[6], 18);
    ; ?+ U7 e" J9 r) K0 T
  42.         stbid[18] = '\0';
    + t3 N9 i& V9 {
  43. ' {2 K: y3 J& d9 M
  44.         return 0;
    " @; Z2 K6 g2 a: ^9 Z% K* V
  45. }
    ; i- u( |2 G  i$ P2 v# b* l

  46. 6 p- _3 d1 L9 h% J( B- ]) y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . J) k3 E' k( |1 C+ m, K( a% r' V
  48. {$ Z! j1 g8 V9 c
  49.         int fd, ret;
    $ Q0 J3 N+ ]! }0 g' D5 W/ m4 B
  50.         e2prom_s_cmd arg;
    1 T; A: P) k3 j: |7 x5 c/ u
  51.         unsigned char buf[0x18];. D4 [( V/ B# I8 o# G% e

  52. + Y* R+ k+ R- s! k
  53.         memcpy(buf, mac, 6);
    : l# f) f1 y9 x: B
  54.         memcpy(&buf[6], stbid, 18);* n, w. _8 h3 ]& X% {* Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);8 b1 i) y1 @( `
  56.         if (fd  < 0) {3 W. L3 R# [5 I* r* n" e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / L4 P1 x! F: y0 ]6 p! @" ?% @
  58.                 return -1;
    ( F) o7 [: A( |0 A4 r
  59.         }; `$ i9 R3 Q# j% ^/ l
  60.         arg.sub_addr_count      = 2;
      I) v) B1 M8 n9 {
  61.         arg.data_count          = 0x18;' t, [. H9 x. ~) Q+ o5 f: s5 g
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! d: K1 G) }& J" ]4 N
  63.         arg.e2prom_cmd_data     = buf;8 r1 X! i5 q) O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 i$ G0 J: W3 X
  65.         if (ret != 0) {
    8 M# O# W. g8 h8 J6 W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 r7 y) S/ J- [. e
  67.                 return -1;
    7 n$ l/ N8 w& n3 K2 @& G  j7 }
  68.         }* S3 {, P$ V# e1 ~' n
  69. 8 }. ~& f" w4 j6 A
  70.         return 0;
    5 U4 O& ^2 _* F- k! ~# f
  71. }
    4 _* X3 k  S- l; }) D" a: y
  72. , l+ h2 K: E2 N+ `
  73. int main()
    " R9 S* p& G# A% a6 W1 U( ^) v2 N
  74. {
    # ]; A/ R2 p5 _4 j: ~5 y# i
  75.         char c;
    . U# N. m/ A$ E9 d: h- M0 [
  76.         int i, macs[6];8 U3 m( f7 K" l5 _1 t4 v1 D
  77.         unsigned char mac[6];5 L. v8 E, P/ [* L5 ^- ?2 h0 P
  78.         unsigned char stbid[256];( p) X0 L5 F( w1 l) V9 C
  79. 8 N( H- W1 `: \4 K; M
  80.         if (readparam(mac, stbid) < 0)
    # o/ g5 N& b0 k# J9 Z3 E, C
  81.                 return 1;
    1 C4 G  ]4 m8 L$ s6 z1 J  B

  82. : b2 A7 l6 o$ D0 m- M1 V
  83.         printf("Current parameters: \n");# B6 R, N0 H* v- a2 N  Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 _! j$ j) F, G9 T- R6 N, J5 z
  85.         printf("  STBID: %s\n", stbid);' {' k2 S3 u9 D1 I& [# [6 T$ T8 o. _' D
  86.        
    - E6 |0 I8 T) W3 h/ g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 r3 @+ H/ g; [- k, Q/ B5 D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; z- R2 z# G. m% Z
  89.                 printf("Input MAC error\n");! N4 e- k4 Y! F) V$ n
  90.                 return 1;, a$ X) V% u( R5 Z$ M% D1 C) _
  91.         }
    1 M8 o. D: l" V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];+ Y& D* W2 z! H/ x% Y
  93.         printf("\nPlease input new STBID: ");
    5 P* x5 e7 R. `. j: C* u! G7 w& X% D
  94.         scanf("%s", stbid);0 ^% G- p+ j" K$ H
  95.         if (strlen(stbid) != 18) {
    ! ~  ~# }" v2 K. n4 o
  96.                 printf("Invalid stbid\n");+ `. t% Z8 z  N( L
  97.                 return 1;
    ' \* F' ?$ {6 _! r" J+ u% ^
  98.         }
    8 D9 U( Q% t5 |8 O" i
  99.         printf("\nNew parameters: \n");" }6 k! d0 x9 g6 q5 e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 t% v/ {3 R# E( R7 b5 q& ]( c
  101.         printf("  STBID: %s\n", stbid);
    ! N0 E1 r7 C9 \8 h
  102. - A+ q7 d+ V* @+ c7 _6 m! o
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # d1 g7 k4 i4 r% K
  104.         for (;;) {
    0 h: {' ~* O# R% h7 w
  105.                 c = getchar();5 o/ [2 c7 q6 F5 l' K$ N) p& E
  106.                 if (c == 'y' || c == 'Y')& u$ h: \3 r, A5 K5 l, U. a
  107.                         break;* H0 r+ I4 {  D
  108.                 if (c == 'n' || c == 'N') {+ f9 S6 h' `# w& D8 u$ C
  109.                         printf("\nAborted.\n");; }  v+ t' Z) }
  110.                         return 1;
    6 H& `9 W% T5 n0 n3 m! K5 Z. v
  111.                 }  ?2 P# T2 h9 X% G; _
  112.         }
    ) c* y! v" Y7 w, _. Y
  113.         if (writeparam(mac, stbid) == 0) 2 {( g' D! k& u8 Y+ G7 u7 L% i
  114.                 printf("Parameters changed.\n");
    5 k# w) X- \& }" W% Z& ]4 K* d9 F
  115. 0 I( y& R- R& M0 Z- w: H
  116.         return 0;
    0 J. E/ W. b! T* O
  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 L, A$ h& ^, A/ e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ y! Y$ I$ u( D0 z" N你用的编译命令行格式是什么?& a4 V- Q, _0 t* H1 |1 Q) m/ B3 S
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-18 06:30 , Processed in 0.026752 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表