查看: 16318|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + ?% X) `! ^! C/ S7 l, O+ f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 y" i+ {2 [' t9 `0 T4 Q  X0 W5 _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) @7 i9 b; d$ d# }9 gusage: himr <address> <value>. sample: himr 0x80040000 0x0/ h- l4 k, N: h9 b9 J7 b$ M

( x& h( U0 {8 \0 h
3 A( l. E* ^* h% g不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; ^  t9 w  x4 {; _4 p
6 c) [+ I+ s) P( s+ Q
补充内容 (2012-3-8 09:42):
4 \- y, P/ o0 p! K3 M, @# f9 |  U8 ~http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- Y$ Z5 H9 ^% ^& G. B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 s5 i  a- `: x

0 [- V' ]3 D( p, K/ Ahimr <address> <value>. sample: himr 0x80040000 0x0! m( _! Z3 F: {: w- ^1 L, v3 g) C
7 J9 g0 n. O" m8 }7 U
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ l; e; ]9 k6 d0 i8 Ohimr 0x80040000 0x00
2 |9 H6 n8 o8 m+ w. }# P+ |. e; t, thimr 0x80040001 0x11
6 D" Q2 i- [# S  c8 hhimr 0x80040002 0x22+ }7 b' c- M) S3 N
himr 0x80040003 0x331 W+ f: e( k5 h+ f' E! G  d
himr 0x80040004 0x44
+ H0 d2 x, z6 t; {/ ~7 Y  H/ Xhimr 0x80040005 0x55' b3 U4 |/ \( T6 h# X* U
$ l" ?! @8 c, {" {* K) i4 N
SN也是类似。
8 o  U' i; h" Q0 O6 j' E/ f1 ]
5 z6 ~; o2 H2 s. I1 c, U; [! S+ b现在主要是,谁告诉我们MAC和SN的地址?* n5 g+ d) Y4 U; E2 o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 K6 e* x) W3 Y* N0 [9 r: Q' M# ?
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 t; J' ]+ t3 `
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & N# n" X8 b4 ?0 R! X' H* w, F# d

9 g5 X8 ~: G/ u7 m  `2 r修改的代码早有了。到今天不会编译。
, c8 M% ]6 U# F7 i; O0 F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # `' b/ y6 `+ ^% e& t
  2. #include <malloc.h>5 S! d+ m. e; O+ R* m5 e
  3. #include <sys/types.h>1 P4 O# s' F3 T& U
  4. #include <sys/stat.h>- t) @. g: f  `0 I% `
  5. #include <sys/ioctl.h>3 Q0 P3 O5 \1 @+ V9 H4 ~% f
  6. #include <stdio.h>/ j) J* ?( p2 T# U+ r5 ?
  7. #include <string.h>
    & I1 a; J! Z9 r1 a: T9 ?

  8. ' e+ ?: X' J- e5 d2 s, b/ h/ O3 z
  9. typedef struct {
    . w7 \# c( p: r1 r5 Z
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( D# f6 f* W4 j1 s, S- F
  11.         unsigned int        sub_addr_count;
    ) U; G# T& h. q$ ?' e' ~
  12.         unsigned char*        e2prom_cmd_data;+ A& z3 r# w" u% \& Q9 b$ g
  13.         unsigned int        data_count;
    3 i, W4 @# L" {
  14. } e2prom_s_cmd;1 e& L. d0 `$ G
  15.   P% V* u/ [' i4 ^2 @4 T
  16. #define E2PROM_CMD_READ 1
    , w+ W+ B2 Y  W: O3 B
  17. #define E2PROM_CMD_WRITE 2' s! M+ W. T" ]# j" f0 `
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 C. q; g9 c) {1 M. g
  19. 3 f+ A! Z, v7 _2 ]. R4 @: }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" N" {2 w' x! T/ Z, W1 G
  21. {+ ?$ v( M' u8 U1 u
  22.         int fd, ret;
    2 U$ g" ?! S3 W8 v# c
  23.         e2prom_s_cmd arg;2 E; H; N6 B) S# v8 M* {2 T
  24.         unsigned char buf[0x18];+ p" J0 F2 `- v  J( `" a

  25. ' C6 `8 i0 ^! z7 k" Z2 Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " N1 f0 R2 s. `  I
  27.         if (fd  < 0) {
    4 c4 X, `3 k1 V/ N/ i5 K  B5 o" J2 O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( u" k! X0 i8 W) D' W! }7 u
  29.                 return -1;
    . R) i9 K) v% z1 t
  30.         }
    4 ^! `% J) ~+ E9 w  W
  31.         arg.sub_addr_count      = 2;
    ! r# n: w/ B7 @; h; C. [8 r
  32.         arg.data_count          = 0x18;
    ! m8 U) I# T1 J2 N/ O
  33.         arg.e2prom_cmd_sub_addr = 0x290;0 ~2 Q1 ~. ^/ u# H4 e
  34.         arg.e2prom_cmd_data     = buf;
    8 q0 X3 |" U: B" p0 g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) U9 M% I+ Y0 ]' e4 ~# h* Y
  36.         if (ret != 0) {0 t6 j# k; D( d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 ~% U9 b- u( l" ?( H' f- `# a2 q
  38.                 return -1;5 i- l8 V( w/ B" K
  39.         }
    $ Y4 i0 L) @% F5 S: x
  40.         memcpy(mac, buf, 6);
    - H) W  {" S8 ^3 T1 {* M; v
  41.         memcpy(stbid, &buf[6], 18);7 V( [7 F5 l& a1 t0 v
  42.         stbid[18] = '\0';, D6 e3 u% Z! N( R7 J
  43. ' Y3 n8 V# \8 {, J
  44.         return 0;
    + r% v; h* Q. F8 z
  45. }' M- g; P/ N/ t) ^
  46. & G) C6 P4 N, ~! ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 a1 E( H, `. a+ I. h1 N
  48. {
    1 ^" l$ }' T" g' J: @; M" k' q
  49.         int fd, ret;
    9 @& }0 x  ^  a1 m! u( p. ]
  50.         e2prom_s_cmd arg;
    , U) h5 ~( h  }. O
  51.         unsigned char buf[0x18];3 v& [2 x% B. Y+ H" i  l

  52. 0 f+ p! W  |3 V; ?, Q
  53.         memcpy(buf, mac, 6);
    . T# Y4 T* w% f) D8 v/ B
  54.         memcpy(&buf[6], stbid, 18);
    " x5 S' P! X/ f0 v2 t9 @. A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* q6 a, L* C) ~( W0 _% F- R
  56.         if (fd  < 0) {
    : |" Z- I% T2 U4 z; w4 z( f2 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ `( D6 Q6 X" l9 J
  58.                 return -1;
    : r8 K$ l% _6 P  G( q+ A8 H: V
  59.         }1 B) n7 H$ l% t. H$ w# G( c
  60.         arg.sub_addr_count      = 2;% v& C8 \0 P/ ^
  61.         arg.data_count          = 0x18;
    5 i- _0 f$ L7 z
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 L0 s/ o- |# M5 K. M% q
  63.         arg.e2prom_cmd_data     = buf;
    8 D; ^8 r( n. M) j& q. U6 }7 n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- v' Q: F* t2 D' ^" w
  65.         if (ret != 0) {
    ; K) \7 ^, M* e) V# H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 i, ?+ _; O, }5 Z& V+ `
  67.                 return -1;" f0 Q, q- e3 S. v
  68.         }
    ! B  q) B3 \2 k2 m2 z

  69. 6 m/ X, c! G" X6 B9 Q3 V$ q
  70.         return 0;
    ; U  c9 u0 w' R: R! O
  71. }1 Y1 ?( E/ j$ U' @3 F) B
  72. 2 S2 _4 Z$ j" W% S2 B' N, U: X
  73. int main()$ Z' k: m" z; ^
  74. {
    ( s* k9 s% H' X0 K& {6 J8 V
  75.         char c;
    4 W. p1 I4 B( U. a9 q$ ]! J* B- W1 S
  76.         int i, macs[6];
    " b% l0 D4 S$ U( I+ T
  77.         unsigned char mac[6];, j7 r6 V, ~7 y" ]4 m0 }9 A' `
  78.         unsigned char stbid[256];( f9 m, l6 g4 i/ G
  79. 9 {  _! {# ~* t5 o
  80.         if (readparam(mac, stbid) < 0)
    . T- k1 I2 Z, V) y( N. Z
  81.                 return 1;
    & d2 Q# j5 X/ s( Q! h/ d, j* G
  82. 3 `2 ^7 H! u! v# Y* V1 T/ O" {7 G
  83.         printf("Current parameters: \n");
    ! I9 ~. _4 m6 K( a- a( b
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % M+ o# A7 L% S2 B: ~" F
  85.         printf("  STBID: %s\n", stbid);
    - |6 T8 o) q& e
  86.         - l+ ]9 s; S  L6 |5 G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % H6 u  J' a: U! [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * h9 D! @% z+ c& r4 {9 J/ e) T8 w
  89.                 printf("Input MAC error\n");
    1 r' ~" Y  |- k6 ^. I
  90.                 return 1;5 w/ \+ C0 T+ K1 V& P. I# p
  91.         }7 U* ?, k& C+ x: B5 l; K% a4 i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 o: ^. f2 r/ j( r8 j
  93.         printf("\nPlease input new STBID: ");
    2 H. f. I4 f1 X; T; r" w) d
  94.         scanf("%s", stbid);, d2 D! u1 _  X- V! A
  95.         if (strlen(stbid) != 18) {
    2 I- Z7 o0 `; i9 `) [
  96.                 printf("Invalid stbid\n");
    3 t9 s' n4 |0 ]% B
  97.                 return 1;8 C1 C* x. ?) w  O4 G. W( D1 J9 I
  98.         }  P5 F& B2 P2 q9 H% q
  99.         printf("\nNew parameters: \n");) \) B' q: H* \; K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 G8 p3 H$ O. O* v
  101.         printf("  STBID: %s\n", stbid);) _+ i6 K- H$ d$ ~* l, i
  102. 1 C/ L. Y/ v+ O, h  |
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 @- Q, l2 m" k  J- x5 J5 j
  104.         for (;;) {$ w  L' {- F) a, D. C0 [. ?
  105.                 c = getchar();
    8 [! j( m+ j2 V1 E
  106.                 if (c == 'y' || c == 'Y')
    5 n0 r* R7 ], E) z7 t! u7 K2 N$ _
  107.                         break;6 n+ L4 B; ]* }0 F
  108.                 if (c == 'n' || c == 'N') {& M: }, N7 N. q8 G7 L
  109.                         printf("\nAborted.\n");
    8 I. a2 m5 s# b8 j+ O
  110.                         return 1;% l2 G4 b( J$ o7 q& |5 [' d; Y/ e6 s
  111.                 }1 o7 F# m5 J7 ]5 O) m
  112.         }
    $ {. {, Y5 w3 A; d
  113.         if (writeparam(mac, stbid) == 0) ( T# _. x& O( q+ Y+ u. R: v
  114.                 printf("Parameters changed.\n");
    : c' d' c" ?- p& v8 v# \8 L3 W; O

  115. 6 D& e  q6 O! }- P- }9 j5 X! u
  116.         return 0;  }2 @, z: t# K* u
  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
9 y: `) ~; \. t1 M1 Y, H. B( l: @在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" ^2 r7 s2 H- [
你用的编译命令行格式是什么?1 w% g6 G$ O+ q! C: [' Y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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