查看: 16527|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 W- p# {5 c" b: q8 G! [6 n( j& k% b6 N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 L$ c, C& s1 R1 k0 w- I& S" a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 R" h2 A) F' t! {* e
usage: himr <address> <value>. sample: himr 0x80040000 0x0
" E' ?% d2 D% [
! @# Y' m7 B! D: o7 H! h% W* f! {# L3 D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?3 x0 P1 C* z6 D+ ~9 X( a
4 f6 t( P: @, B9 Y, U0 S7 \5 [
补充内容 (2012-3-8 09:42):
& k* E) }# Z6 _( K+ p7 O2 W& shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- a! b# `7 N% b( l
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 {$ a  I0 g, |- q: L) s. m! e

9 W  a- t8 |: D3 ^himr <address> <value>. sample: himr 0x80040000 0x0
3 V, z! \7 q5 d) M8 V5 u4 P: ~. P7 `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% d3 @' j1 M; v- Z
himr 0x80040000 0x006 X" v- R4 F3 M1 {$ d6 |6 ]
himr 0x80040001 0x115 e1 k6 p3 A! W7 @$ H0 _
himr 0x80040002 0x22
3 G* _+ ~. |4 b! u; ~8 |himr 0x80040003 0x33: J2 k4 ^& Z( e7 K, T2 m
himr 0x80040004 0x44: r; v, N7 j+ c  ^( n- x0 D# P
himr 0x80040005 0x55
; o# b8 T1 q# c5 N4 g$ i2 ~, O& D( X$ z& k9 V/ V- [; @
SN也是类似。
& v$ z; K( V: ~+ h. \3 q# }$ i0 c' F/ Z! w3 W9 _( F
现在主要是,谁告诉我们MAC和SN的地址?
- q) f( P# L' r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ h4 g7 [+ [% m! l一直想找到运程修改MAC和SN的办法,苦于无解啊

7 k8 C# X0 o* Y- @: _源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 `$ Y1 i+ ~, U- K' j# S# U0 \( Y

# a' h1 t8 t& B+ B' y2 z5 P( s修改的代码早有了。到今天不会编译。, M0 {, l/ h# T3 A3 d4 D
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># r. J0 y) X5 Q) h# n2 }% B
  2. #include <malloc.h>! ~- I' }+ t5 ?; h; O( X
  3. #include <sys/types.h>- N, E. ]7 X$ P" m
  4. #include <sys/stat.h>9 o% U' ?4 D! G
  5. #include <sys/ioctl.h>8 r1 i) F9 v( i, ^. ?$ |1 R
  6. #include <stdio.h>+ T/ {, \, L( j- }% [
  7. #include <string.h>! j6 I: O* c% M  c

  8. # M$ @4 l2 I5 ]. P& q
  9. typedef struct {4 s# f* v( J! \) X! t
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! g8 g  T1 R8 z/ V' T8 ?6 c6 ~6 i
  11.         unsigned int        sub_addr_count;% k$ I( c( K( S9 m2 K
  12.         unsigned char*        e2prom_cmd_data;
    : ?& c5 N; ]. ?$ E$ C
  13.         unsigned int        data_count;: S% r" X# \' J4 b
  14. } e2prom_s_cmd;
    7 a9 i+ ^. p9 ~& h8 P, l9 O9 x# y
  15. # J3 q& T7 |' B9 S/ o
  16. #define E2PROM_CMD_READ 13 D& ?: N, L- p4 a
  17. #define E2PROM_CMD_WRITE 2& j1 N  S6 p3 |* U. W2 h) K
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & l2 `6 ?+ h+ O: J5 Q) j9 d# K

  19. 5 a8 A! S, C0 q4 p/ h! Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid); K5 |5 X5 \) [* o
  21. {/ v% Q& C7 T! b  |
  22.         int fd, ret;
    . O3 k6 H# N4 _+ r5 r
  23.         e2prom_s_cmd arg;
    % t! E4 w; a% o1 D9 k0 O
  24.         unsigned char buf[0x18];
    8 _9 v$ O0 p- l- z, u0 j
  25. : N. e+ z. f' |9 H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& d  x. `: L: H# T3 {2 a
  27.         if (fd  < 0) {9 [3 l5 L' a( W" A* E6 P0 d- r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  \5 r! O9 E* |" s
  29.                 return -1;. H0 y: }/ H# C( a( P
  30.         }
    ) g  K; k. n+ R3 `( m+ I
  31.         arg.sub_addr_count      = 2;1 u: N9 x% C) a8 l
  32.         arg.data_count          = 0x18;
    ! D# O( m$ b& |
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - B2 S$ b  z9 J2 d
  34.         arg.e2prom_cmd_data     = buf;, q5 I3 D; y0 ~/ }+ C0 ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 F9 q& e; n( C
  36.         if (ret != 0) {
    . [( X7 F6 G* }9 ^8 x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 O0 |& g' I, Y/ x7 {
  38.                 return -1;- r' o$ s. F  _. m! x
  39.         }
    ) h; H. c: {; G7 |7 @) M
  40.         memcpy(mac, buf, 6);
    ( f. J- }# J3 H! q
  41.         memcpy(stbid, &buf[6], 18);% ~( T2 x% l1 J8 o
  42.         stbid[18] = '\0';# X& j# M) x1 I0 _# P

  43. ) ~4 }7 i+ W1 l4 D( w' G  o- n% N
  44.         return 0;5 {, {. R2 r* J# z6 s
  45. }
    # ?+ x* L) |# l) C" {7 H/ n

  46. 4 v( F6 T5 w4 Y5 @0 T
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 X% O: n3 b' V& a. x, b8 \
  48. {
    # z5 E7 o- V/ s( ?; X  ^
  49.         int fd, ret;
    + g7 J! x/ b+ d1 F3 P# `
  50.         e2prom_s_cmd arg;' V( h! _' p. a; L: E
  51.         unsigned char buf[0x18];
    9 b1 c2 [( a" o

  52. 5 A/ y: v; ~/ c1 n+ r* m* i
  53.         memcpy(buf, mac, 6);
    - s1 \% }! J6 h
  54.         memcpy(&buf[6], stbid, 18);5 I8 t5 T$ O+ B; ^3 b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% _9 O" J* L8 `8 }8 }4 d3 J3 x
  56.         if (fd  < 0) {
    ( J$ E& L: W* e7 Y- h& f/ A1 b) d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ z" D9 A( O9 E0 @' U3 i; G
  58.                 return -1;0 M" v$ t1 P. e$ \# e
  59.         }9 A0 P) ]1 g% {% ]
  60.         arg.sub_addr_count      = 2;: J7 H3 E" Q; y
  61.         arg.data_count          = 0x18;
    * M( D( x  K5 h  M0 _! {$ [
  62.         arg.e2prom_cmd_sub_addr = 0x290;, F+ O5 y. ~, q
  63.         arg.e2prom_cmd_data     = buf;
    5 ]4 G: Z3 [/ S" b. S: E9 V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , k- r# R7 E% O7 \$ ^/ V
  65.         if (ret != 0) {1 }$ y/ O# q2 r' n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, C2 W  A6 ^. e. e- D0 X
  67.                 return -1;
    3 _; u) S8 o8 P# M7 r
  68.         }
      L+ [, k  V# E! q/ x5 P0 u1 ^

  69. 0 o$ x& P5 I2 l  Q
  70.         return 0;% K! K5 N0 M: m" N. M/ K2 p7 W6 Y- ~9 I
  71. }8 V, O  t0 k. c3 q1 t$ m4 U& F

  72. % Z, E  A+ q2 [
  73. int main()
    ' ~6 n. R8 F* R9 u9 }* b; ^" F
  74. {) l: y# W! t+ h
  75.         char c;
    : B" Y+ {; Z- R# k
  76.         int i, macs[6];
    & a; l0 `6 @1 b7 J' M
  77.         unsigned char mac[6];1 C2 H  ]1 {% b
  78.         unsigned char stbid[256];
    $ E$ g: [! ]4 Q8 @) h- f

  79. : C+ e; o) C8 e9 s/ @
  80.         if (readparam(mac, stbid) < 0)6 d; L  w. C% \0 i/ w8 _+ _
  81.                 return 1;2 D/ {2 r( U/ G# @9 x8 `# C

  82. ' }$ B7 `6 \. V/ S' G) M3 C$ ^3 a0 N
  83.         printf("Current parameters: \n");0 L9 y2 t- [, ^( ~" v* O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: V8 e6 j  @2 m/ H. I; f' W6 t) \) h
  85.         printf("  STBID: %s\n", stbid);
    ( c9 z) h6 \; y4 J* m% ^
  86.         0 V5 f) U$ Q# L
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. J/ p& U0 x3 [) J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & [: Z. P! r) B& d( H  I
  89.                 printf("Input MAC error\n");
    9 p, o4 k  B; B3 Y
  90.                 return 1;
    7 Y+ Z- `5 ], g- K0 ^8 v/ v
  91.         }
    2 x5 n' ?6 `7 Z! ]0 H( h. i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 |" F3 W1 G4 t8 Q$ |& m7 x
  93.         printf("\nPlease input new STBID: ");  i0 \4 t3 v' k2 H4 h" c
  94.         scanf("%s", stbid);
    % V8 d4 V# ]8 k
  95.         if (strlen(stbid) != 18) {; K% K5 o' e5 g4 d0 U6 I: O) }
  96.                 printf("Invalid stbid\n");
    & U7 w% e) H5 ^  e6 [, G
  97.                 return 1;- B% s* w* L+ V% g) K. Q  ^
  98.         }
    , R6 Q* ]: r9 B- p8 c' p' |0 S
  99.         printf("\nNew parameters: \n");$ d" @; q- P' x6 ]; H/ [& q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) W& f- P, ?4 H0 ?% I0 A9 T" C7 D
  101.         printf("  STBID: %s\n", stbid);
    * X' D7 [3 a0 E7 T- v

  102. / c1 Y& L% l; B
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 L: X. J/ Q* Z& v+ }; L1 E  u* E! x
  104.         for (;;) {, D# L( O. ?% Z5 q# u. H
  105.                 c = getchar();
    - o6 V4 E  v* e( t
  106.                 if (c == 'y' || c == 'Y')
    6 r( z8 c. j" x* O6 u5 D7 q
  107.                         break;7 Q. h: K% p$ _( V( T9 a" q% c: C8 @, z6 A
  108.                 if (c == 'n' || c == 'N') {1 A6 B$ ^/ v- @' H9 m
  109.                         printf("\nAborted.\n");( ~" W* f- N0 U
  110.                         return 1;1 a7 R# ]5 D2 p6 j
  111.                 }
    ( S3 o1 M( C* p$ `
  112.         }
    ! b# d6 S# {5 K* r2 M
  113.         if (writeparam(mac, stbid) == 0) 1 ^3 Y) `1 |7 J( D
  114.                 printf("Parameters changed.\n");
    - g3 p8 L7 e+ b; q

  115. * w# X- `/ _0 v
  116.         return 0;3 m) L5 p5 Y/ I
  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   E" o" \* A$ K! Q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% |: f  R4 H/ }( q7 _" {
你用的编译命令行格式是什么?. _& d. g% N7 J0 K5 w& p! d
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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