查看: 16125|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . c6 r' f/ H) a3 G0 E* p  l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' E6 u( O8 {9 _% u" N3 M; Q' A* _- I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& B. i' {! C% husage: himr <address> <value>. sample: himr 0x80040000 0x0
4 e7 z2 p, R, {/ o' @+ F4 f0 K

+ E1 Z/ l0 N- r" j6 J7 P& R不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 e6 [# l7 t% X* ^, I* Y5 d( p* w% ~1 k' h& K5 _. p2 D- O: c
补充内容 (2012-3-8 09:42):
: E" O; c+ W$ Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: |$ ?; \2 z5 o) x& o
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( u. W: q8 z( U" \. e: P5 B0 u7 J6 {$ v) N. T5 _5 d( o$ Z
himr <address> <value>. sample: himr 0x80040000 0x0
) n/ b3 E" p3 O* W# w% q1 B# k. k  i8 Y' j) j/ H( \* q% b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" w' S4 h3 i. r' _# X
himr 0x80040000 0x00+ y, f- \6 r0 M! D
himr 0x80040001 0x111 \6 U5 g/ m' b! l
himr 0x80040002 0x22
" [% w. j, [2 }+ j/ s. nhimr 0x80040003 0x33
/ n6 H1 |/ J$ n0 ^  U9 bhimr 0x80040004 0x44$ j* D/ J1 Z7 U; \- {  v/ L
himr 0x80040005 0x55/ H4 ~( W( s- o0 {, Y

0 ?; P5 q3 P7 x( k* _SN也是类似。
6 W* j. V! t; s' r0 {, V& E6 z
( [% v* `, P1 w( _9 N* _现在主要是,谁告诉我们MAC和SN的地址?$ w7 o1 X. V, i6 M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& U- ?" z" b5 X& y! b一直想找到运程修改MAC和SN的办法,苦于无解啊
% ]: P6 O; {" g, R5 d
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 H" C" |4 a( `' I; X+ s, G% f7 x' D/ ]" D
修改的代码早有了。到今天不会编译。
1 r+ M9 K  r; F( ~1 \$ z+ w需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 x' S: v' j5 _# D! H
  2. #include <malloc.h>6 r# X; E# I1 ~6 {* |
  3. #include <sys/types.h>
    ( v5 ^* K& A. j
  4. #include <sys/stat.h>/ v4 D2 V3 g4 h/ K* i5 B$ w6 w4 k' r
  5. #include <sys/ioctl.h>
    ) y( q9 o+ G/ k( G3 b2 K3 [. ]$ f% g
  6. #include <stdio.h>
    ; r' F9 r0 I3 m$ Z0 a" ^# g/ E8 C
  7. #include <string.h>; t7 e) ?# v" y$ d- t  ~* G

  8. * @9 \' A6 M, y. J0 N& m4 i- S
  9. typedef struct {
      Z' ?% w, t( t( ?. T0 O+ n
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 e# g5 E6 s% d# ~
  11.         unsigned int        sub_addr_count;6 w7 B5 S7 u( ^6 P8 N8 u6 r; X
  12.         unsigned char*        e2prom_cmd_data;, t+ y  C2 H" e: O" @6 ?
  13.         unsigned int        data_count;2 F! r. Q5 M# c2 ?* H
  14. } e2prom_s_cmd;
    8 v0 ^' u, d! O1 v" B

  15. 9 E" T$ Q' [9 B! O9 N, k, `! ^
  16. #define E2PROM_CMD_READ 1. t" a: i/ h7 |2 n6 p: l' f
  17. #define E2PROM_CMD_WRITE 2
    2 t3 h. x# V% V) u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! g" |$ B0 B# Q

  19. / z/ @  n( m9 I0 z- z, K( s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" Z$ L3 n& \2 v8 ~/ o; K9 G1 z
  21. {
    ; \) A: Y5 J% t, M( O( k" F
  22.         int fd, ret;3 g3 v+ Z# _8 v/ b( y
  23.         e2prom_s_cmd arg;
    ' Z  R" L  X0 o; E, j
  24.         unsigned char buf[0x18];4 K$ d. E! N4 j

  25. # D' h" t$ k& Y+ s" {% N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 Y9 r7 \/ a, U; i1 }
  27.         if (fd  < 0) {' x; U0 D. g0 O* Z0 U# e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( [1 H+ h' V+ [
  29.                 return -1;# [7 ?% |5 w$ s6 X8 V
  30.         }
    3 T& z. q* j; S1 D; o- T. ^) p9 q
  31.         arg.sub_addr_count      = 2;% u, N" W. N& p  V7 H9 R
  32.         arg.data_count          = 0x18;
    ! f- Z2 X/ e" s: t  E6 O
  33.         arg.e2prom_cmd_sub_addr = 0x290;" T- t1 F, n+ n  i) r
  34.         arg.e2prom_cmd_data     = buf;
    ! J7 G) _; {6 A% Y: h2 U2 R6 w
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 I  ^! `2 S5 ?7 A; ^$ @7 L
  36.         if (ret != 0) {
    & W3 c* k0 i6 Q# }; O0 w% W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- q2 Y2 F" a$ l! i
  38.                 return -1;
    . m. J5 h% B! J: ?5 R, p. j* w
  39.         }
    5 \) A3 K; \5 f6 Y/ H% F0 \
  40.         memcpy(mac, buf, 6);) L: S9 N: R: d5 G0 u
  41.         memcpy(stbid, &buf[6], 18);
    9 |3 t1 h9 }" A& q) C
  42.         stbid[18] = '\0';7 P7 S( |' G& M# h# J6 z

  43. & c5 X) Y" @# K  f
  44.         return 0;
    3 W( n, c; K, e1 Q
  45. }3 X: X$ ^! j- m4 Q0 K, _% [

  46. 3 t: ?# \9 X$ j8 w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ L2 @* `" v8 ]. _3 ~  A9 v5 A
  48. {1 Q9 q- i& \9 B" N+ e" }: b) l* b
  49.         int fd, ret;1 Y/ ^2 [* U, X2 v  L7 U5 n6 V8 P( J
  50.         e2prom_s_cmd arg;3 u$ F6 W+ u9 `* Z
  51.         unsigned char buf[0x18];
    6 g. u* ~! I3 ~5 g

  52. , ?7 h: s" L1 t4 z) Q& c; @
  53.         memcpy(buf, mac, 6);
    ) n, L, {: H& L* ]1 v. n
  54.         memcpy(&buf[6], stbid, 18);) n& S& b8 I8 \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 K. Y' ]: X, R+ I
  56.         if (fd  < 0) {2 |  z; k& _9 Q. Z8 a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 b$ S2 C! K8 ^
  58.                 return -1;7 g. ^0 w# E2 O2 m* i) e0 }& [( f* T
  59.         }' d' g$ A+ m* S$ j
  60.         arg.sub_addr_count      = 2;
    9 N1 w. _! M1 q2 P2 ~! w
  61.         arg.data_count          = 0x18;
    : D6 `9 k' M  w7 K% t2 B# h+ p
  62.         arg.e2prom_cmd_sub_addr = 0x290;2 S( p! q8 e* X/ ~3 G9 q
  63.         arg.e2prom_cmd_data     = buf;
    ; t' ~/ |8 q% @; ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / @4 Z- d! Z- I* J
  65.         if (ret != 0) {
    & i  E- \0 T) R: Y% x1 m! Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / p8 C5 W: r/ F. `
  67.                 return -1;% g* X& o/ Q% z& c
  68.         }
    9 B7 P" k+ [0 R8 ^3 v5 Z+ ]
  69. ( P/ k/ g3 Z, p5 k/ u
  70.         return 0;* Q: Y" W: P4 [% O
  71. }. o7 E! D+ Y9 p* i+ t# K  P6 \; g

  72. ; ^' B1 k, }1 |7 D% z- D' m
  73. int main()
    4 s3 `+ K: n6 Z
  74. {: b2 ?# Z! S  l% J1 @; L: m' Y
  75.         char c;: B: B' |# z0 C( Y( \) g3 G% j0 m  ?. o+ G
  76.         int i, macs[6];6 F) t+ v2 R' W' e
  77.         unsigned char mac[6];+ P) `' i; k, J% W: Q) s4 ]
  78.         unsigned char stbid[256];
    ; w/ W( I) b3 X. }
  79. ! q/ f- P5 |7 B+ {% ?1 n
  80.         if (readparam(mac, stbid) < 0)
    7 Q% _2 Z' |1 K( {: T+ D
  81.                 return 1;
    8 M- B1 R4 J9 W( I+ U% P  ^

  82. ) A7 M  }  R' i! z  U
  83.         printf("Current parameters: \n");
    6 G7 f' i8 V( H0 o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" U5 p; Y1 ]: M8 ?+ a
  85.         printf("  STBID: %s\n", stbid);% k' I2 J( X. p* F
  86.        
    6 z7 L$ e" P% W1 H3 l5 [& U
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - I5 @( k$ i" T4 D& w, P% X$ q- `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ r) }$ Y7 f7 X& ]' S1 Q
  89.                 printf("Input MAC error\n");
    8 h! h5 [) B5 L3 I" @
  90.                 return 1;# A! p4 c7 h, k* X9 [
  91.         }+ R( G3 J2 f2 w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 p. V# p( O! U2 w
  93.         printf("\nPlease input new STBID: ");
    . u6 }1 O. e: R" k7 B
  94.         scanf("%s", stbid);$ F. a' G4 w/ G) i/ I
  95.         if (strlen(stbid) != 18) {6 h* b& n* |+ @+ J
  96.                 printf("Invalid stbid\n");" Y7 S1 D: {7 M$ w% l* ]
  97.                 return 1;
    6 z9 x2 C# y; d* f" p) h; g
  98.         }4 \$ W8 @" ]5 T8 ]6 M3 i5 W% G' Y
  99.         printf("\nNew parameters: \n");& p4 u- r; z. M  t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 g# E: P" h; f) M7 J
  101.         printf("  STBID: %s\n", stbid);
    7 \; `- A& o4 d# q
  102. 1 }6 M2 ^5 l5 }2 M/ O
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + z$ D' e6 [+ C! D
  104.         for (;;) {
      _$ W( _% j1 ?' B. ^4 h' ^9 A
  105.                 c = getchar();
    ( v8 f, k9 L+ c$ B; j: s/ B% j! i
  106.                 if (c == 'y' || c == 'Y')3 x3 e" }9 {* z+ c$ `( J6 B
  107.                         break;2 p6 l* |  ?6 b
  108.                 if (c == 'n' || c == 'N') {# v8 R  P3 _/ G' w# O# z' @
  109.                         printf("\nAborted.\n");. f1 E! Z- G. ^& d- J: j3 e
  110.                         return 1;* m( V; G" C4 a6 D
  111.                 }
    / [5 {1 c% O; y1 E3 G
  112.         }
    ; N; l- {. ?# u) R; D
  113.         if (writeparam(mac, stbid) == 0)
    , l6 {$ v5 G2 p) }! y( D
  114.                 printf("Parameters changed.\n");
    & l8 O$ }0 _: \/ z
  115. 3 n( ]; G& U4 f$ u+ X3 ?7 H
  116.         return 0;
    ) M0 |# e' D$ f' x7 E4 ~$ G
  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 8 W. _8 A! y" @! [) ^/ A% F. I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& G3 Q" W: Z( |% N, D8 {4 f5 A
你用的编译命令行格式是什么?
- _* _; V' _$ f7 x6 u5 G, K" b3 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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