查看: 16726|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * x( L! x& G; R- J, w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; H& u2 S  j' L0 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ T2 _  M, q" {  u8 |usage: himr <address> <value>. sample: himr 0x80040000 0x02 ^) E! M& D% K! I' i

$ I; b$ R& t+ v# i8 A! l; U
+ \6 K: b* V% D6 h) z7 Y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* N# M  |5 x# F% f) n2 q
" _: l& t' L3 v) H补充内容 (2012-3-8 09:42):
( ^6 \$ o( t& ?: b$ {! qhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 g  v' k* [0 ]: u: [& ]& g8 F& j
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ t7 t+ B; }# Z2 g# r& w  N& ]7 k
1 ^5 i5 c, d( A0 [6 [; j& yhimr <address> <value>. sample: himr 0x80040000 0x0
5 l& d2 c! N9 k& D6 d/ Y) o8 `6 _0 u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( ~- F) s0 Y" [* I- {5 i
himr 0x80040000 0x00% H4 |  W7 r7 N' j. [
himr 0x80040001 0x114 d$ a& ~# }/ X7 ]& v* f
himr 0x80040002 0x22
' n. @3 ?6 b% }) ^0 u; shimr 0x80040003 0x332 X: @1 ?3 t# X% Q0 }) `
himr 0x80040004 0x44& _% I9 \5 g. v, }9 N4 ^3 ]! }
himr 0x80040005 0x55
4 o1 I7 k) d5 M. N2 h- f: R! y6 g4 Z  F) V& A, L
SN也是类似。3 z* L6 P! D5 P5 z' o' |
0 X6 ?3 n9 e& v0 f
现在主要是,谁告诉我们MAC和SN的地址?
& O. y" K! n# k7 ~( g# f. d; w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   |" r- |9 W4 k* W- e
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 t) Q3 i7 ]; u& {( ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 x6 @0 F8 D6 c2 ?# y
& E5 t9 Y1 S: U) F# Z修改的代码早有了。到今天不会编译。' ~# b8 f6 _7 n
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, ]* v6 B2 f: `6 v7 S. l1 K
  2. #include <malloc.h>
    3 F* E  A) N$ k% `* N
  3. #include <sys/types.h>
    $ F1 q  n! j$ l0 I
  4. #include <sys/stat.h>
    ) x# w' w% p. w" |% @
  5. #include <sys/ioctl.h>
    # h; K8 d# o: p" Z+ L/ M
  6. #include <stdio.h>
    ! q5 p$ {7 G% q: ^/ _
  7. #include <string.h>; m- x2 Y% `3 A+ D% s
  8. + V8 m9 Y, o, ?" |2 {# c
  9. typedef struct {
    6 r$ M) ?/ f- s5 \3 s3 M2 l
  10.         unsigned int        e2prom_cmd_sub_addr;8 d4 W7 f) S; O/ Z: R7 O& Y9 r
  11.         unsigned int        sub_addr_count;8 r) `3 R2 F. U; [, T; a1 |  P  i
  12.         unsigned char*        e2prom_cmd_data;0 Y. A1 `/ H6 Y$ g" ]
  13.         unsigned int        data_count;
    0 ?3 ^- R8 Y* ^% Z( M9 L
  14. } e2prom_s_cmd;3 R2 H3 m% l4 w
  15. $ \/ S0 O, X) b! V; u, a
  16. #define E2PROM_CMD_READ 1
    7 h0 x* D# x: x0 }
  17. #define E2PROM_CMD_WRITE 2+ }& b8 q% F8 ?' Y6 G" W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 I3 L$ P2 j8 B6 ^& p
  19. 6 N0 i# E( G$ `0 m7 D% z. a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ B7 F2 S8 X+ p4 P- z3 O/ _
  21. {
    & D6 b8 R6 E, K
  22.         int fd, ret;
    * I% {2 U% `2 ?: B9 ?  e0 U4 \6 y0 H
  23.         e2prom_s_cmd arg;7 n3 ~6 O& n7 T3 ~  z& t, n3 L3 Z
  24.         unsigned char buf[0x18];9 @5 G5 ~2 z5 W3 r
  25. 4 R; }$ N! r0 `0 J6 G( ^
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 l! O5 o% N! s8 y- x
  27.         if (fd  < 0) {* w4 A6 S% L' j* Z4 u/ t6 E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - s# E# u' r% A
  29.                 return -1;
    8 u: `2 X: H2 m0 M
  30.         }
    0 m5 n0 P6 ?! {: s9 q3 D6 e4 W
  31.         arg.sub_addr_count      = 2;
    ' p$ x# u9 [, q+ A7 F. L. n
  32.         arg.data_count          = 0x18;
    ) g/ l! |, [7 o( ?3 h/ s
  33.         arg.e2prom_cmd_sub_addr = 0x290;: i0 Z9 d' `( }, P& A0 C
  34.         arg.e2prom_cmd_data     = buf;
    , ^2 k0 B1 a  |1 P# Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : N" W( X. E: F! v
  36.         if (ret != 0) {
    $ I* g  C6 \$ C5 r  R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! r; r- Z- Z8 Q
  38.                 return -1;
    / X( U! i" k1 j) {7 p
  39.         }
    5 O* f& g- r! H
  40.         memcpy(mac, buf, 6);4 Z( O) ~- `4 G9 ~$ ?
  41.         memcpy(stbid, &buf[6], 18);
    , p- w' H/ c. {! T, l
  42.         stbid[18] = '\0';
    % `' B' x) `; p4 L
  43. " [0 n/ l# _$ n7 y, b8 n; w* e
  44.         return 0;" w5 v) O' R6 X+ X: s
  45. }" e: I3 L/ g( @6 n( t
  46. 0 x" B" K. S0 D* t5 c; L; Z9 o& N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 v- O; e8 ?: ]( m7 P
  48. {# V2 }3 w/ Q4 Z0 D) U4 ^
  49.         int fd, ret;3 D4 a3 b* y/ D9 t) H
  50.         e2prom_s_cmd arg;
    ! d2 e. D1 I/ M3 }. v% K! H
  51.         unsigned char buf[0x18];+ h" H3 i  L/ e( b

  52. 0 I  E7 k6 o- M1 _) k& t4 i
  53.         memcpy(buf, mac, 6);2 Z4 O' q6 J" D; O. w& ^
  54.         memcpy(&buf[6], stbid, 18);9 N4 C8 u. E& Q# I6 C; V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! d! G& s& H7 H! w0 n
  56.         if (fd  < 0) {
    % M9 E# Z* i2 I- I! [' L9 _% `8 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & O7 B$ @1 J2 i' {
  58.                 return -1;
    1 D- T3 s2 Z8 `! j4 I; r
  59.         }
    ! x! {, i& s) D% ^' J
  60.         arg.sub_addr_count      = 2;& x% z$ S2 F) G& F* p! F* b
  61.         arg.data_count          = 0x18;
    9 f$ P5 e6 O; x. c8 w9 A! n+ d
  62.         arg.e2prom_cmd_sub_addr = 0x290;- ]2 J" k: o6 K  r! |
  63.         arg.e2prom_cmd_data     = buf;
    ( a, G/ K, m1 D7 T( W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  J* e2 [0 e6 i6 \: p, \& Z# v
  65.         if (ret != 0) {' J4 `  i( i! I. _0 l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * \3 u% o! R, K, k
  67.                 return -1;5 C9 a5 a, b1 {9 _+ S% j" z% J( p
  68.         }
    0 b* k4 E( R# G" X
  69. 9 g3 O- u& }) H. R7 a
  70.         return 0;7 m( ?7 w6 G8 G0 d. ?
  71. }) P. Y" R: }  x: B+ x

  72. ) ^/ n% j8 Q- p; }# I
  73. int main()0 L* o8 Z" a( {
  74. {
    ! I5 @8 P. ?" ]( n8 `  ?
  75.         char c;
    & n$ m7 S0 a. d& U+ w% |; v! d
  76.         int i, macs[6];
    7 [- Z) a1 W* N
  77.         unsigned char mac[6];4 L: X1 M! q( F6 t1 c( F
  78.         unsigned char stbid[256];/ o# \: E- {/ z/ @% l

  79. * i5 H5 B# m" t6 P" j
  80.         if (readparam(mac, stbid) < 0), C5 P+ c5 C) h+ m$ k1 ]; Q* k
  81.                 return 1;
    1 B7 K- V9 ]2 }

  82. 4 m) H7 M& s/ I2 ]- E- ?# h" k/ t
  83.         printf("Current parameters: \n");, }7 ^4 {1 y  \. w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, \6 o$ h. D- G* N' U) V7 b
  85.         printf("  STBID: %s\n", stbid);" B2 B* ~2 L# B
  86.        
    2 o1 K: y! X/ [( U" f8 n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : }6 i! i( S. R! `( n0 t8 |6 W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, P8 R) A" [: P  W/ \
  89.                 printf("Input MAC error\n");$ y" _7 |0 U# a/ u2 d  g
  90.                 return 1;
    & h+ s' k2 O' {4 u) l# ^$ X( z: ^
  91.         }
    / j+ [  P& o. @. t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . l, C5 K$ o5 s5 H" K4 T6 {  c
  93.         printf("\nPlease input new STBID: ");) {1 w+ _/ P( F/ @8 e5 i$ E: M3 i
  94.         scanf("%s", stbid);
    : V) i. n% n* O0 h1 h7 A
  95.         if (strlen(stbid) != 18) {
    ' e2 Z  k8 q, d5 j1 T
  96.                 printf("Invalid stbid\n");" U- F7 A1 M- `% L) k( X) b
  97.                 return 1;7 L/ d4 E3 t9 v4 p- i
  98.         }
    . H% ]( @. F! l9 d1 V4 s
  99.         printf("\nNew parameters: \n");# ~% {. h1 u) V  @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 R$ s5 h) V; k2 u0 w
  101.         printf("  STBID: %s\n", stbid);
    8 {; P+ Y1 ^8 j

  102. 7 c. J. X7 r! w+ m% q: Z+ e0 S
  103.         printf("\nDo you want to change paramemters? (y/N) ");( P6 R2 D7 n  L4 Y/ Q+ e& x+ c7 L
  104.         for (;;) {
    . r1 V2 T" j1 f" k) r
  105.                 c = getchar();
    7 m2 h; g4 e9 G) v" [% Z
  106.                 if (c == 'y' || c == 'Y')
    ; T1 a9 B1 `9 g* ?
  107.                         break;
    # v7 q8 z3 H! x) u# \
  108.                 if (c == 'n' || c == 'N') {: X. m+ Z$ O$ Z" G6 d* f) q5 r
  109.                         printf("\nAborted.\n");
    : k) G) g. F$ h: O3 O9 D
  110.                         return 1;
    # \# c" ?8 |+ c! X, Y
  111.                 }
    ) s+ K3 k4 r* J7 U& X/ \, m# g# P3 t
  112.         }7 _! H  d! w* q6 x: [6 d5 I
  113.         if (writeparam(mac, stbid) == 0)
    9 @4 S6 f' {: e, @
  114.                 printf("Parameters changed.\n");0 b) ?& A, Z- z' v& I" m6 h* N
  115. ! Y, E9 G/ o) _4 v9 G/ x
  116.         return 0;
    9 z  k* T) [2 L/ @% Y* {/ V: r
  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 7 O7 b% @. x* N
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: N+ C# D* p% F# Y* ?" L0 {
你用的编译命令行格式是什么?* d! ]: K- \% x0 O
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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