查看: 16536|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 _! l; h: B- ^" j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* L# U. C/ c* P- S( o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 y. O9 P$ ]! [6 r' d5 v% w& @
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  X& C( t! j$ w: L4 j9 K) `2 R  O/ b% U. h. R
* m+ t/ M" q4 h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 L# H4 d4 j" A' `/ B; C" }
. ?6 }/ u6 {. p8 l补充内容 (2012-3-8 09:42):" a+ b2 A, [2 s1 `9 ~$ }/ }- x
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 a& f4 _/ Q- b8 @* g2 r, v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ `9 e. v7 K2 d/ M
8 K2 ^; }: e1 n" @, L6 ]9 F
himr <address> <value>. sample: himr 0x80040000 0x0
" q) u" d& c1 `& U1 Y7 M# Y6 u6 W6 h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' f' |! F/ T5 ]! c& G$ \9 d* m  v' e% U
himr 0x80040000 0x00
; |- w) w" `& j1 P5 R- Yhimr 0x80040001 0x111 }+ h! V1 q4 q" b% h% N& R9 @
himr 0x80040002 0x22
% p$ Q( h- w4 l  _# A, Jhimr 0x80040003 0x33
+ M$ H) d8 V8 N- g6 ~himr 0x80040004 0x442 m6 X4 y+ f3 Q* }
himr 0x80040005 0x55* c+ L" H) X$ S" ]

0 v3 K' \$ l* D) z7 MSN也是类似。6 ^' v$ _. W  Z1 g+ f
) _- Z' o  Y4 D
现在主要是,谁告诉我们MAC和SN的地址?
& L! L+ _$ r' Z: ]$ p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : g# h8 z, W+ t
一直想找到运程修改MAC和SN的办法,苦于无解啊
# h! c: @" j3 J- k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) R* v( j) H& F7 C: e* D
! ]: T. v+ w2 C5 w0 B
修改的代码早有了。到今天不会编译。
) A- \1 N* f3 O3 y) Z( E; Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ K+ [3 W1 E+ ^8 ^7 C
  2. #include <malloc.h>
    8 F1 A' C/ Z9 f: j( v/ _5 V
  3. #include <sys/types.h>
    2 r1 g0 z3 D4 e3 ~- T; L, d
  4. #include <sys/stat.h>' P; I, O# x  C) B
  5. #include <sys/ioctl.h># R: O: F' I) X. w) m" q
  6. #include <stdio.h>* k6 s" i. c. D) T- \
  7. #include <string.h>
    : ^' `& ?+ d7 ?& f8 z* L
  8. 4 A; J5 s1 s& h' l, \  I
  9. typedef struct {
    7 f( n) S" u' j5 A& P/ i
  10.         unsigned int        e2prom_cmd_sub_addr;- a- g5 C+ F2 g9 E; j  H
  11.         unsigned int        sub_addr_count;2 K6 l: o! O7 b/ e8 ]1 O
  12.         unsigned char*        e2prom_cmd_data;
    ) @) G6 g) y) V4 K7 ]4 R
  13.         unsigned int        data_count;% t4 W: y$ \6 ?) t( P3 n' J$ S% C
  14. } e2prom_s_cmd;
    # V8 j; z# L. a/ |! `

  15. % j! g& {5 _3 R9 ?& b
  16. #define E2PROM_CMD_READ 1& T. r$ E9 x1 C
  17. #define E2PROM_CMD_WRITE 2
    ! c( }# N, M. m* o4 f+ ^5 V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 e: O4 z- ~# I( y' c" o

  19. ( R' D. R' G+ Z! l6 i' I1 s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ E2 J+ x1 B% D4 }) q
  21. {
    7 v! M1 f! r1 n8 o2 ~
  22.         int fd, ret;$ u0 |! f6 r% `% [8 z* i) {
  23.         e2prom_s_cmd arg;( x4 s* e& B4 Z$ _5 C7 H
  24.         unsigned char buf[0x18];. P3 a) R: R2 b! J8 A% d1 `

  25. ' D* V8 M, g3 ?1 u2 }% T. \. C8 {
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 R& M" M+ E/ W' N
  27.         if (fd  < 0) {0 k5 ?( U! K  g% K# L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 q1 i' {3 n% n8 e2 r' B8 U
  29.                 return -1;
    6 n. Q! `0 N' h9 i6 }# ]
  30.         }
    ) C5 i3 u) V: n6 n8 h
  31.         arg.sub_addr_count      = 2;
    3 h  Y* D5 X* U
  32.         arg.data_count          = 0x18;
    , `% c8 V4 v+ @  I0 C8 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;& E" V% \( d( n1 @5 G; }
  34.         arg.e2prom_cmd_data     = buf;+ H& l; @: c' k: Y2 s+ C; i( L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ s( }2 ~9 h8 J0 V4 ^
  36.         if (ret != 0) {3 j; r& B  s! q$ J" E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' j0 M. ^2 q4 ?3 w$ L% _: v
  38.                 return -1;# ]# o( S% k4 l
  39.         }
    " r" P/ o/ _. F; X
  40.         memcpy(mac, buf, 6);( R8 ~/ s5 j3 w
  41.         memcpy(stbid, &buf[6], 18);
    - ?4 A: Y2 r* @/ q: v
  42.         stbid[18] = '\0';
    ( S$ |% j& I7 T

  43. 8 b# j  g6 p- Q/ ~. w3 }
  44.         return 0;
    4 p4 d) [& b1 \8 v$ l
  45. }
    6 }+ D5 S2 x) y+ s) e2 T
  46. * P; P; e& W% M; W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 C- n% o- |% f+ A# Z" B
  48. {7 F4 A- v' p. ]4 d* l# N
  49.         int fd, ret;+ }* a( p/ l) m2 q! @' `! m* j/ x5 p
  50.         e2prom_s_cmd arg;9 X% U) |) ^! S% _9 B* j/ i3 e) X
  51.         unsigned char buf[0x18];
    * F8 I' b& M6 X  p1 I* F: o6 W
  52. 1 ]# t0 E. q* B; S! D, r
  53.         memcpy(buf, mac, 6);
    - X$ j6 I2 u, y: C' K# E! j- s1 }
  54.         memcpy(&buf[6], stbid, 18);  G0 ^! G9 d- D- h$ c' z& C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 p: x- w/ ?. b* _& j
  56.         if (fd  < 0) {
    8 l2 b- ]+ l  n5 p8 a  l( l- i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, N& _& M+ ?( y8 Q& n& q0 X2 S
  58.                 return -1;
    # r. s2 U/ J, \* {7 K! r
  59.         }
    1 `; h# I2 K" g: n6 u5 J
  60.         arg.sub_addr_count      = 2;1 H$ \) x$ L2 a: \# Q
  61.         arg.data_count          = 0x18;
    ! E7 u: q5 g8 l. x" J' P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : |) v1 _* g. X6 `
  63.         arg.e2prom_cmd_data     = buf;) e& o. E( s! m: \2 b# L5 ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & G1 U. ]6 z# ]" ^
  65.         if (ret != 0) {2 L  v8 [. ]1 m7 V; b+ P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % q3 o: q2 R$ U8 \+ d" N
  67.                 return -1;
    + Z) k: N% D6 k
  68.         }! x& U6 F, k/ z7 a0 M/ u" `9 l* Q

  69. 0 [% ~) W2 L7 @: J' W& s% i
  70.         return 0;
    8 w9 P$ T4 n, y" j* ^/ j0 e
  71. }
    , s0 X/ r( X. v, o+ R
  72. 7 ]9 j  n$ O6 s! v0 v& @$ y6 w# Q0 P
  73. int main()9 U' c& q0 i8 W! ^3 ]- @
  74. {3 [& e; t, u2 U& D
  75.         char c;% Y+ C2 [# o: l3 J( q% h3 O9 Y
  76.         int i, macs[6];
    $ P, U7 ^7 [5 ^" w. r9 v; n3 I
  77.         unsigned char mac[6];: `( _$ D. J* q3 y- x
  78.         unsigned char stbid[256];
    - t) h9 o( s' d" M  r

  79. 3 N+ z2 g8 {* m( g" k  ^, |
  80.         if (readparam(mac, stbid) < 0). R5 `  t; m; i
  81.                 return 1;
    . o! M8 r7 _5 V) ~, d- j) f& S1 _
  82. ! ~( w% d, D( ~
  83.         printf("Current parameters: \n");
    % b3 d) l; k$ \: U8 F6 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& U9 l5 Y* s  {
  85.         printf("  STBID: %s\n", stbid);$ O5 y! o; z  s" G0 c5 `1 u
  86.        
    . u. \- v9 |' c: X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 D- x" c0 d: U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - G% @5 R# e& |
  89.                 printf("Input MAC error\n");
    5 p# q' c5 O* i, _7 q0 d0 C
  90.                 return 1;0 ]% }6 B3 F9 K& S, K4 M# ~" y* P
  91.         }
    $ G# x) N+ H9 D4 `6 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( d  ]. k7 \" S. C/ K
  93.         printf("\nPlease input new STBID: ");  L0 \0 U  d# u$ b, D  S
  94.         scanf("%s", stbid);
    2 h. L  S" J/ t
  95.         if (strlen(stbid) != 18) {% Z! \/ t3 `- i
  96.                 printf("Invalid stbid\n");7 Q% i! |9 A5 |& X  H
  97.                 return 1;
    ) H6 Y( n, r# }0 i( I) e7 }. p4 {+ V1 c7 |
  98.         }
    * C4 Q5 b. K$ I& [( E3 |' s
  99.         printf("\nNew parameters: \n");
    ' m( F% k! M5 K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 d) }1 Z6 d" k
  101.         printf("  STBID: %s\n", stbid);; J( B9 f3 a4 n' f. h* l* ^
  102. : f0 G! v7 K# u% G" I! t/ ]- ^0 L! J( I
  103.         printf("\nDo you want to change paramemters? (y/N) ");! `! f0 k, X$ F( [
  104.         for (;;) {3 d: x7 v! |7 d) c# u) Q$ ^
  105.                 c = getchar();/ @) `, \# ~& B, m1 W" U" [9 O
  106.                 if (c == 'y' || c == 'Y')0 w- Z7 f- M7 E& N
  107.                         break;) I7 c) [7 C" T6 }. T
  108.                 if (c == 'n' || c == 'N') {
    # r$ ?. b& u- z, ]
  109.                         printf("\nAborted.\n");
    ( l! C, V1 S6 b& Z# V# E$ j
  110.                         return 1;
    2 ]/ {9 q6 a' R0 n! q% J0 p
  111.                 }) Z5 W  B9 T* s  H
  112.         }
    ) ^  Q0 B. }: F7 H6 p( \& l6 }" }, x
  113.         if (writeparam(mac, stbid) == 0) % U0 I0 R" \2 y. X7 x
  114.                 printf("Parameters changed.\n");
    2 m) s% T; U3 ?" ]

  115. 9 R, [" a. A3 K2 i) B, a  M- f
  116.         return 0;' R/ _7 u5 N$ C& k$ v& ^( C% Z7 z
  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 ! I2 d" @- T# w; ^
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 i' L8 B! i& O. K) Y( M# `你用的编译命令行格式是什么?
! T7 \+ W8 D6 v, b$ {" A9 Q& j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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