查看: 16740|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 P. x% a' L& J6 L+ ^" J- H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ m% Q# ?" i# S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ [2 o# x3 G% ?0 ?* Susage: himr <address> <value>. sample: himr 0x80040000 0x0  O/ a5 [4 K5 R7 D. {, ^+ d
% z" ?; D/ K1 d
- l5 T2 `. P* D( M& d& y: R* R
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" k$ }" e1 w+ B  v( N+ v+ h, X, p* M# n7 ~9 P/ N' W
补充内容 (2012-3-8 09:42):
  K$ U1 y# }! }" _" h2 V+ ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; i  Q3 H2 W5 w; E! B' v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 q8 w2 I, f2 ~# r: }! }2 s  c
. A( ?9 S- E+ `$ x& m0 V1 C0 Vhimr <address> <value>. sample: himr 0x80040000 0x0; y( q; Q" K1 U4 B0 R( o6 g, u' u
! E+ X/ ]5 O3 D# }( a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* o: Y( H; l/ |  u: u9 Fhimr 0x80040000 0x004 W' z3 N; o: o3 n" ~9 e' n
himr 0x80040001 0x11% v, h2 y# M9 ]( m; @7 e3 i* U
himr 0x80040002 0x22
  x: ?* G( Z8 E% `) w& vhimr 0x80040003 0x33# U" `3 d" z! n" |9 o6 D% {1 S8 U
himr 0x80040004 0x44$ e- U0 V6 y3 @% q0 ]; H! K
himr 0x80040005 0x55
% X/ x4 ^; {& I
2 l  ^5 N6 S  l4 xSN也是类似。) e" Y- C: y5 r5 W+ T
, V& P0 ~& F3 ]& e
现在主要是,谁告诉我们MAC和SN的地址?
  a7 ?6 ^) \1 l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 % _. s  ^$ j- X
一直想找到运程修改MAC和SN的办法,苦于无解啊
9 j/ o3 K5 c! t8 u: h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   u# z& n7 e" c8 N( Z2 D

- g8 y" q0 G& T7 G0 A5 L7 G修改的代码早有了。到今天不会编译。
- D5 b/ C4 y+ F- {7 V+ S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 {. H5 {  v1 g
  2. #include <malloc.h>+ w3 X) j) n- q9 p2 p% @
  3. #include <sys/types.h>1 V8 ~/ r) ^9 X$ P* h9 e
  4. #include <sys/stat.h>
    + t) O1 L' r1 m4 j
  5. #include <sys/ioctl.h>+ B; J" m" E# k2 A7 T9 C/ h, g9 M# ^6 Q
  6. #include <stdio.h>
    0 |8 D. B) f7 D0 X6 @! B, `
  7. #include <string.h>/ B  e2 S8 M5 Y+ I
  8. 0 r% w+ E! l  N7 ]$ k
  9. typedef struct {
    7 e$ @5 f+ |) u( N3 c
  10.         unsigned int        e2prom_cmd_sub_addr;' V# X2 w( o+ o5 D" c; E: c/ F+ V" x
  11.         unsigned int        sub_addr_count;, n! \  b3 O, M) J$ e$ n% N1 u
  12.         unsigned char*        e2prom_cmd_data;
    5 P  J; O: Q% s  b' ]! ?$ y
  13.         unsigned int        data_count;
    5 c; @! X7 ?/ h& [* K, @7 }7 ?7 Q1 Q6 o
  14. } e2prom_s_cmd;  V: f7 t* w$ i5 {! \- x; x
  15. ; c/ `: j5 I6 S& ]
  16. #define E2PROM_CMD_READ 1
    2 e, O6 \4 {0 y/ f. R' c7 V4 H% ?
  17. #define E2PROM_CMD_WRITE 2
    ; Q: v( o8 n2 X9 p! {; j8 Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + Z! l9 o' n/ t) u2 ]% C+ W: y
  19. 5 ]! F2 c; [/ a$ M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 }% R( Y: `* e+ o8 g
  21. {; Z6 S6 \3 f0 u7 ~' a
  22.         int fd, ret;
    4 t; X- B8 F" }% Z
  23.         e2prom_s_cmd arg;% q! W+ l3 f! {/ K# d/ s  U( _
  24.         unsigned char buf[0x18];
    2 j* ]" M* B1 F7 I3 j- h4 o! `/ r' ?

  25. 4 w1 _7 u$ v# \( Z: o9 S0 y1 _  N4 }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 S- X- t9 {- T, Q1 p: s$ r7 y% k
  27.         if (fd  < 0) {5 T, Y0 k% E3 Q1 U/ m: i9 K  _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 |; L1 ~6 _: S9 B
  29.                 return -1;- w/ |$ X% N0 |( L% _
  30.         }
    : ]; C8 |. ~4 K9 ~% e
  31.         arg.sub_addr_count      = 2;
    / w5 f9 `5 k; D, r
  32.         arg.data_count          = 0x18;4 c6 ^) ^3 w# p. g* X$ h! B+ n/ J/ x
  33.         arg.e2prom_cmd_sub_addr = 0x290;; L- f2 [' K0 @2 {
  34.         arg.e2prom_cmd_data     = buf;
    0 D0 k+ e9 Q, p# a9 v6 H: C" q. e
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ z- O8 `* U1 N3 i1 h- V
  36.         if (ret != 0) {
    . V% U8 _# y- f% \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 W! U. e6 D/ G
  38.                 return -1;( k. a$ w: ?  l8 G# \8 I! ?
  39.         }
    6 j6 |" o0 L- `3 U. `1 L& L* D; E
  40.         memcpy(mac, buf, 6);3 n4 u- y+ _" A; H1 w; B; P
  41.         memcpy(stbid, &buf[6], 18);
    * y+ w/ u* U# f8 q( Q0 o
  42.         stbid[18] = '\0';
    * R7 D/ a" e/ H& v2 ?6 f; x
  43. / S$ a5 ?$ B; Q/ {  T1 r
  44.         return 0;$ k( b! ^6 ~6 f; j
  45. }9 j& h; j1 {. g$ D" Z* w" l

  46. ' n8 @3 x# R4 Q) j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # A. i; Z1 |: x- x
  48. {" x5 d' \- K# V, M# U
  49.         int fd, ret;& f( `# @5 \: i/ G' A
  50.         e2prom_s_cmd arg;
    : \' y: K- \. t8 `+ \5 \" J8 W
  51.         unsigned char buf[0x18];
    + v% C- |9 a: z9 C& K6 u

  52. , l. V* @# U! L3 v0 B: T- b$ L8 |
  53.         memcpy(buf, mac, 6);7 a* E# S, Y# y: P" Y
  54.         memcpy(&buf[6], stbid, 18);
    ( H: u: z! Q: L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * J/ k0 p3 u4 X+ Z; z
  56.         if (fd  < 0) {
    ( f( Q/ y7 m0 E! I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , N' }# e+ F6 ^+ ?
  58.                 return -1;% S5 s: g/ m/ H( e+ a& v6 b
  59.         }
    8 N5 p! ?9 H% ?  L) L. U( j
  60.         arg.sub_addr_count      = 2;( [" |$ ~  s/ n+ a& g
  61.         arg.data_count          = 0x18;1 x" J+ N0 {3 c
  62.         arg.e2prom_cmd_sub_addr = 0x290;% u; d9 `& `, x; E; h
  63.         arg.e2prom_cmd_data     = buf;9 i4 d3 F" K/ L) y# U( K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);5 N. s1 p7 \2 g) [
  65.         if (ret != 0) {( k9 k5 O* a! ~: Y8 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' N2 W7 P4 s) F. \: s. S" j
  67.                 return -1;& q, Z& U6 M+ _7 y) L/ H
  68.         }
    ! H" ^- X( _' @: \7 T: a
  69. ; o( w3 z- S: L1 z
  70.         return 0;
    + p: d) J1 @7 j4 {; s) M1 D( p/ K" g
  71. }
    ; y% ]1 g: X/ U5 t! B

  72. 4 {, B% x3 Q% G
  73. int main()- Y+ K- l& Z1 j6 i+ B0 u$ d& \
  74. {% H$ P- f; q! t8 I9 t/ X8 X4 E
  75.         char c;. x0 Q# ]$ l+ p* j8 x' ^6 p8 g' ^" \! ~
  76.         int i, macs[6];
    # T5 M3 r6 H1 W" |4 S  g1 Q" b
  77.         unsigned char mac[6];7 y: _) L" T9 t7 O) h
  78.         unsigned char stbid[256];8 I* B9 e) S4 A- b* i

  79. 9 {0 L6 x& r! _3 b+ C& Y3 W
  80.         if (readparam(mac, stbid) < 0)5 y2 o2 Y% `6 M9 r
  81.                 return 1;1 }" E. J3 @, @0 |0 L4 c5 n
  82. 8 W) v8 G+ }1 E
  83.         printf("Current parameters: \n");" O  X. S" U$ C1 R3 P0 w. |/ S. W0 R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! n% B& q: @4 l- I1 A
  85.         printf("  STBID: %s\n", stbid);
    - [1 @* Q) F( I  x( |
  86.        
    4 g6 p9 e# W. l: Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 }2 d8 V, i% l1 g" M; I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 L7 V9 r+ _) e0 \! d- j
  89.                 printf("Input MAC error\n");( a; F' H% P& Q1 H2 W
  90.                 return 1;
    6 Q( E% B6 S) B
  91.         }
    0 {- M0 b1 V, Y, [6 |9 o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- ]. u6 n" P: U, x* J+ ]2 R! l9 Z
  93.         printf("\nPlease input new STBID: ");
    ; o) L* J) l! f$ V& \5 g: x( e
  94.         scanf("%s", stbid);# R5 [" w, `  |- D
  95.         if (strlen(stbid) != 18) {2 ]4 q9 i. A& k6 O% E
  96.                 printf("Invalid stbid\n");
    & e/ W1 m& `/ {9 X7 t8 ^
  97.                 return 1;
    6 {9 E! c5 o1 G" L7 L% [
  98.         }' J. F- B* ]' V+ @! x2 h/ i
  99.         printf("\nNew parameters: \n");
    3 Z/ W9 P# ]" G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 q' X3 Y0 T7 ^8 d
  101.         printf("  STBID: %s\n", stbid);
    6 l/ J* K/ |" \! g& E

  102.   P' r2 s* W, ?9 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");  S# k' q! m9 \: }  T+ x
  104.         for (;;) {( y, I( ?- j: i4 d& E+ j4 u
  105.                 c = getchar();
    * k2 [# a+ l. m: {! t( [
  106.                 if (c == 'y' || c == 'Y')) u) r5 x8 O, G" I& k7 v' q9 R+ i0 q5 G
  107.                         break;4 J9 V, Q/ F! A5 [0 O
  108.                 if (c == 'n' || c == 'N') {% G6 v7 W' P+ c1 q7 z8 o4 q
  109.                         printf("\nAborted.\n");, F& v2 n7 P6 t0 l) _0 a  E9 E
  110.                         return 1;
    : Y9 }# G! ^/ A- y4 d9 k- G3 h
  111.                 }
    ( P6 Y) }) n9 I% Z' b* [
  112.         }& U' c, r8 `$ K" g
  113.         if (writeparam(mac, stbid) == 0)
    6 G' Q" p4 @+ t" o  Y5 \9 _3 X
  114.                 printf("Parameters changed.\n");
    2 S7 g) m% X" [

  115. . \6 |" Y) T( q6 d- r
  116.         return 0;( A$ [% w+ f7 m
  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 5 B6 R7 E+ H, L4 L7 [: i8 Y, N
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" r/ }( F# i& u0 j% |; a$ _
你用的编译命令行格式是什么?
3 L# `, f( A+ I$ S7 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客服返回顶部