查看: 16691|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" x  N. N, s7 g5 o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: g. w0 }2 ]0 f: O. Y1 }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; Z# J6 q$ f; E6 Nusage: himr <address> <value>. sample: himr 0x80040000 0x0
% b9 b9 Q. ]( t
+ e. r# V7 n: H; l7 r6 ~) @* F, Q& C8 B. I, v4 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  y) y% k6 s" H; p3 m- T# P% \+ b. r5 G" w' [2 S) h0 h
补充内容 (2012-3-8 09:42):* J5 D7 O0 U% C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! r. z  M4 S" c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ |8 o2 Q/ C, V2 X) f: A9 y* Z( k" d" f
himr <address> <value>. sample: himr 0x80040000 0x0# M/ r/ S, `, m2 f. F

; R* f. q2 I7 E$ E# |# P例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 |& Z3 _/ u+ D' Y, hhimr 0x80040000 0x003 R0 d5 V2 m' C( e
himr 0x80040001 0x11
, k1 M& I/ d; v! g- z( ^1 R1 hhimr 0x80040002 0x22
  z) k; Y3 d8 \himr 0x80040003 0x33
( x9 E  K* V2 rhimr 0x80040004 0x44% a# H, Z. R6 G/ K4 \
himr 0x80040005 0x55
; l; _! a: j* |. M/ M% ?/ L
! Y9 r# Z7 N0 _# bSN也是类似。& y, I) I. d- p2 Q8 _+ A% `! h4 j

& z0 ?0 ^: @9 i0 ?7 F6 W1 w现在主要是,谁告诉我们MAC和SN的地址?
5 [) w/ x6 \/ k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ i, S, K/ ?! l5 q) v一直想找到运程修改MAC和SN的办法,苦于无解啊

) c: M, v7 I/ U7 T8 R5 I/ n9 z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! f) ~  z4 [* o1 `5 {" F6 `9 X1 b- f/ b2 Z' j4 c, L+ |2 E3 {
修改的代码早有了。到今天不会编译。: A6 x, A: ]# |
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 Y6 G/ m3 e. ?, c! s  l
  2. #include <malloc.h>$ P/ X0 B% }4 z
  3. #include <sys/types.h>
    ' T' e' Q2 r: {/ C7 K
  4. #include <sys/stat.h># w! c6 _; K$ x, Z8 ]; s5 }2 U+ ~
  5. #include <sys/ioctl.h>
    . u, z$ N- Q( L1 i( R
  6. #include <stdio.h>
    ' y# k# o0 }, I/ H  t
  7. #include <string.h>% s) f: ?! {( \) u" e
  8.   L" p' ~8 u1 l2 w5 ^1 N
  9. typedef struct {. ]5 T* H6 E0 h! \1 q% X. v
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ G) H& E& y7 ^, ^4 l
  11.         unsigned int        sub_addr_count;
    " t; @2 U! w. ~- C, `# t
  12.         unsigned char*        e2prom_cmd_data;
    & Y" K' d* I* {/ h
  13.         unsigned int        data_count;
    $ L7 z+ }7 v5 S) N( e6 k
  14. } e2prom_s_cmd;& B5 `$ J8 F* i: C* i4 X* v: s
  15. ) M( d+ z4 m4 T0 t, _
  16. #define E2PROM_CMD_READ 1
    % x7 w1 b) J. _) _  \
  17. #define E2PROM_CMD_WRITE 2# `  ]' }& m( `6 y  n7 t- W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 r. Q% D9 \, M# e% t
  19. $ T: _2 }- ~& a2 |% i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      O( j' z: J5 v! ^5 s$ n3 |
  21. {
    ; u5 p' n, E; k* Q
  22.         int fd, ret;6 _7 W1 R2 ^! ]8 a& }
  23.         e2prom_s_cmd arg;5 j  U5 d) q) N* V
  24.         unsigned char buf[0x18];7 s: D' o0 q6 s/ _$ k

  25. ) e( _1 U6 O- G) |, ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 S. M  Z( C/ G) ]* j- t; D
  27.         if (fd  < 0) {+ H+ k6 c5 w2 T. l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 h6 N( f) z0 b' o7 e
  29.                 return -1;
    ! c, W6 o" @+ ^8 M( y
  30.         }
    2 R  f% h% ^  x# c$ r% N4 O
  31.         arg.sub_addr_count      = 2;' f+ \" T9 n8 t6 N
  32.         arg.data_count          = 0x18;% y" A* O) d6 ?4 D; U
  33.         arg.e2prom_cmd_sub_addr = 0x290;, q" b$ G" }  ^* M+ M+ n
  34.         arg.e2prom_cmd_data     = buf;
    . e, O: G+ E% M% T- q. u9 I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  }# `' r( H: a3 t* S
  36.         if (ret != 0) {( s, B% r" X7 H! J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 J- b( u- j& X, u
  38.                 return -1;
    # t: B$ ~! }6 B: Z
  39.         }& J' {$ \' d1 @
  40.         memcpy(mac, buf, 6);
    - _$ ?$ x/ |" _7 Z( }
  41.         memcpy(stbid, &buf[6], 18);+ w( M( @- ?# }8 B  y2 \
  42.         stbid[18] = '\0';
    ; _. o( n# y3 l8 n8 W9 C
  43. 6 ?/ c% w. M) u% x. S$ Q! s
  44.         return 0;
    8 }1 M; w0 B- t# Z% D0 Q, e
  45. }
    ' {9 n' e( W% ]) E$ j, W; V( H
  46. % r9 z/ u7 ^& g% n+ l9 l5 i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % F3 a) e# U$ ?. I# F1 _
  48. {
    3 x% u2 K( i' k. a3 l$ A+ t* {
  49.         int fd, ret;
    . ]( |% e3 i7 _* D4 Z5 Z8 U
  50.         e2prom_s_cmd arg;/ V, ]0 T0 P" L5 w! I. k1 o, O' t7 J
  51.         unsigned char buf[0x18];
    . D( a3 o% h4 G; r1 B& e
  52. 0 l2 @# i- a7 O  ]2 J/ N% O; E# O
  53.         memcpy(buf, mac, 6);
    % u& Q, G! P" ^7 L6 j6 v
  54.         memcpy(&buf[6], stbid, 18);
    9 B5 @& ~9 ?' W3 U# p! R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 E! e2 d6 f: n- G
  56.         if (fd  < 0) {! o0 w% p, y4 [6 E& l, b* ^3 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ I8 N& Y9 f2 @8 H$ D2 s5 G/ J
  58.                 return -1;
    1 u1 }8 {& j- S4 D
  59.         }
    ' a4 l5 @0 u0 P( K
  60.         arg.sub_addr_count      = 2;- U1 x* H: y. {% [/ |/ x% p$ E
  61.         arg.data_count          = 0x18;0 Q2 m9 @$ p$ g2 n: s2 X3 g
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 V- P; o# M5 Z# k5 O7 m+ ?
  63.         arg.e2prom_cmd_data     = buf;
    : M' M7 M+ _& S0 t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);- {- p( V+ V+ G0 q- r& U9 D
  65.         if (ret != 0) {
    / q% \: S6 g# ~& r0 v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 X$ i5 S" B8 u
  67.                 return -1;: ~" z# u+ D1 ~. B! ]1 ?" a
  68.         }
    2 ?4 S. c; _4 D+ l! r
  69. , Q& k8 e0 [6 h+ l# F* l7 h9 p/ x) D
  70.         return 0;
    5 c- h/ Y; w# l0 s! ?
  71. }
    , |1 o- S3 @, N/ w
  72. - l# D6 i" n! f
  73. int main()9 c# ^+ i! \+ x% L: ]& s  s) F
  74. {* U8 K( _( k  s/ Y3 Q
  75.         char c;
    # H, C7 T8 H- `! Y" t
  76.         int i, macs[6];
    + Z, a0 x; {: ^/ ]. y( n; O1 P2 L& Q
  77.         unsigned char mac[6];
    ! x0 c3 X( A* J8 v
  78.         unsigned char stbid[256];2 O! V& V4 m6 y' |5 Q4 W
  79. $ q) J- R: r* x! Y
  80.         if (readparam(mac, stbid) < 0)
    5 C! K* ~$ M! M+ u
  81.                 return 1;
    $ a+ E% a8 r8 B" h/ o+ e; B

  82. $ d* S3 l- }; ^% y; V
  83.         printf("Current parameters: \n");
    - u* T" u6 L5 h0 q2 c* ^- |/ w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) Q* E- n" }; P6 Y
  85.         printf("  STBID: %s\n", stbid);
    % h. a0 N9 |( ?" v2 K$ e+ k* ^
  86.         . w: ~: Y( w+ z* q* d7 i$ d9 ?1 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 h5 O5 p. P" f6 _: R6 i7 n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) w: ]3 g  {1 H/ N6 |0 \
  89.                 printf("Input MAC error\n");
    $ W; ?/ M9 b% v  V7 t: q" ?
  90.                 return 1;
      z1 N- ~* s: c1 \  y0 ?
  91.         }; F: t1 M9 f. k0 v! V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' N( Q7 A" A) J
  93.         printf("\nPlease input new STBID: ");& ^9 m0 D5 k& J4 x4 J8 Y
  94.         scanf("%s", stbid);6 E7 Z1 O+ y! ~
  95.         if (strlen(stbid) != 18) {
    ; V5 ]/ J& ^  D
  96.                 printf("Invalid stbid\n");
      U0 {9 z3 e9 U( U$ r4 D' k
  97.                 return 1;0 u9 V/ Z. T% q
  98.         }
      j# U: X6 _: t& D2 W# O. F& O
  99.         printf("\nNew parameters: \n");" L1 Z" B' M- @: [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% J2 b1 u4 _+ O) \8 S8 h
  101.         printf("  STBID: %s\n", stbid);
    - O' d" W& {0 L' W
  102. 9 r5 F- X/ \7 r* {3 v+ g: ^" e# Z% e
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    9 T! f. q" x4 |. H# _% y. S- h
  104.         for (;;) {
    1 z2 g4 {- K4 l" z& c0 r2 o
  105.                 c = getchar();0 V  c& x. T' _% I1 a
  106.                 if (c == 'y' || c == 'Y'), o8 P3 R, Z) P
  107.                         break;3 W! Y" n" t3 L$ v; f
  108.                 if (c == 'n' || c == 'N') {! `+ ~# ~% b/ V0 R$ J) o
  109.                         printf("\nAborted.\n");
    9 S; @. ]7 N4 s. T3 F7 Q2 N
  110.                         return 1;; a/ K, u* U: ~* Y) @
  111.                 }
    - R- i, i. J7 W. {; g2 u; g" J, F
  112.         }: T& |; `+ S7 x* r
  113.         if (writeparam(mac, stbid) == 0) 9 U- N* |4 C1 m) o
  114.                 printf("Parameters changed.\n");  H3 n/ k2 K. s$ \% F, h2 M
  115. 0 N2 o4 _  [0 m  N. Q/ _6 ^1 W
  116.         return 0;
    4 x# G/ a$ Y( 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 ; z" z- U1 b) @! d
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 N: o5 t" ~8 h) h* N/ o5 k
你用的编译命令行格式是什么?' D* {+ V& n0 z  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客服返回顶部