查看: 17651|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ E! k0 w8 s( F3 @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig, D2 p$ Q/ u4 ?) S# h+ \- d) O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 K: J2 [# K" H
usage: himr <address> <value>. sample: himr 0x80040000 0x0
! T! T/ `( l( O# Q5 U6 D! @2 d/ c, }. L2 r+ {) E+ r; k5 {
: G2 |# m7 Y- U' U8 u" t+ ^6 E8 U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 I4 j/ {# u- p1 O6 |

5 ?1 |7 @6 X% [4 r: B8 |7 F补充内容 (2012-3-8 09:42):6 p1 }2 p# ?- f2 J/ z: ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% f1 }$ m7 U% D9 G! L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 @4 T- M- S$ Y$ W" i; p7 D, L4 w$ B6 _* E. n/ f' r7 Y% [
himr <address> <value>. sample: himr 0x80040000 0x0
8 h( Z4 H, ^1 K1 i! S. e
- U1 O4 }" E. A& _: G9 j/ T例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。7 r8 o: ], r% J& f: @
himr 0x80040000 0x00. k2 o, G- P+ U* A
himr 0x80040001 0x11; Q$ B" L' ]* T- o. Q
himr 0x80040002 0x224 }" L7 x) ]1 ?9 B5 T. g
himr 0x80040003 0x333 F' f! |* H0 T& v5 L; @& S4 l! a
himr 0x80040004 0x44
% r8 b; S; I2 M6 ~( z* d3 uhimr 0x80040005 0x55% @' X0 |" W9 h% N& e, |' _3 M
# K4 V3 I0 g8 `' G, G8 B
SN也是类似。
2 K0 O  T6 K' D* _; T! Z9 v
7 w. I8 K5 E6 |- N现在主要是,谁告诉我们MAC和SN的地址?7 V* w* `5 b3 D( I* I4 Z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . p" W/ N% n3 L. O' g' k
一直想找到运程修改MAC和SN的办法,苦于无解啊

' ^! `. X# y" F, i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 0 U1 E& I: p& c% e) C" k
; P2 e  g9 w5 `/ e( ]
修改的代码早有了。到今天不会编译。
0 B/ \( {$ B  s5 \6 Z- h需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ Q8 b: S! v) U, w! O' L
  2. #include <malloc.h>4 o+ h6 p' I  e! ]: U
  3. #include <sys/types.h>& l' E8 B$ H& M  R6 M6 _& C
  4. #include <sys/stat.h>$ ?, n6 S3 F2 ~7 X  t5 r2 E  T7 w
  5. #include <sys/ioctl.h>
    / M2 f) v, m8 F# H; X& w5 U+ A: `
  6. #include <stdio.h>0 O8 m# T9 T; X3 p6 g6 B& s
  7. #include <string.h>8 t9 N1 o$ b! G/ ]  x

  8. 7 i  N+ o2 l% R( a3 k$ M
  9. typedef struct {. e+ U& U2 {6 f9 @1 a
  10.         unsigned int        e2prom_cmd_sub_addr;
    - t; ^# S5 [+ A& g% z
  11.         unsigned int        sub_addr_count;
    - |/ ^) G; o7 W
  12.         unsigned char*        e2prom_cmd_data;
    $ u2 H, M& R  a( d+ I/ `
  13.         unsigned int        data_count;
    9 A/ b- J& c' B2 b
  14. } e2prom_s_cmd;
    $ Y# ~- R' p% f; A( J

  15. 0 B5 C4 `' p% Y; i
  16. #define E2PROM_CMD_READ 1
    & j8 z2 x4 z6 u6 y& l
  17. #define E2PROM_CMD_WRITE 2) i4 a) Z4 ~9 W4 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      p& ]2 i( h7 T* k
  19. : n/ H# ]% i) R
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 Z1 n" c" E- z7 p
  21. {
      R( n2 r+ G" S; {
  22.         int fd, ret;! X9 l: q/ K/ b
  23.         e2prom_s_cmd arg;
    " _# S, o' [0 h2 t
  24.         unsigned char buf[0x18];$ @6 b) S# v. I* e' d6 t$ `

  25. 9 [; c" J3 k: `" T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ `2 }( E0 r  G8 o
  27.         if (fd  < 0) {
    1 V: q$ P5 z/ ?' L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( g1 d! d; v$ l5 r' \3 }8 a, M
  29.                 return -1;
    7 E- ^- j' |# c7 c  d9 r. h
  30.         }
    . `" J6 E) y! \) q3 E9 t
  31.         arg.sub_addr_count      = 2;$ e) J( B  T+ o3 X& V
  32.         arg.data_count          = 0x18;
    9 }- C/ w. U: \1 x, q
  33.         arg.e2prom_cmd_sub_addr = 0x290;* G: M5 ?* l5 r0 W
  34.         arg.e2prom_cmd_data     = buf;  y- J$ |- A/ z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 h- d1 }5 X0 B4 a1 {7 |  \' U' U
  36.         if (ret != 0) {! X! H8 i+ Y! p& P; M* i! Q1 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: ?3 \' [- R& w# X6 r' A
  38.                 return -1;
    ' U% {. @# V) K* H# Q; @+ ?( u5 J
  39.         }
    ( r5 W4 T, z5 J* x
  40.         memcpy(mac, buf, 6);
    0 A% N) m. b% C- g
  41.         memcpy(stbid, &buf[6], 18);
    + W. O/ q: j/ j, H; r, d* c' h/ W
  42.         stbid[18] = '\0';  ?* ~& D# ]4 S, K5 @" J# q; [

  43. & ^* m: d3 i0 [% ?7 }- b
  44.         return 0;5 ~6 ?) K& s; q/ U% a; H
  45. }0 b5 ^2 R7 |* i! W

  46. 1 y+ w6 l" b* ^; k2 w5 h
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + b# v* X; g) |& ~" x; _) G9 f: F
  48. {' q9 z& ^5 v6 N0 l. T9 R. f  f
  49.         int fd, ret;
    ' P; z% D! h1 S; ]" X- T
  50.         e2prom_s_cmd arg;
    : o1 |* x" [, C! S7 U* g/ r9 V
  51.         unsigned char buf[0x18];) h* G1 g0 R( A/ B9 j
  52. 6 r9 B/ ~6 C1 C% T5 r( N8 O, Z: x
  53.         memcpy(buf, mac, 6);: @( Z' d. }7 P, l3 @! p
  54.         memcpy(&buf[6], stbid, 18);
    ) u5 C5 d/ B* o* x' W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: Y# h, T  W2 A7 `. n3 h2 j8 ^
  56.         if (fd  < 0) {
    % `7 h6 o- `+ I# f7 e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. N# d& `" i' I- x0 C
  58.                 return -1;
    + ~( X' j1 X# q# |, Y0 R
  59.         }7 q1 X! q# ~, I; N7 V- S6 R. z9 E
  60.         arg.sub_addr_count      = 2;
    1 {% T7 D6 D9 x; o/ d2 X
  61.         arg.data_count          = 0x18;
    & n0 y& J# }( t7 n
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 g5 V) ?! Q2 n
  63.         arg.e2prom_cmd_data     = buf;2 |9 O+ e* i" R% k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( X+ e; X! O/ ~3 j; U9 y
  65.         if (ret != 0) {3 O4 G. R5 }" K; [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  h9 E5 b( s* Z7 l, E" x! `' [
  67.                 return -1;
    ) d& r7 z+ i" Q. ~/ e& D' E
  68.         }% \% g' V( Y  m/ l" R1 X

  69. $ H2 a: e; b3 E* s' g" U) ]
  70.         return 0;/ J4 I4 Y  Q* i
  71. }
    6 r' }3 ^7 H, c$ `6 z& h
  72. 1 N% v- ^: P: \
  73. int main()3 W* f* r5 f! t( p) b, V
  74. {
    8 y3 d+ g3 d# D4 ]: S: D( d/ `1 o
  75.         char c;& y1 t# r& C8 l6 @
  76.         int i, macs[6];
    - W3 ?# ?! \5 Z7 U1 R, _" Z+ R
  77.         unsigned char mac[6];, h. l" x7 {7 [# E7 b
  78.         unsigned char stbid[256];9 b/ \4 s0 z% s9 i
  79. 2 U# x) |8 z2 d7 b
  80.         if (readparam(mac, stbid) < 0)2 i2 _( \( U+ i( D+ y3 h# R
  81.                 return 1;
    , `; o7 \" T8 s7 \, ~6 x6 A) p
  82. - I% q* _4 M; b- d; J+ A
  83.         printf("Current parameters: \n");9 }# ]- h0 K3 A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% D  g. D( D4 m6 U
  85.         printf("  STBID: %s\n", stbid);( d( F" j. [: a) R$ {
  86.        
    5 Z) L' H, e; n+ a5 g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 O3 G0 P# ]% q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' r  K2 |- {0 E" N+ O) k* Q, f! \, ?
  89.                 printf("Input MAC error\n");7 X1 d$ F! C  A7 x
  90.                 return 1;% m0 }$ ^; O0 J* N8 n
  91.         }; u: G" j5 g- X- y9 f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) m" |1 E- H$ ^
  93.         printf("\nPlease input new STBID: ");3 }; M8 `9 I7 r/ E
  94.         scanf("%s", stbid);% M8 Y/ P( a- L* W) x/ z
  95.         if (strlen(stbid) != 18) {
    ) k( m1 C; l# {
  96.                 printf("Invalid stbid\n");  h6 g/ F& X! ]3 h; e) I
  97.                 return 1;
    1 r  t5 W+ g% _: A
  98.         }
    6 v8 j' m( T3 u4 l3 [9 I% h- c" Q) H
  99.         printf("\nNew parameters: \n");/ f# r: x7 v7 D$ O0 ?( [% j" D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 u/ O; ^  A* W& F
  101.         printf("  STBID: %s\n", stbid);
    4 M! M( S! k1 i- ~$ q( b* D
  102. / C1 a) q2 p  n; I% O+ e3 ?
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 y' {3 ^( v# Z% j3 F* O* g
  104.         for (;;) {
    5 U3 i  z3 i- w9 k
  105.                 c = getchar();6 T$ d9 f. A% N- d7 j2 x3 Z" b1 V: e" v
  106.                 if (c == 'y' || c == 'Y')( g* D& P7 c: {- ?4 K# ~
  107.                         break;$ P' g" ]. d. N) n  N
  108.                 if (c == 'n' || c == 'N') {
    1 M2 U/ }( K1 x4 ^5 P, }7 _7 B
  109.                         printf("\nAborted.\n");; v! m* k0 O! j/ \
  110.                         return 1;
    $ h) {9 c- f$ |! o( Z
  111.                 }& J9 d! B; ~& Q& H
  112.         }
    9 d- n* s) v1 s$ F' A
  113.         if (writeparam(mac, stbid) == 0) 0 z$ k9 d* i  A! U: J
  114.                 printf("Parameters changed.\n");, [, o5 @  L' m+ k& Y, O
  115. 6 y: j! {" k/ C: a
  116.         return 0;) `% I5 A9 {7 {5 v
  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 t' [- }! w% e. N" D+ c, C2 X在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# H8 p: H  ?1 F8 ~) L- r你用的编译命令行格式是什么?
& x" P3 l' Q3 _* O" {: A- 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客服返回顶部