查看: 16433|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , ^6 z$ M0 g+ |6 B( c& }: k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- k( |( G; J9 r; J) M" b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; [7 o# Z' t: k$ o
usage: himr <address> <value>. sample: himr 0x80040000 0x0* ^' G9 h* s; ?; a
3 P; D! S* ?( h' X$ m) o! O
+ z$ D1 H( c6 R* Y" H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 J. E6 L% ?" f: Z# I
2 ]0 o* v' L8 O5 j补充内容 (2012-3-8 09:42):
8 k  {% z3 v6 K6 k% whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; e% Z2 [- U: x. F8 o5 `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# q) x8 t; D" N9 i5 }6 a' @- T/ u1 q* t/ @& l0 }
himr <address> <value>. sample: himr 0x80040000 0x0
" L7 g9 _0 G! P  M' f  h" d; |$ k8 ?8 F: n  k4 a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。3 g3 K; Z4 I6 B) c7 Z; M6 |
himr 0x80040000 0x00
: L6 F& M, d. D: ?+ h. B' A! X) Mhimr 0x80040001 0x11) q% j$ L. {! r' A  c
himr 0x80040002 0x22' {8 Y: ]6 z% w) T8 a2 I
himr 0x80040003 0x33, D, p7 u+ g% N) T9 b( \, S" I6 R
himr 0x80040004 0x44; z% U3 V- D! D; c5 q, ~9 G
himr 0x80040005 0x55
  Y- N- O" f: i6 H" E) Y
2 a' J/ x4 r: w& f6 p' x5 W6 @SN也是类似。& `8 h7 S6 R! i/ V$ z. z" |
7 H- @9 P' u; F' R4 l
现在主要是,谁告诉我们MAC和SN的地址?
* ~5 b  F$ B7 J* q- a
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 {* c5 E1 z) {2 R一直想找到运程修改MAC和SN的办法,苦于无解啊
" v. |* x$ s6 F- o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : h' K$ P6 ~  [1 E8 Z" G/ O

2 q# g- F+ {: Q* Z% w4 |修改的代码早有了。到今天不会编译。
# z/ X4 X, n1 y& S: c3 h# E  _- U% [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 `4 S! k- j/ d& S4 z( N* m
  2. #include <malloc.h>
    $ c5 ~  b/ j; d5 y
  3. #include <sys/types.h>7 }' j$ p+ S5 f  G
  4. #include <sys/stat.h>
    % }, d' N) @- Z% s: l
  5. #include <sys/ioctl.h>
    8 I  q0 n( c! `& I. p2 W
  6. #include <stdio.h>: p: u3 a2 N( v; e: ?
  7. #include <string.h>
    & G+ ~) x0 e* G/ n: ]

  8. $ i* V% K5 n7 P7 u
  9. typedef struct {) z/ M' e1 `' S  ]
  10.         unsigned int        e2prom_cmd_sub_addr;, V' j; ]  e! p0 y) N9 I  h6 C, R9 T/ I
  11.         unsigned int        sub_addr_count;
    - {+ R. ~+ n8 X
  12.         unsigned char*        e2prom_cmd_data;% `  c- C/ B4 v7 C$ o! u
  13.         unsigned int        data_count;
      O$ k5 `. p2 K* V: D/ R! t
  14. } e2prom_s_cmd;
    : m8 `$ Q. O) f, \( h7 `
  15. # |" f9 e4 C* m
  16. #define E2PROM_CMD_READ 1
      o5 W/ |2 E. A3 e
  17. #define E2PROM_CMD_WRITE 2
    1 V! o; N6 X2 h, d3 i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; S5 I5 n" F) P& R8 g# `5 W
  19. # Z; \  E5 |5 c& O7 F# _& i
  20. static int readparam(unsigned char *mac, unsigned char *stbid): n0 p# {6 C% R2 A8 [
  21. {1 c3 ^: k( H8 q3 h8 E9 ]4 o
  22.         int fd, ret;1 H- F% F' U- f; d1 @/ g  I+ _
  23.         e2prom_s_cmd arg;0 r/ t  h% c: T7 G
  24.         unsigned char buf[0x18];( y% ^" w& n5 M- F! K( L1 ^
  25. . T5 e! M+ k) a  A
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , w5 B2 w" F& F/ b: t
  27.         if (fd  < 0) {. D9 w2 \) O6 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 v) H% p& O% X( l3 `+ v0 l
  29.                 return -1;
    ' c8 Y  U5 k  @% \+ {# M0 X2 J' |
  30.         }" z1 M/ h& m' Q% ~+ T
  31.         arg.sub_addr_count      = 2;7 h% I: ^3 _: |+ x4 b: u
  32.         arg.data_count          = 0x18;
    # M  H9 [& f  K& i0 W
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 {* A1 M3 |' I$ d6 c+ k, @
  34.         arg.e2prom_cmd_data     = buf;" e) G7 K& `1 \" o1 L% A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 V/ L0 k* J& e/ \0 ~: f) R; d
  36.         if (ret != 0) {; V. }: E3 H9 J- h( `& Y1 z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( n1 h7 i: ^# I3 S. c/ M
  38.                 return -1;
    ! c; I; a9 Y5 _8 o6 ?0 a; D1 m1 Q9 p" C
  39.         }& i7 D& J7 p) `" E
  40.         memcpy(mac, buf, 6);0 f) ]6 a' Y4 R! f( r( V( E4 U
  41.         memcpy(stbid, &buf[6], 18);
    ) S% x) L/ p1 v# W" ]7 X0 P/ s6 Y
  42.         stbid[18] = '\0';$ x/ t- Z2 G0 U6 Z4 g

  43. 0 E0 q& K. ]- v  \% Y, m
  44.         return 0;7 z# b, B$ w6 D' ?5 z8 h- I* l+ H
  45. }- o! |/ G; I* f+ G
  46. 4 E# d0 Y3 v* K+ Y, V) m5 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " o: }1 c0 d, N- {9 s: y/ t* I/ y1 Q
  48. {
    - k% F8 F( s! W# e) k1 L* e
  49.         int fd, ret;+ V: T1 L* E! t& B: Z: F
  50.         e2prom_s_cmd arg;
    " b9 a' `* C8 g3 c$ f6 Q
  51.         unsigned char buf[0x18];
    & k/ V& p9 \# v' X

  52. / S+ e7 @! H' O" n5 m
  53.         memcpy(buf, mac, 6);" t0 y5 @3 r: ^, i5 z
  54.         memcpy(&buf[6], stbid, 18);
    + v/ I- W2 o' @# G! O9 O4 I7 n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( ]4 K' o) g. {
  56.         if (fd  < 0) {) F5 I1 T0 X0 n& L% [$ G) o9 g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 S, |' |3 j5 ~' @  V- T( H
  58.                 return -1;; S+ B. I  E1 i+ l
  59.         }" o& K- u/ U3 k6 K
  60.         arg.sub_addr_count      = 2;7 {2 o4 |) ]2 f5 d' {2 e
  61.         arg.data_count          = 0x18;
    3 ?9 l, B1 S8 C% N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : ?+ W4 F; F' x, z7 k
  63.         arg.e2prom_cmd_data     = buf;
    . K9 Y* }% l) ]/ O1 ?7 C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    % \0 y0 X' P: V4 p& I% \- N( J
  65.         if (ret != 0) {
    & d' G" }' _: \2 n& S, D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ m& [+ z4 Q2 y8 R7 I. S* }
  67.                 return -1;
    8 D" M7 V, N  c" v
  68.         }
    7 B; l- m" i) I
  69. 2 N: e/ f* s: M( X/ H
  70.         return 0;9 t5 D' X6 G0 R
  71. }
    # }6 R8 M4 H3 n; V
  72. 3 H. Q' ~$ x2 w" j5 j
  73. int main()
    - m/ j  m! [2 G' M$ i
  74. {
    4 @5 d4 m& [. _/ G. D4 A: x9 V
  75.         char c;) I% s7 j. m" X) S9 Q0 z
  76.         int i, macs[6];
    $ z' A, n7 p% P7 O: |: c
  77.         unsigned char mac[6];
    6 ?( e' q) Y; N* ^6 K
  78.         unsigned char stbid[256];0 E, C2 a8 r$ F2 n8 @
  79. 0 j( t2 h8 f) h5 `
  80.         if (readparam(mac, stbid) < 0)
    5 A5 e% ^! a4 D1 E& N* y  \
  81.                 return 1;
      _# }* R! \7 D  w/ S7 H
  82. 2 }' t" P% z0 I( y8 h# g! q
  83.         printf("Current parameters: \n");
    + n& W; H2 p2 S4 `" H0 i* H, ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- r0 t4 E# y9 z1 ?1 g9 s
  85.         printf("  STBID: %s\n", stbid);
    " q) s# }4 B& \# D9 ~3 J
  86.        
    8 x! X8 v$ A9 h* Y4 m6 j$ k" L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . V+ S6 j* ]4 {1 v  F* {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 ?! f) T. q) \+ D, F4 ]
  89.                 printf("Input MAC error\n");9 m5 i& B0 ]& Q& K4 w, n( r. E
  90.                 return 1;) m6 X" ]* m/ l- S6 Y
  91.         }2 X% g" X3 i) z# z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ o+ G+ n$ l% [' t" C5 c% X
  93.         printf("\nPlease input new STBID: ");8 Z- O- p, I( G
  94.         scanf("%s", stbid);
    + F: Q9 c# K6 G) Z+ j, t0 |
  95.         if (strlen(stbid) != 18) {
    # L9 ]4 E. H1 Z" n
  96.                 printf("Invalid stbid\n");
    : i: z4 Q, U% O* e: k
  97.                 return 1;, n5 t# q0 o$ T0 L
  98.         }8 A+ O& J! v+ b
  99.         printf("\nNew parameters: \n");7 s% U, e4 B3 h% Z3 m! ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # Y9 T/ D: p( q( W/ v# R0 _
  101.         printf("  STBID: %s\n", stbid);# F6 I$ I# q2 @7 B4 D& w% V

  102. & O* ~) O8 e% W1 J: G# Y# Q6 o
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 J- \$ V% B" R3 y- c% n2 m" G
  104.         for (;;) {1 t4 V" B7 G6 W  J, z( V
  105.                 c = getchar();
    9 O5 H) E9 W" ~2 O' F3 p5 R7 D
  106.                 if (c == 'y' || c == 'Y')
    2 f9 C' Y$ [/ q( ^# s/ i
  107.                         break;
    1 C& x) C  L) I
  108.                 if (c == 'n' || c == 'N') {- i5 ?; c) P) u
  109.                         printf("\nAborted.\n");% M% R6 @6 p+ g& i/ l% h
  110.                         return 1;
    $ ^2 _" A1 ]* z. u1 V
  111.                 }
    3 O2 f( T/ Y, {4 e5 [1 Q
  112.         }- o# w2 N" m! N4 V$ A
  113.         if (writeparam(mac, stbid) == 0)
    5 j: u: e  ]9 i: }; ]: h
  114.                 printf("Parameters changed.\n");
    0 a( z- w6 b8 r2 ?9 {
  115. - x2 s. G0 ~9 o
  116.         return 0;
    0 x4 o4 B, z0 Z. J$ Z) d$ a# D
  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 2 O/ \0 v+ i9 ~+ p, r8 ?  V
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( w: A! C; c& H& g9 j* G9 ?& d9 F你用的编译命令行格式是什么?. m& h/ f& h( E& v! V4 C
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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