找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15746|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # a8 @% U, ^8 U6 P6 H2 F0 F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 ]+ J8 a% K' D. b4 \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( d4 {! V( d( dusage: himr <address> <value>. sample: himr 0x80040000 0x01 E1 G7 m2 v* d% \. ?
9 a6 @3 S7 `1 A) R
, R2 K1 a5 V6 S) ^
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% }  ?6 s2 s' U) i; @

* e0 f6 @6 h" d0 ~  Q4 k0 `0 m5 w补充内容 (2012-3-8 09:42):% l! w4 v8 `0 \6 P. A
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 ?6 W% V) W$ g* _- n
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
  ?/ A# B* F, F, E& M; N) S5 U. I! J/ g) p
himr <address> <value>. sample: himr 0x80040000 0x0) Z7 C0 C- M3 n& R# g4 g6 L/ ^+ Q

# h% |  u' w( i' D例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( M$ k3 l% I8 J# i9 D( e
himr 0x80040000 0x00! W! I$ L) M- B% s; F! \6 I# F' y
himr 0x80040001 0x11& I! a6 w# A$ x4 `+ C: X
himr 0x80040002 0x22
- {. _+ d) f) }1 D" S0 s) Vhimr 0x80040003 0x33
  W: ~: z7 {, q, V' whimr 0x80040004 0x44
* R) W$ I8 p4 B2 L5 ehimr 0x80040005 0x55
; m" c! j% n. H' M+ u1 U
$ M9 i! h% K' g7 NSN也是类似。: O! Q+ ~2 g! E$ f3 V, e
( s( |3 v- G$ B+ G  ]; h1 \' u
现在主要是,谁告诉我们MAC和SN的地址?
0 B- I, G+ s; x$ y" V9 g' ]& q$ @2 p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% {  N  B0 q0 R1 @& T, N一直想找到运程修改MAC和SN的办法,苦于无解啊
! e! c1 m9 r2 m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; K% Y4 Z0 q' u- ^$ F6 M. N' Z! z+ c4 ^
修改的代码早有了。到今天不会编译。
) b1 H- N, B) b( r7 i1 i! Y- V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 i8 B: i6 o1 }1 p/ c
  2. #include <malloc.h>
      [/ n" F' P/ L1 [! i7 u/ G, b* h
  3. #include <sys/types.h>
    # T' f& X& e, T5 u0 t" p
  4. #include <sys/stat.h>" x3 v+ {$ z7 E: N5 T' i
  5. #include <sys/ioctl.h>- e+ W  j1 g$ ^9 G: }
  6. #include <stdio.h>
    9 C  U! I% P: `+ c- y' g9 Y* o
  7. #include <string.h>
    ( G: B( o( H$ U% ?, i9 e

  8. ! I& X; |, E) [7 M
  9. typedef struct {
    6 s1 E: ]& Z8 \9 w
  10.         unsigned int        e2prom_cmd_sub_addr;8 K1 |; C& r; G  k7 M
  11.         unsigned int        sub_addr_count;
      f0 c, f# R! O+ i! l2 ^
  12.         unsigned char*        e2prom_cmd_data;! K3 _4 M' j6 e% r& P; k9 N
  13.         unsigned int        data_count;
    , C5 b+ {8 |7 ]7 B+ H6 E, ~$ h
  14. } e2prom_s_cmd;/ G. b/ M# h. B% x$ C' V

  15. / k7 D  @/ \. h! W( K& K
  16. #define E2PROM_CMD_READ 1
    ' Q6 b% q! V0 N& y
  17. #define E2PROM_CMD_WRITE 2
    & c( v3 {! x' |8 v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  Z% ?. T* _3 ]
  19. , Q3 p  @) J; O' ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % j7 t  ~$ W' Y$ P2 p( @1 w$ {6 _2 h
  21. {: R4 ^  K# X6 b1 I- ^5 J
  22.         int fd, ret;& V7 e$ ~' S) z( c: @# C' ]
  23.         e2prom_s_cmd arg;
    - ?9 v! |) F2 p7 G
  24.         unsigned char buf[0x18];
    5 n4 `0 F3 O4 N

  25. 6 x* q) J' v# X9 l- a! F2 o# L
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 W4 |5 l4 g9 ~/ g: U
  27.         if (fd  < 0) {
    ! u* M  [1 f5 n& Z3 h+ {5 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , M8 @* c5 r! c" H
  29.                 return -1;4 k( Z3 Q5 a: c2 ~
  30.         }
    1 E  J( q; l# y
  31.         arg.sub_addr_count      = 2;
    $ V) h4 Z& D7 a$ h
  32.         arg.data_count          = 0x18;
    & S. ?4 T: h1 r. t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) r. \" {" k3 A* f* T/ N/ ^
  34.         arg.e2prom_cmd_data     = buf;- z: p4 D+ B8 T3 u1 H& r4 ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  u+ v' R# s: I$ n
  36.         if (ret != 0) {
    1 ]: @/ J& a0 v9 q, q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# p5 `) G7 ^. o! \
  38.                 return -1;
    4 Q+ ?, g6 w% Y8 z: h, _
  39.         }
    % h4 w8 h2 h% V/ J+ z
  40.         memcpy(mac, buf, 6);
    ! D6 y8 C. w9 B0 q! y* d, f
  41.         memcpy(stbid, &buf[6], 18);
    ( Z; P1 H* Y- d3 d
  42.         stbid[18] = '\0';- M0 Z/ N1 I  W% a7 @

  43. * d: ]0 D& D8 N; j
  44.         return 0;* s0 g; w( Q0 [1 V# Q4 q) d: x
  45. }* }  |8 t& Q& c' X  S; Y0 F

  46. 7 F% a$ B# F! u
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 j. N7 s! w9 R
  48. {7 B( g4 V/ h! \1 Q3 w: Y: A, q
  49.         int fd, ret;- r8 j( I4 u5 [, @
  50.         e2prom_s_cmd arg;$ z+ q) r$ j2 s: k2 N7 z; F% L* g
  51.         unsigned char buf[0x18];
    $ t* {5 P4 U7 x/ d8 [! [
  52. , n( s5 H( Q9 t- b- N$ {. p# ^
  53.         memcpy(buf, mac, 6);3 {& }! c: {: T9 Y
  54.         memcpy(&buf[6], stbid, 18);2 L5 Y; A' C8 m2 r/ C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! k) k& \% |+ Q
  56.         if (fd  < 0) {/ G, ^5 W% J( P+ j0 p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ J# u7 I' {! ]) q' m2 K
  58.                 return -1;4 G" k: {, s* E# q, u/ X  H, P
  59.         }
    # ?8 w! x7 c$ }/ J$ t) t4 O/ z8 P
  60.         arg.sub_addr_count      = 2;
    # B6 w8 @8 F# f* x
  61.         arg.data_count          = 0x18;
    ! y0 w/ y; l# Z' T, C
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( C: J6 ?4 O" J7 L
  63.         arg.e2prom_cmd_data     = buf;
    ! a5 J: ^+ O: ?' }: L3 ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ f+ q, c$ s- k) O" T
  65.         if (ret != 0) {
    ! h( H' Q! o4 F# p! e- ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 l, h" |3 O$ C: q% l6 w( C  \
  67.                 return -1;% Y4 \+ F0 p& T
  68.         }
    ( s2 v+ |$ b  G& V) l1 Z
  69. + }2 z. b3 \* R2 ]8 s3 D/ c/ I
  70.         return 0;& g2 _) ~* J( M- n* h/ t
  71. }
    * Q, K+ B& W& ?( [7 C$ T5 c
  72. $ P, r- ^% y5 h3 ^
  73. int main()
    ' J; _1 T  R6 x! `4 b
  74. {
      Z  Y$ g4 @1 ~" b' h
  75.         char c;8 c  w2 d- W$ J6 v- h/ a, H7 j( `
  76.         int i, macs[6];% d1 m) N& P" `0 n! r: P$ p
  77.         unsigned char mac[6];
    - Y. |' @( J/ D* P: l& X4 z
  78.         unsigned char stbid[256];
    9 k4 u* s! f& G
  79. & `, d2 g" a2 z- v6 k# w. h
  80.         if (readparam(mac, stbid) < 0)
    2 i0 z! f( w! r! i
  81.                 return 1;* _! O2 b9 f9 _8 \" Z% k  f" I/ S

  82. 7 H8 ]/ s* F! U* [% f3 s
  83.         printf("Current parameters: \n");- t" H( Y+ [! ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ ~5 z' ^5 P8 F
  85.         printf("  STBID: %s\n", stbid);0 |" B& O5 r: b  y, ?/ n1 x3 D$ c
  86.        
    / w+ P4 h: L2 j: S) z( @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; c, Y) U& `5 w% F1 P! O' S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 H. V5 p6 N5 Z2 [, x' ^
  89.                 printf("Input MAC error\n");
    6 i) @7 h5 `  M: ?, S8 C3 o/ q9 |3 w
  90.                 return 1;
    ' K* u+ s% T3 I( M9 k+ K
  91.         }
    ) z: w  U/ B% y1 B6 I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " S" x: ~2 c, z% K* g/ m- g
  93.         printf("\nPlease input new STBID: ");- E' o6 ]2 Z! _9 w
  94.         scanf("%s", stbid);
    ( u" i/ v3 |& n2 R6 ^+ h) d
  95.         if (strlen(stbid) != 18) {
    9 a1 [/ O- s/ {& R9 I, ?
  96.                 printf("Invalid stbid\n");5 _3 r$ Z# C* ?! y* {
  97.                 return 1;
    2 a3 C/ y' e. b2 D1 h- U3 G
  98.         }
    + c! r3 a/ ]/ W: U5 p% W
  99.         printf("\nNew parameters: \n");
    , Y. k% F  G# }0 a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ ~" L1 n2 c9 _+ g( l5 N1 E  t, I+ f
  101.         printf("  STBID: %s\n", stbid);7 k, T9 o! P' e
  102. - p, ~7 @& E5 k) B: e! z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 z" P4 M5 m; G
  104.         for (;;) {
    ( T( |5 K. }% Q
  105.                 c = getchar();* T) s" `6 ]# }$ D$ @2 X( i
  106.                 if (c == 'y' || c == 'Y')
    & s- S/ d0 ]& L$ ^& ]5 i
  107.                         break;
    9 E/ @8 m* `3 R& P8 O
  108.                 if (c == 'n' || c == 'N') {
    * K! c9 _, q& i/ N( J' ^/ V7 O
  109.                         printf("\nAborted.\n");
      V* M! \7 e: z
  110.                         return 1;9 R5 m* c- r7 s' O
  111.                 }4 Y' j0 ?# F- O
  112.         }
    * A6 K9 e' @) B
  113.         if (writeparam(mac, stbid) == 0) & r3 B  }: X  W9 z  n" v
  114.                 printf("Parameters changed.\n");+ C/ i  R# n8 N* f; R) U  A
  115. : X% l4 j2 X$ [1 r0 E
  116.         return 0;
    2 F% C3 P9 v; s/ 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 1 _' P( P" |! P  Y& O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 _% B1 ^/ n/ [1 ~" @% u
你用的编译命令行格式是什么?
' h* r" X. R, H% |4 I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-12 06:17 , Processed in 0.038562 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表