查看: 15918|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 p' k6 }" P7 w4 t: S9 b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 F6 b( f3 e6 H' _0 p. k0 k" N6 k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' f, X5 ~9 }& B# C4 ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0% @" D, ]5 P4 B% \' C* h. L% o

/ v$ g. p! w9 S+ d- ]* q+ \
0 Y, H- ~) ?7 r+ U( Q. W不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) k  k+ k- B9 {% [. f+ a0 A" b
- O& Y9 l( E& J5 D7 {
补充内容 (2012-3-8 09:42):7 B, b0 u$ y! i  o6 m9 Y9 `
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ l. C5 d5 V7 J3 ?) @2 [这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
6 P$ V8 b9 L, z( E( D; e4 U0 J& A, O. C/ I8 W* {0 P$ \
himr <address> <value>. sample: himr 0x80040000 0x0
9 q, i2 e9 |, r% H6 [; @5 L( F2 w
7 A& s6 c  B- \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) f9 f1 k7 O3 k! j% M; p4 R3 Z9 G0 C
himr 0x80040000 0x00
6 N" ]* R9 P4 R3 ]  A1 Y' m& khimr 0x80040001 0x11* b* x. W1 ?! m# e( @1 C  R- w# T
himr 0x80040002 0x221 R% c$ v1 L3 x$ D: @! f
himr 0x80040003 0x333 f0 n& C- D8 z
himr 0x80040004 0x44
: G8 e9 e" r  Z# phimr 0x80040005 0x55! c; [6 S+ }5 g; {- z1 ]4 [
" R# h: G8 Y& I" @1 |$ N0 R, c% \
SN也是类似。
5 M+ @; V1 X3 Z: }5 R! Y2 t5 k8 t) J+ Q  t" T1 }
现在主要是,谁告诉我们MAC和SN的地址?
1 c( _3 M5 D* V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ R- e' r/ l6 M2 _一直想找到运程修改MAC和SN的办法,苦于无解啊
3 q; R! V4 \3 A/ _
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ r% J/ o. m. }7 w" R) K* e* \$ g; j6 U2 U4 p# Y* {
修改的代码早有了。到今天不会编译。
4 H9 _, z4 R0 \) W) j- R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  I8 _/ e% p1 A  @& A
  2. #include <malloc.h>
    4 h# T- p6 `6 I! [* n! X  g# t5 W
  3. #include <sys/types.h>
    + t: b# |8 S" J" {4 j
  4. #include <sys/stat.h>  n6 M! W* z0 h3 n, f5 g" h4 l
  5. #include <sys/ioctl.h>
    7 c$ E3 v6 s, L$ P" @# v) n. m
  6. #include <stdio.h>
    " K  O- A) s) Z+ N& P; H% h
  7. #include <string.h>8 |* q' O& v& K7 U$ W/ I' y

  8. ! l, ~+ a* C+ m: Z7 K( j; w8 T
  9. typedef struct {
    & c. _6 c( W: A7 @/ m
  10.         unsigned int        e2prom_cmd_sub_addr;( P. f# m$ h9 Q6 k8 q
  11.         unsigned int        sub_addr_count;
    3 k  L5 ^* ~6 f. e1 U8 l1 w$ q
  12.         unsigned char*        e2prom_cmd_data;
    / f. i* z0 l; p1 G4 ~0 y
  13.         unsigned int        data_count;
    1 R6 K; d' `0 o  A) S7 M
  14. } e2prom_s_cmd;/ O# H# H. w/ D4 m6 U

  15. ! l( W/ N9 w$ D# W
  16. #define E2PROM_CMD_READ 1
    6 t/ s/ a3 g* M. ~( S- C
  17. #define E2PROM_CMD_WRITE 2
    & ?" d, U: @& b) z  c$ N- |; `3 D
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 _; t+ M) A4 S$ q& u/ i) Y! A$ M

  19. ) m5 C1 P! v1 z  r" Y7 p. P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% i' W+ Q. [7 h6 U
  21. {( N5 w; c5 R0 ~6 p
  22.         int fd, ret;8 B8 }5 @5 i6 V0 @+ O
  23.         e2prom_s_cmd arg;
    0 z& P- b: m, J" z/ M. ^; y  K' C, M
  24.         unsigned char buf[0x18];
    9 f8 F2 ^, l4 R$ s& I
  25. # K: ~) f; r* r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 |  |2 c- Z, H) x. U8 Q
  27.         if (fd  < 0) {- e1 o# u: n8 F, O% y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);! L: S8 N  L+ E0 b5 n& m. f: d
  29.                 return -1;
    , k3 ]7 u/ `# Y' j) @$ H1 J3 E
  30.         }7 A8 X3 M8 H! R3 F1 ?# c. t! B
  31.         arg.sub_addr_count      = 2;
    . m/ l2 T: y/ o) y8 q  n& C
  32.         arg.data_count          = 0x18;3 S8 A/ d; r3 O6 r/ ^% T: z$ ^2 W
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , S+ M! {/ {  A+ K$ T9 k7 U
  34.         arg.e2prom_cmd_data     = buf;9 g+ `& f1 l7 c8 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ i3 x1 {' k2 K. w
  36.         if (ret != 0) {
    0 A9 e9 _+ i% j+ |2 Z0 B7 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- m9 |; B9 r. k% T* l& k
  38.                 return -1;* m. V+ s4 U6 v# W
  39.         }* a8 _( \- S% e! u! k8 a
  40.         memcpy(mac, buf, 6);  a7 `( O5 p; w
  41.         memcpy(stbid, &buf[6], 18);
    5 x5 Z; |0 k9 [* q) e' M1 ~
  42.         stbid[18] = '\0';
    + ]1 d: e$ m( J4 A1 d+ A
  43. $ _8 d9 Y3 _/ B+ V/ |6 u
  44.         return 0;" Q  ]. }3 `: s. r: f
  45. }  y! P; W" M' U
  46. + a+ N) V, Y: L7 @* f: H6 [! z
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ F& F* H' c- a
  48. {
    % ]. D/ z2 N- a8 y8 p
  49.         int fd, ret;
    , k/ y; k/ C" z8 c3 J9 {0 v( `
  50.         e2prom_s_cmd arg;
    " U( @9 \  m* S* q* S5 s
  51.         unsigned char buf[0x18];7 ?4 ^- B8 f% @3 t2 D9 u9 \
  52. $ F! ~1 h# O* E! \3 B$ m
  53.         memcpy(buf, mac, 6);
    & _" y" o5 v. n$ `5 p
  54.         memcpy(&buf[6], stbid, 18);2 C/ l  z$ h  }( c: O, D0 O- A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& @( d9 c; H, g/ l
  56.         if (fd  < 0) {( U* n. Z$ ?- v0 c4 J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' @- [5 F/ d: n
  58.                 return -1;
    , Z% q1 J. J/ \7 _2 F4 [1 O$ y5 n
  59.         }
    + H, j/ a, q) Q* U, X# J0 {/ t
  60.         arg.sub_addr_count      = 2;7 j4 V9 x& t, u; i7 G
  61.         arg.data_count          = 0x18;& h" T! c. r( w0 T, Y: g, D, ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;' {6 m6 K+ R9 c8 ?
  63.         arg.e2prom_cmd_data     = buf;
    % B% P% T8 X3 M% _1 ?  v, J0 U. k2 w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % `: D: W8 `4 b, Q
  65.         if (ret != 0) {
    % g/ V' L& v7 w
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( |. m  i4 F# r
  67.                 return -1;
    - w! Z9 s" ~0 H3 J
  68.         }
    4 \9 ~/ g0 s- x8 q) U  ^. W3 M, f
  69. 4 I: `4 d. h& t) J5 Q- K7 a* q; l3 o
  70.         return 0;
    + G+ ^) W4 g3 {! b# e
  71. }0 @' w& d. I. P2 T3 t
  72. - ^, [6 S5 X- d
  73. int main()
    & E% R6 ~& x$ P
  74. {
    - c' m& G) e4 U
  75.         char c;( m! u! p* q# v
  76.         int i, macs[6];
    5 z* Z3 [: [; X) D: ~1 k/ ?& R6 R
  77.         unsigned char mac[6];
    & |1 i6 N3 d& i- z, y5 U! t
  78.         unsigned char stbid[256];* j9 y, U- t2 q* x9 ~

  79. 5 Y" k9 `3 A8 \6 h. G
  80.         if (readparam(mac, stbid) < 0)! y2 L0 Y, {- z
  81.                 return 1;8 R/ p" ]: t8 v8 I9 y; K

  82. + U) i* V9 z0 z/ x
  83.         printf("Current parameters: \n");* y/ r% d$ F: C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 ?6 \& ^: d3 ^
  85.         printf("  STBID: %s\n", stbid);
    8 V8 f$ o) k$ @* Q# ], J# Y# V
  86.         ! [: m) o  ]5 P& i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! M( v4 M! {2 |: J" o& M5 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , i* Q* G" O5 a- U, n
  89.                 printf("Input MAC error\n");& t- i' ?' x5 B* X
  90.                 return 1;% N8 ?" A: S6 A" \9 I
  91.         }
    9 \! R' j5 B& B6 L- E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " u' Y/ b2 f8 A# f1 f# q7 _$ g: O
  93.         printf("\nPlease input new STBID: ");
    / ]' r. K+ P' M7 j
  94.         scanf("%s", stbid);
    8 ^0 [# y8 R2 ^: B
  95.         if (strlen(stbid) != 18) {1 h2 s3 k0 w. F
  96.                 printf("Invalid stbid\n");
    / Z1 V  A# e' M
  97.                 return 1;
    1 n4 o. j2 A/ r  V% a0 N; m
  98.         }( q+ J2 T) S9 C) u  n& j- X/ |- n: o
  99.         printf("\nNew parameters: \n");: x  n6 e* K' M1 i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' r) v# w  v. }: A+ V$ ?2 H
  101.         printf("  STBID: %s\n", stbid);
    . a8 a! I5 `) K, n
  102. 3 G" X& k* [) X
  103.         printf("\nDo you want to change paramemters? (y/N) ");! l+ \: v3 |7 a, |
  104.         for (;;) {2 z6 S6 Q+ N3 d- d
  105.                 c = getchar();" w3 z- D, K7 H* k( w! U8 M8 `% D
  106.                 if (c == 'y' || c == 'Y')( j  R& S% Z& A
  107.                         break;# V9 Q9 E8 P: z- x4 G
  108.                 if (c == 'n' || c == 'N') {5 K0 N3 k5 \$ r: O
  109.                         printf("\nAborted.\n");. W& X: o% B% _) Z
  110.                         return 1;
    3 q* u0 c1 [; h  @$ B
  111.                 }
    0 D0 Y/ T. M, d4 Z
  112.         }
    * A6 W8 a/ u, Q# ^
  113.         if (writeparam(mac, stbid) == 0) * T: R* J. h& j+ R! h# \/ F
  114.                 printf("Parameters changed.\n");
    # y% X5 e0 i6 F) N5 h0 D; D

  115. ! D+ ?* [2 G0 t9 R1 z- E
  116.         return 0;
    % q# H; Y; v' P' |1 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 . K+ E+ Q* l4 u" T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 M$ [$ i1 ~, F$ D& E7 `# M1 w
你用的编译命令行格式是什么?
$ H8 M& Y# y' G5 y% g$ z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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