查看: 17264|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 O: q- g/ g0 N7 k# d5 I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 q2 v; V- J* C$ H) Y2 V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% Y) A2 M7 b9 S: d# s8 K! c' A
usage: himr <address> <value>. sample: himr 0x80040000 0x05 k: n. T6 ^1 l$ t- P% }' X

; e8 z7 C& Q4 \" K+ g
0 i$ V" ~) _6 R# O9 b' z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  V  ^, Y; D, K) ?/ k+ O! D
* I+ |; X& l" x3 T补充内容 (2012-3-8 09:42):# L# q" x7 f: @& O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; D) |" b% O1 U( T* i& |% \
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。/ ]( P" r" s5 f! ?( l

' u2 ?$ A" U: j- W2 Nhimr <address> <value>. sample: himr 0x80040000 0x0
6 W9 ?" W9 G2 j/ R8 M. E3 v* `/ [+ |# |$ O4 H3 ~+ }5 m3 e
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, a1 {7 p' H# P; Q$ O' M& yhimr 0x80040000 0x00) h: K8 z7 _5 L  v4 G1 o
himr 0x80040001 0x11
$ A0 @& ]0 P; [- L6 R. B; F; s' dhimr 0x80040002 0x22
0 I3 n: O/ ^& X/ a1 X2 m7 Ahimr 0x80040003 0x33- ?9 |/ Z7 ?/ E
himr 0x80040004 0x44! V" ?; i  W1 O/ L7 h( K
himr 0x80040005 0x55, a( o; R9 v6 t; L2 i; o
( h8 h0 O( M% x* s+ g* k: X5 C
SN也是类似。
+ _* O6 I, t% E6 c# s
  X# t6 ^4 O4 F" r; H现在主要是,谁告诉我们MAC和SN的地址?
! m! m  ~1 ^6 Q+ ^# H
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 i9 F% C  I7 G: M! b3 L
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 X# V0 H* H* m. d- n
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- @( K/ h. u* w- S+ A3 a6 B1 A
! R4 B& ~( {' F, `修改的代码早有了。到今天不会编译。0 R% Q1 W7 ~- J; G& s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ x" t+ M- z. w$ N/ M
  2. #include <malloc.h>
    5 \2 u$ e9 l$ X# z
  3. #include <sys/types.h>. g. W' x5 r' T; v* \# E
  4. #include <sys/stat.h>1 D% ?; k7 ]! n+ b
  5. #include <sys/ioctl.h>
    ; M' v4 Q5 a2 a
  6. #include <stdio.h>( x" f1 P8 p  m% T+ J
  7. #include <string.h>' e/ i4 ^6 k6 F* g% f$ G
  8. " p' r& l/ ^2 k3 d# U* f2 t7 ^+ I
  9. typedef struct {
    * A, ~: W% }7 b% [/ s& I; o
  10.         unsigned int        e2prom_cmd_sub_addr;+ J5 A. J/ N( r+ L
  11.         unsigned int        sub_addr_count;6 ^( s& F6 ?/ H) w: {3 c$ t
  12.         unsigned char*        e2prom_cmd_data;
    6 y1 x! F) }0 X. \$ k
  13.         unsigned int        data_count;
    ' J& @# t* t# H1 z; t% i- {3 ^/ I
  14. } e2prom_s_cmd;
    $ P- O, \! o# L( z& q# t. p7 S

  15. 2 b0 e" N2 W+ l+ c- q
  16. #define E2PROM_CMD_READ 1
    * z; d3 b" z3 D, V0 f
  17. #define E2PROM_CMD_WRITE 2
    ( v9 ?) ^! N, Y9 ]. e+ j3 g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    " m: b. V. k0 {

  19. 3 G* o# a. v$ [1 Z. D: e; A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)5 y; t6 o! O! P6 K5 X, q/ m4 y$ H- C
  21. {0 w* s" _$ [4 E8 p
  22.         int fd, ret;: t  |4 P& \/ N  V' E) L" w1 N
  23.         e2prom_s_cmd arg;
    * g; t3 L4 O& F
  24.         unsigned char buf[0x18];3 R6 N' M1 H5 Z. e

  25. + `/ [- Y' V! W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / [) _1 r$ _$ U# z( b, A8 T
  27.         if (fd  < 0) {
    ' y  I$ T5 v. f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % J  z2 ~# y3 ^/ A0 H/ ?1 U/ \
  29.                 return -1;& r( {9 K0 q; W* x
  30.         }+ q7 L( Y1 V9 o. g# L
  31.         arg.sub_addr_count      = 2;' `# P4 t& I; U7 [, T$ r. o
  32.         arg.data_count          = 0x18;
    * b) m9 U; ~! u
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 j: Q/ K/ C2 B: G( M4 `
  34.         arg.e2prom_cmd_data     = buf;8 {* L9 j9 Y+ Z# ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* O% y. E' J& a1 k2 h
  36.         if (ret != 0) {
    ' n" P7 X; s# \; F" m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # @: ]" k& S* }- ?& k5 g
  38.                 return -1;' x1 Q! Z5 {& V# r3 @2 `% u5 b9 w
  39.         }( N7 \# W& ]% |! V+ B
  40.         memcpy(mac, buf, 6);$ i3 h; ^) v+ `# I' t) B- D/ U8 h
  41.         memcpy(stbid, &buf[6], 18);
    + |$ t* N! R) Z! Z4 h' z5 n  G
  42.         stbid[18] = '\0';  |. t9 b% ~  y/ r' G) f& R( l
  43. 5 \, u( [; p: n% z% Z0 t! F& x
  44.         return 0;7 N. F: v& P! F: v
  45. }1 |  B: ]9 Q0 s  R/ o; a  n! V0 s
  46. ; \2 n+ T2 y$ C8 Z; q5 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). _' ?- P) f" D8 k8 O) L1 N$ ?
  48. {
    6 A) G+ S- d0 x: |
  49.         int fd, ret;, v2 m& g7 \; e0 P( H9 a
  50.         e2prom_s_cmd arg;
    4 |9 M. Y3 Q, m
  51.         unsigned char buf[0x18];3 [/ F8 T2 X5 b% N  J8 [

  52. 0 S  H+ g1 J) j. o" w
  53.         memcpy(buf, mac, 6);
    9 u1 V) f5 T6 n' q# l
  54.         memcpy(&buf[6], stbid, 18);
    9 p  h+ v  j0 ^2 S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 `5 H4 @5 n0 \3 \) Z1 J3 ]+ k
  56.         if (fd  < 0) {
    ; |3 }+ ^6 E6 {6 M4 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  B" N, [+ F# s6 K. C8 E( k
  58.                 return -1;) y# K# b; l- i7 z
  59.         }
    8 ~8 `$ V/ r' o% N* f- v
  60.         arg.sub_addr_count      = 2;
    / v+ O" u6 p) @* Z
  61.         arg.data_count          = 0x18;
    / z3 y5 R5 ?8 x" F9 L6 v6 ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / X- [7 ?0 a) u! y6 ]# N
  63.         arg.e2prom_cmd_data     = buf;
    / ]9 F$ o% [. m" P8 Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);; Q3 H( A  H0 J0 p9 o* h
  65.         if (ret != 0) {5 R: F* W2 Z5 ~+ }3 F8 p4 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, L; j4 o/ S# a7 ~( Y: ?! u
  67.                 return -1;
    2 s' s7 ~0 g$ N0 }" O
  68.         }
    7 r! l/ o. y; v) e

  69. 8 c) J! f% V  ]! A
  70.         return 0;# G5 K/ v* ?' Y7 P0 I* K3 x2 {
  71. }
    ( Z7 j. i% [6 W! n: \
  72. , ?( U) k  l) {' q
  73. int main()
    + B5 S; u* ~2 e7 x
  74. {: j1 e$ V; Z4 d' Y: O0 H
  75.         char c;% j) j7 U2 V. q" i- K. T: m5 `. D8 u9 L  x
  76.         int i, macs[6];& v' c. _  D" T% j3 u. `
  77.         unsigned char mac[6];
      ~  j' u2 C; }0 h7 E
  78.         unsigned char stbid[256];' \0 ~% V- }$ P: g7 y9 G

  79. + o" l) |1 s/ R! G
  80.         if (readparam(mac, stbid) < 0)
    - `# g4 P" I8 b. z1 w7 s
  81.                 return 1;
      W% T3 ~5 i, o9 R$ a! ]4 \
  82. 4 U6 c! V5 P! D% c0 f0 A1 `
  83.         printf("Current parameters: \n");$ v6 B3 b( ^! X: ?7 z1 z% B  y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 q5 k4 A# v! ~6 Y* Q0 R' b# I5 y" n. A
  85.         printf("  STBID: %s\n", stbid);
    5 s: \  B' k7 v4 n) R* G. d2 h
  86.        
    7 B' c5 m* @: \# J( B9 V4 ^& F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( M& U3 D$ t1 {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # \  ]7 _7 j. J9 h9 f1 ]
  89.                 printf("Input MAC error\n");
    4 u7 k  H6 B/ u# z
  90.                 return 1;, ]6 P7 i/ S" i6 ]
  91.         }
    # |6 G: g( i4 j1 K( }/ s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; `# T: P+ S% K' x' j" {& Q7 j
  93.         printf("\nPlease input new STBID: ");
    1 Z# y$ L! c9 K  Y1 e4 C6 k1 Q
  94.         scanf("%s", stbid);
    ' B+ E/ |0 v% E3 f( B- r
  95.         if (strlen(stbid) != 18) {
    . V" C6 M6 |8 M
  96.                 printf("Invalid stbid\n");
    ( u5 U* y0 }* ~0 I9 ?% ?
  97.                 return 1;
    $ w8 S# j  p2 d. M) o; ^; s
  98.         }
    6 S( q( D% w  p" n. m% p
  99.         printf("\nNew parameters: \n");
    * H. W! L( V4 [$ M1 t5 S% Q3 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # w5 B* e9 ^( C: N! s
  101.         printf("  STBID: %s\n", stbid);
    * Y; i/ h( Q: [' D1 t

  102. - L- j1 F( q! f. u0 e
  103.         printf("\nDo you want to change paramemters? (y/N) ");: W# E6 e9 j' A7 J0 H( @
  104.         for (;;) {2 M* ?( n" L, f; Q
  105.                 c = getchar();
    * z$ ~$ ~/ x# L
  106.                 if (c == 'y' || c == 'Y')
    3 A, N: Y2 R" B# C0 s4 [
  107.                         break;
    : Q6 ^& t- R! L2 h
  108.                 if (c == 'n' || c == 'N') {# l0 Z' Q! Y8 _" \
  109.                         printf("\nAborted.\n");
    # m* v# ?; X, Q
  110.                         return 1;
    2 J; Z) V3 ?) e$ [
  111.                 }0 Z# Y: [2 w) l$ A5 g' N' k8 V8 k
  112.         }
    ' {3 F/ e3 W3 F% z& k5 {' J
  113.         if (writeparam(mac, stbid) == 0) : }9 [, q( ^+ u- T" J. l4 |$ M
  114.                 printf("Parameters changed.\n");/ H3 |( ~( {1 {& i5 |! e

  115. " ~1 X# j- D7 M% F/ K/ y" p, j
  116.         return 0;
    2 u; n0 M5 v% B/ m  A/ n  \
  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
/ [0 C- t, A, a0 i在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% s5 X' ?% ~0 ^4 {# C* V" V8 |你用的编译命令行格式是什么?* B8 j* T$ H# I; s/ |8 \7 o7 y  ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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