查看: 17505|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# v6 i  ?7 Q) C$ k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) M0 T$ o% ~, h% U# A- \, C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* W  a. U* n* w$ L' M- E1 K4 d6 \usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 y) n% B& n- B) B+ O+ t. o) @$ c$ D6 y1 h7 w: n4 b( _; g, @

4 N% d4 T+ R9 D7 M  ~+ b7 x不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* ?4 I  b& [: U" v

) Z5 h! @) }9 j7 e4 c! z2 e" g补充内容 (2012-3-8 09:42):7 I  V8 Z) M" i1 _/ B
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 \$ p& `: ?9 k9 _6 s1 d8 B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
" }) P5 |# e" ~( X0 \' s8 o& A, E% r5 L) I( S
himr <address> <value>. sample: himr 0x80040000 0x09 Y9 y3 w; U* b* c$ Q" L6 ?- @
5 s8 ~# T: F" [# k5 u2 G5 g
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: s6 N( h8 T: d* S5 F/ ihimr 0x80040000 0x00
/ \+ C, X, q/ b/ ?& ?6 zhimr 0x80040001 0x11, d3 s5 ^" m$ Z, Q3 N
himr 0x80040002 0x22
" _) f9 p* z: f% n2 }himr 0x80040003 0x33
% U5 q* Y* l" k! \' jhimr 0x80040004 0x44# x, D( u" ^% X8 X' W) o; J
himr 0x80040005 0x55
3 H! u* B; j. g0 J" K
& h1 s4 l* d1 v+ WSN也是类似。
- D0 d7 x- m, a2 X, C# `/ p
7 t5 X+ Q/ h! e% Y, t现在主要是,谁告诉我们MAC和SN的地址?. L3 ^. [, B  d4 V) j
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 j' @, T1 Z3 i# D
一直想找到运程修改MAC和SN的办法,苦于无解啊
# s& i" f0 {2 s3 V4 g
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; |' u* V: R: R; N! N
- W( X5 [, s5 A
修改的代码早有了。到今天不会编译。
4 p/ ]7 Z+ h5 w5 V  x8 V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) l6 P$ }0 }9 k  Z- }
  2. #include <malloc.h>6 l$ t2 [& M  r5 i7 j% e3 G
  3. #include <sys/types.h>
    # D: {& E9 g; ?/ c
  4. #include <sys/stat.h>! H5 p! F% ^: P, N
  5. #include <sys/ioctl.h>5 [. G6 n* z+ h& C
  6. #include <stdio.h>
    9 n0 u$ T* q% G' L9 c- W
  7. #include <string.h>
    4 a+ [( ~. C1 d) |( d

  8. 9 Y3 g; @: K7 ?
  9. typedef struct {1 |% a# R( E2 A5 n: e  ?
  10.         unsigned int        e2prom_cmd_sub_addr;; `+ O. J, n/ W% M* i# y" K
  11.         unsigned int        sub_addr_count;
    & z1 e/ o- l. {! {/ g8 D
  12.         unsigned char*        e2prom_cmd_data;  p+ A4 U& X" V
  13.         unsigned int        data_count;
    % {1 U- m: c7 b6 J, p" a5 Q5 G
  14. } e2prom_s_cmd;
    * G. Z' w$ h3 z4 I- j1 m

  15. 8 j8 W% J0 I$ x5 v
  16. #define E2PROM_CMD_READ 1
    % h) K& u& t, O9 A  B* z
  17. #define E2PROM_CMD_WRITE 2
    / R0 f7 O1 b2 L$ u6 q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"7 z8 S9 o" Y0 ^  Y( K- n& v; J, A3 l
  19. # K  q. ]4 _8 G  y4 S+ S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ o/ e( y* U. U% Z2 K5 u
  21. {
    ; n) S( [' A$ I1 I3 F2 y- j+ V
  22.         int fd, ret;
    ! d6 h. a' r! r
  23.         e2prom_s_cmd arg;
    ; D( F2 X4 L* _* ]( V: ^) }  v
  24.         unsigned char buf[0x18];
    " @0 w% x$ w3 e' y' m

  25. * C$ Y7 b$ ]8 F% [% _! H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. t, j- z; i* h5 v! d5 h) b) }
  27.         if (fd  < 0) {
    3 g5 t+ O: `9 h! M6 c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & e4 v  X  B. e0 ^& B$ F
  29.                 return -1;
    % |* d8 L. `/ @8 _
  30.         }8 ~; A8 [" `8 C' N5 W; u# _: g  R7 H
  31.         arg.sub_addr_count      = 2;2 S5 A/ T) t9 p; t# I
  32.         arg.data_count          = 0x18;3 t: N  l. B( I$ v! k
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 A8 o2 C5 Y5 r
  34.         arg.e2prom_cmd_data     = buf;9 l, o7 z% k# |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : q5 m$ L/ p! c+ c
  36.         if (ret != 0) {
    3 G& |! X* O0 X" y' E& i- ?/ {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; {" A4 @5 _' n1 n4 R
  38.                 return -1;
    # f3 j7 [, [% D+ _+ [
  39.         }
    * d( Z% @& o/ ^4 e# h2 i
  40.         memcpy(mac, buf, 6);' I4 L' I7 A* F; t# E8 P9 s# T
  41.         memcpy(stbid, &buf[6], 18);
    1 b( d9 J, N% S7 W2 M" a6 Z2 h
  42.         stbid[18] = '\0';7 w4 p" w+ G# c, R. E/ O
  43. ( }0 x5 `' K2 \7 z( P
  44.         return 0;. |/ k* N/ R: ?1 y
  45. }5 v$ O' u/ G$ \- R/ W8 K0 J3 ^- y

  46. + c4 j# `0 K' M/ H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" T' \8 p$ q, A4 h8 s! C
  48. {
    : [$ q& T& ^: i2 G$ X; P4 y  I
  49.         int fd, ret;
    4 N* w- D0 s" q6 h
  50.         e2prom_s_cmd arg;" B) z7 p3 R# \7 \# ]0 k2 g4 c
  51.         unsigned char buf[0x18];
    0 c: |7 X3 c- ~: I3 T

  52. * O' A: q& P2 f* c
  53.         memcpy(buf, mac, 6);
    * `( G9 d0 O  P0 Y& i
  54.         memcpy(&buf[6], stbid, 18);8 A% m3 V- ?0 s* q8 |8 n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& c2 m( w+ \' A/ f4 a
  56.         if (fd  < 0) {3 @- b5 s; v/ ~: n; ~4 o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 c1 e7 d& i) v6 o
  58.                 return -1;/ B) B! I1 g# g, q
  59.         }1 {! ~, d# U7 Q; d; `% {
  60.         arg.sub_addr_count      = 2;" W4 g) ]7 A; Z! b
  61.         arg.data_count          = 0x18;
    7 Z% S: Q1 I: y# {9 U- F
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 F! E; g! G3 @5 J7 s
  63.         arg.e2prom_cmd_data     = buf;2 o* q7 x( u) }: U5 J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 Q- E: m1 ?0 t1 I/ y7 I
  65.         if (ret != 0) {
    / D1 I* r3 ?$ Q0 g* t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' A1 }& g+ B; }# m
  67.                 return -1;* }$ `/ F) G: Q0 W, H
  68.         }, F/ M' _- B3 l: ~% L
  69. 3 N8 v0 m8 N9 D
  70.         return 0;' p- L2 N; ]% |, L
  71. }
    0 ^0 K3 q- ?9 E- f! Z, W
  72. 9 M/ P6 O7 R2 z
  73. int main()
    / k. g, e* K) A. v
  74. {
    % |" ?/ L- X4 h% m7 K5 g4 j" H# O
  75.         char c;" x; {( v# b: A  K1 H
  76.         int i, macs[6];
    3 R# i/ W: C9 V% `9 B% Q6 L
  77.         unsigned char mac[6];
    ' `3 r% T& S0 E3 x
  78.         unsigned char stbid[256];
    . D8 a7 ~) i0 w$ v- I' [- ?
  79. 2 n; W* p$ A! s3 [+ m' Y" j( l# w
  80.         if (readparam(mac, stbid) < 0)/ M& d* d. a" X9 Z
  81.                 return 1;
    1 \; N$ a" @, T/ ~% n# c) u

  82.   N( J! z, `2 d& a9 t2 G: I
  83.         printf("Current parameters: \n");
    . k& g- }& p  X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 j) Z* ?. @3 X
  85.         printf("  STBID: %s\n", stbid);
    9 C5 p& t1 K/ P- T) i7 s
  86.        
    # c4 l6 n* E6 }5 c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; R$ f* C: ?% Y% i# X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / L; A; H* v3 D2 ?
  89.                 printf("Input MAC error\n");
    9 a( e7 e) Z( I: i  K" a' O. E
  90.                 return 1;% `0 u) h6 L# o
  91.         }: r6 ?6 ^2 u3 }9 j2 e  l/ j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 F  I# |' {' H" r; b
  93.         printf("\nPlease input new STBID: ");
    $ _5 _" C% A( J/ [& B' D* e
  94.         scanf("%s", stbid);( L/ z2 w0 Z$ u6 C
  95.         if (strlen(stbid) != 18) {
    " h9 D( \, K" ^& u
  96.                 printf("Invalid stbid\n");% C% q$ ?/ L# C$ G! E% A& q
  97.                 return 1;2 b/ C8 O; s' c
  98.         }
    - D1 M" n3 z7 d4 z& P% o. w" ^
  99.         printf("\nNew parameters: \n");: t, ~# u; ]* k2 g9 n
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 n# ]" d' u' o8 T% r8 p/ R
  101.         printf("  STBID: %s\n", stbid);- t; T- J% g+ H# U3 w7 D

  102. 6 R" ~" e) a5 _4 ~1 P, W( ]. Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");& v% U# h4 J- P% W' v
  104.         for (;;) {
    / _) k, P2 X' X  K
  105.                 c = getchar();
    $ c" H! A2 ?& x
  106.                 if (c == 'y' || c == 'Y')
    6 S  C5 }* q4 s8 q' t! z3 D/ w
  107.                         break;* v' V; o; z  j4 G1 `# E9 j
  108.                 if (c == 'n' || c == 'N') {
    + r/ T/ ]2 S4 R$ G. s$ p# Q
  109.                         printf("\nAborted.\n");/ x. ?; n9 i% l4 Z* K) B
  110.                         return 1;
    " t- k5 _# }2 j7 j1 o. h% R' l3 Z
  111.                 }9 m: u/ u2 M* T
  112.         }
    1 u% r8 k  I7 f* e5 t. K6 T
  113.         if (writeparam(mac, stbid) == 0) ) `+ b2 o2 O& ]7 O" ~
  114.                 printf("Parameters changed.\n");
    ' M8 V" F, w! C; T7 ?8 t
  115. 0 h' o6 J9 C) P9 H+ p$ H3 t1 z
  116.         return 0;9 B# u' s' S8 z. s1 h
  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
8 c( V$ |5 N0 {8 _" M( o; }, }! x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 w' ?# P: V' P+ E- n6 W- s你用的编译命令行格式是什么?! f. y/ }, l2 H$ f& k3 z' p
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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