查看: 16250|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 s- \$ v, a* c& M" w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: \1 ?4 A% G$ x" t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( }& v3 {# p+ v/ u0 ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0
+ A. G3 ?5 U4 s+ P4 @9 R
4 j) H+ }! p8 L$ J
. O  N0 q; l1 D. G  Z7 h5 c+ r不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
% d  G# v: M3 f# Q. F" K  k) L& Q( v5 o( [
补充内容 (2012-3-8 09:42):1 D$ }5 ?7 u/ `0 y- V2 M+ S6 O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ A3 X8 @2 N' o# f7 A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 Q0 ?3 e  @" R+ K. U* x9 w0 n2 q' n7 N6 {
himr <address> <value>. sample: himr 0x80040000 0x0
$ K# b' G, _) V( p+ M2 Z* \
9 B% Z2 o1 i7 P/ `例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( C$ z4 e9 V1 G8 {himr 0x80040000 0x00
1 c5 v8 o- H3 ~# t! u: b% |' L. hhimr 0x80040001 0x11# _7 \7 n( X6 x! v% H" j0 v" `
himr 0x80040002 0x22. C) l9 {0 ^+ `( [6 o
himr 0x80040003 0x33
% J$ k# o3 V8 Mhimr 0x80040004 0x44
% N/ g8 j+ N% o7 D5 ^himr 0x80040005 0x55: W- c, z+ N3 N! r6 I

* ^5 H0 t. A% z# E6 a5 k9 `6 y6 TSN也是类似。: A' I9 C1 ~7 l% @( d
6 O' u4 D: T7 X3 y9 a7 M0 A
现在主要是,谁告诉我们MAC和SN的地址?& e$ \" d& y0 s$ F% M3 J% o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ F) V; N& ~+ S4 i& v9 j一直想找到运程修改MAC和SN的办法,苦于无解啊
+ |% j1 T' [9 C: E8 A# }
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 b" n, K' T6 S/ M7 y9 I+ q; ]8 X2 f! K# Q
修改的代码早有了。到今天不会编译。/ [' O$ J  B5 \6 S
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>. [) k# h/ `4 ?% N. O2 G
  2. #include <malloc.h>
    : L4 A& r, r! l2 E
  3. #include <sys/types.h>
    9 G- ~' {; y) K8 l6 J
  4. #include <sys/stat.h>; ?: l& S" p& s- o+ X/ C# m
  5. #include <sys/ioctl.h>
    7 q& l% d8 e% p2 d2 }) t2 D. y) ^5 o% V
  6. #include <stdio.h>
    ; q$ x7 R0 B: C! J
  7. #include <string.h>
    $ c4 k$ H, D! g0 L& G

  8. & H* o# v0 M0 S. n8 G
  9. typedef struct {" A: p9 {2 j- s! d" p7 ~
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) u' ?2 X, f+ r! |) m
  11.         unsigned int        sub_addr_count;
    % Y  z( H+ O$ D$ B. n# N0 x( P
  12.         unsigned char*        e2prom_cmd_data;
    / z. d2 I# T* s, T# m
  13.         unsigned int        data_count;
    ; v5 j- C5 d- q9 b+ X
  14. } e2prom_s_cmd;
    $ g& D$ t/ O, H" ^

  15. $ C+ A5 H9 w* w6 g: u, w
  16. #define E2PROM_CMD_READ 1
    , W& l9 k7 N! k
  17. #define E2PROM_CMD_WRITE 21 s! O% o2 Z) e2 h$ m0 a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / t. K, P5 @( B7 `+ h3 Z/ [
  19. # y/ w! m5 ~* x% Q6 a
  20. static int readparam(unsigned char *mac, unsigned char *stbid): B$ k: ^+ ]( g& Z$ j. N0 n
  21. {0 B3 y4 m- U3 @: Z( z  h2 Q
  22.         int fd, ret;, X* j) K9 j8 O0 G: Z
  23.         e2prom_s_cmd arg;4 P% n7 x* q  J# e( j
  24.         unsigned char buf[0x18];+ V) f1 Y9 p; W& O! b" h; [" I8 v
  25. 1 ~( b$ {! k* d8 R& {" X! ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& `1 Q: S. i8 t$ Q/ z7 _+ S0 P
  27.         if (fd  < 0) {: i3 G5 L0 B$ {3 F' g7 n8 E% s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# t/ w: T! K5 M: l
  29.                 return -1;7 p4 `3 q6 B1 ]
  30.         }
    . v9 y1 ^+ d% \
  31.         arg.sub_addr_count      = 2;$ b2 w* Z9 x& |
  32.         arg.data_count          = 0x18;- n! Z' ]. x* g% r$ F% L2 d% H% Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 g/ g" l4 r' F- O" V( u
  34.         arg.e2prom_cmd_data     = buf;6 K9 _8 e7 e- f( {3 Q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 f$ U6 x$ Y2 {3 l
  36.         if (ret != 0) {
    % a1 }0 e. Q) z; G% _& ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - ~. Y9 w7 {, c, I% }% C) ~
  38.                 return -1;( r' Y" c1 @( D) Q
  39.         }
    ! |: o* h+ k+ @7 Y% i, r
  40.         memcpy(mac, buf, 6);
    1 [2 G* I+ H2 ?3 p
  41.         memcpy(stbid, &buf[6], 18);" m8 n. I; O' x
  42.         stbid[18] = '\0';5 B" m0 k9 m3 @/ p! y7 j  D5 `) S$ [

  43. 1 S" g- }$ I+ Q4 {
  44.         return 0;" k. u8 V# ^: T5 `2 N' m% ]
  45. }+ P' {. V  U& f

  46. 9 @; E% A) Z& I) O( q9 y5 ]" W% m' B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 b3 }# w; A  F4 B
  48. {3 f0 Z! e( {5 l/ e2 B
  49.         int fd, ret;
    " b: p. Y  e0 n0 h
  50.         e2prom_s_cmd arg;
    1 y! U3 {) G- C! Q: F: Q- s
  51.         unsigned char buf[0x18];
    / B6 e) T1 S/ |( d; A! W

  52. % y$ Y$ e4 _: Z
  53.         memcpy(buf, mac, 6);; l+ \! W6 [" R( e. ~- {# d7 I, G
  54.         memcpy(&buf[6], stbid, 18);
    ; [7 M! t0 K& Y) ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! T; k& }7 D  J% _: L8 X) X
  56.         if (fd  < 0) {4 J. Q4 N% H/ ?- o% n
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, `' h. g" C6 v1 d; Q9 h
  58.                 return -1;) e0 W9 h/ i; l# C6 l  s2 E
  59.         }
    ! C/ g5 w8 p7 z/ g5 d5 c
  60.         arg.sub_addr_count      = 2;& z+ v$ H! E3 t0 n
  61.         arg.data_count          = 0x18;* g; S: Z# B0 W  P: T% {
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ z  ]8 j6 ~, V# h3 ~
  63.         arg.e2prom_cmd_data     = buf;: J* V* {) x# p2 l* p3 d7 `* k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 ]( ^6 k4 k- ]4 _7 j) ~* w
  65.         if (ret != 0) {
    % ~+ k0 r  a! S  R* t+ i" G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);6 ?5 `- ~# h9 ]
  67.                 return -1;, x- @/ X; Z* c4 l+ C1 O5 _
  68.         }. H. [- }" z  h8 ^, h& Q, L
  69. ( r  X/ @* I" h7 U* ], `- d7 k3 Y
  70.         return 0;* x* @3 H+ u3 ~, X
  71. }
    4 R5 e$ z# C/ h% z8 g
  72. - e3 ]. `5 {% @: m
  73. int main()- j$ F& |9 O8 f2 m5 [, x( M  y
  74. {5 o7 t! g  X+ x; `' ]0 u
  75.         char c;( z# Q! U, c5 z6 [
  76.         int i, macs[6];
    ; G# Q: M. X: y: V7 t& L
  77.         unsigned char mac[6];
    " u, |+ f) n9 R9 e% b0 }$ {
  78.         unsigned char stbid[256];" x0 h8 q8 u* y$ W; f/ Z. l/ |! L
  79.   Q6 L5 C9 m" J6 J3 D0 T& ]
  80.         if (readparam(mac, stbid) < 0)
    6 `6 a2 j5 v9 V& L8 P
  81.                 return 1;
    * ~; b' b8 C5 t7 s; f( g

  82. 2 _6 t0 Z/ N* l  {+ m6 S: z/ t8 G! d
  83.         printf("Current parameters: \n");
    , Y+ `1 m$ _. l. v, b6 C) Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : ?" z1 b) s2 R% y6 Z# J
  85.         printf("  STBID: %s\n", stbid);
    8 w$ m4 y5 ^% |4 j8 B
  86.         5 [2 b/ R2 m: P1 O$ P3 [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. w& a/ i0 Y/ J3 E& c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . [2 h" k% E- Z1 o! b) r9 d& g2 _
  89.                 printf("Input MAC error\n");5 P0 l/ l3 Q! u0 P9 Q
  90.                 return 1;
    - ~2 V* E( }5 @' j8 T
  91.         }7 L  j8 \3 E, v- g6 W5 Z' x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! U) u9 U! S% F- k6 p& o
  93.         printf("\nPlease input new STBID: ");
    ! z5 M1 S; S+ [/ K+ ~$ V5 r' {$ @! k
  94.         scanf("%s", stbid);
    * |% W% ]/ U# F$ z# R$ s" T" o
  95.         if (strlen(stbid) != 18) {/ r9 g2 ~: e. ]# N6 E6 H
  96.                 printf("Invalid stbid\n");
      Y3 s: ?4 U4 b9 |) b; u' U8 M7 T
  97.                 return 1;
      f. S8 p( T% {1 i/ B" \& h
  98.         }5 m/ v8 X6 z5 e" _2 ^* l
  99.         printf("\nNew parameters: \n");
    ' `" M) ?" l+ q  W2 [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 m8 @4 Q. f, P0 N; p
  101.         printf("  STBID: %s\n", stbid);
    * f3 V. T: `" @0 v

  102. # e! ?/ U4 C. ~. X
  103.         printf("\nDo you want to change paramemters? (y/N) ");* [, P6 x7 V4 u3 s. M
  104.         for (;;) {2 n" B" d0 }$ Z6 W% ^: G. K. K, F  D
  105.                 c = getchar();
    4 y6 R( o" V1 k  S3 A, Y) b2 T
  106.                 if (c == 'y' || c == 'Y')( @% \  d( C1 r
  107.                         break;
    2 Y- x: @* i+ M) r# j5 g7 j/ W/ e
  108.                 if (c == 'n' || c == 'N') {
    ! `+ ?* e( R7 i. T/ t: D+ }" B& \
  109.                         printf("\nAborted.\n");
    - n( z$ m3 ?0 ]0 w
  110.                         return 1;
    - _3 `/ L7 A, n& G
  111.                 }6 Y$ a- L& S5 P8 ^# ?2 W: w. W
  112.         }, \- [3 |4 x( P# z; X
  113.         if (writeparam(mac, stbid) == 0) , h; N+ P2 S1 ^. F# O
  114.                 printf("Parameters changed.\n");
    $ D3 l+ M0 }4 i2 G! D5 ]8 ]
  115. 2 t9 X' J- y- f) s( s1 s
  116.         return 0;7 O1 s" ~. P* L' {: P; r& 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 8 H; I$ @+ J3 \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- n! W' z2 J* l# G9 |, H9 X$ _
你用的编译命令行格式是什么?
7 n; d6 W3 u" d6 S( F6 f& e, H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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