查看: 16404|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 s$ y4 `: ?) e! L4 o
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 [' y9 C0 h4 @0 i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 S& @! W: ]; c% _* z
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& s+ v! M% T; q8 j6 ?; T" J9 U- ^: S( _) W0 h2 w8 J! S
1 i* \% g+ `: p
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; t  ]0 d7 ~* P1 K

" q6 G# h$ @& J7 ?4 ^* o; b补充内容 (2012-3-8 09:42):2 Z- R7 H! B" F' p1 S
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- X- O- l5 E# P* |/ e! L2 L
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 X. J% c; }2 X! L5 p2 B
* p; @/ k5 U/ Z# A
himr <address> <value>. sample: himr 0x80040000 0x01 b# Y+ t3 \" R
: k  A. V8 E* J: I' e$ @; l8 E' X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" _7 b6 Z- ^' f8 ~. O" B
himr 0x80040000 0x004 @  B7 Y' V  w
himr 0x80040001 0x11, O4 j) U4 t) E( P$ f3 c7 U! B' C
himr 0x80040002 0x22
1 s! v  I% M; v  h3 t( i4 f- `himr 0x80040003 0x338 _* e1 k0 b( F) Z2 g) j+ q& c
himr 0x80040004 0x44$ b' o* ]) v8 j: J0 q) b9 ]
himr 0x80040005 0x55+ @/ @9 Z  l+ Q/ ?! Y; H$ P% `
$ f5 \6 G% [" Y/ x
SN也是类似。* D, u6 v; A3 o5 c4 {4 ~
2 Z( B5 t1 C' H2 N& F
现在主要是,谁告诉我们MAC和SN的地址?
2 F- B3 {! a# |1 C# z, D. o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ |7 }3 ]9 l/ s, k1 {* ?一直想找到运程修改MAC和SN的办法,苦于无解啊

) z) F* |! @1 o4 a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 m  r2 Q, W& {0 a; v' N1 M/ U  \! d5 r6 C
修改的代码早有了。到今天不会编译。# J  Q* |8 n  T& ^, X+ j6 G1 v
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ W6 b; N* J( {) P# t
  2. #include <malloc.h>
    + j; @+ }* V4 h# g3 m
  3. #include <sys/types.h>
    ) z% m8 l- l- Q! v+ B
  4. #include <sys/stat.h>
    % U  F; N' o6 m
  5. #include <sys/ioctl.h>( G- b" ?# X) G' q
  6. #include <stdio.h>
    0 L' s) ?# h0 k1 |0 b7 i4 B2 I
  7. #include <string.h>0 _) |7 _4 U1 q* x1 w( P

  8. " V$ t1 H. b' \$ b
  9. typedef struct {  V% A, f( g0 q5 W# @. W
  10.         unsigned int        e2prom_cmd_sub_addr;
    * S6 c3 j: ~  T7 l8 @! g# Z0 k" O1 y0 {
  11.         unsigned int        sub_addr_count;$ P' x! |$ a' o. C% K6 e! K8 o, Y, \8 X6 k
  12.         unsigned char*        e2prom_cmd_data;5 H) _5 e- B& L6 {
  13.         unsigned int        data_count;
    & _/ M1 K0 d7 q. `
  14. } e2prom_s_cmd;2 j3 D+ F, l( ]2 Z' i

  15. 9 \1 q, ]: |" ]3 A" U) q- p+ Q
  16. #define E2PROM_CMD_READ 1$ w2 E3 k3 ]9 a. j7 l/ ^
  17. #define E2PROM_CMD_WRITE 20 l9 z3 h. \# b5 P. g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 R, ?1 G1 ~( p" Q

  19. 7 ?9 J+ u3 l8 N/ f/ `8 P- [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 e6 ]. N6 r. P: Y# b  a% E. I8 E
  21. {
    : I7 J& Y& S! U
  22.         int fd, ret;
    % L9 b% ~, i: u4 F. t
  23.         e2prom_s_cmd arg;
    - s) f5 t* ?! u* n' h
  24.         unsigned char buf[0x18];
    7 F; K0 f( _; V! c1 ]
  25. # u% l( [6 }. G- b
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 L2 F+ N: S  C
  27.         if (fd  < 0) {
    4 e4 u! h3 i; h. G. n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 U( O- ?" [/ s4 g& _0 @
  29.                 return -1;2 G0 |- W5 b' s7 P$ B% P0 @' ^, x% m
  30.         }
    4 h' o4 A  \' J5 `" X! m
  31.         arg.sub_addr_count      = 2;
    . B& l. e) K/ A# N
  32.         arg.data_count          = 0x18;/ K" P# f$ w! @) G4 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;* I( p7 s$ S( _' a( d, {
  34.         arg.e2prom_cmd_data     = buf;
    * O8 T8 Z& @& K, U8 v% R& ]5 u% j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 f5 S% J' `( o7 _
  36.         if (ret != 0) {
    4 ~! q/ v6 k( h5 n+ J* Q9 t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % B& N% a! g1 F8 B* d# G5 d- E5 A
  38.                 return -1;
    $ o* t- E& T3 s$ A; ]1 _
  39.         }7 |; Q, O9 B8 o: u+ J6 c
  40.         memcpy(mac, buf, 6);7 m4 b' O$ G& {; w6 o: B
  41.         memcpy(stbid, &buf[6], 18);7 B. d( [( [" u0 D7 c
  42.         stbid[18] = '\0';$ C8 [& g& p' b$ J+ F

  43. 6 c) w+ ?) U4 a: F: t) z, _
  44.         return 0;
    ) M& \' [- g* z9 h
  45. }
    6 \& H4 o! |- z7 P3 i

  46. " ^; n, a$ C9 A3 A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - f4 u' T. E/ h- v2 I
  48. {% I4 y1 ^* |4 b
  49.         int fd, ret;
    / C3 X  Q$ M+ Q3 o1 w1 r/ p, i- h
  50.         e2prom_s_cmd arg;
      ^( o- }  a4 e& ~- p' {$ l0 l
  51.         unsigned char buf[0x18];. y# b" {6 D" g; p- P5 `& D/ {
  52. " K7 B" t2 X5 }8 }& p# B
  53.         memcpy(buf, mac, 6);
    ! Y% Y' K" }& [
  54.         memcpy(&buf[6], stbid, 18);" T) K" A0 n0 n) [2 I4 x8 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : N, D1 s+ w0 R! ^0 |+ S$ G
  56.         if (fd  < 0) {% o# }% {) S$ m. r. Q' n  Z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) x, f3 W8 w8 ^5 G+ @
  58.                 return -1;3 {" t9 k, Z& s4 {# K( C! @
  59.         }
    / A4 R; V0 a0 u6 `+ u! z. Z
  60.         arg.sub_addr_count      = 2;
      W( r* s" u" A; @) h" f+ {- h
  61.         arg.data_count          = 0x18;1 i+ F  c# g+ C1 J
  62.         arg.e2prom_cmd_sub_addr = 0x290;; q, X6 w) Y6 `& n6 C' x8 b+ B
  63.         arg.e2prom_cmd_data     = buf;6 ?4 H+ J2 b2 n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) Z* k" _* A$ S; i( o' o
  65.         if (ret != 0) {) K6 y( L0 Y# L" n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - o" n8 B: ^2 x0 @
  67.                 return -1;
    ( A1 I& J, c) d) A2 h
  68.         }$ V# m# |3 i  [0 t5 G: L
  69. & O, G1 a8 W4 J3 S1 V
  70.         return 0;' R" z* J$ H9 ~. N7 c2 ^4 J
  71. }( D0 u' D, Y2 Q' t
  72. % |. K3 F! P* B6 u' t/ z0 _
  73. int main()9 w+ y) l# ~* n5 c. _
  74. {. R1 I0 t; E) o5 V, d
  75.         char c;
    9 o7 Y9 C+ u( g. t  ?3 ^
  76.         int i, macs[6];
    7 O1 l: h* X% T3 w
  77.         unsigned char mac[6];7 Z8 j3 g3 v) l7 t0 |6 z
  78.         unsigned char stbid[256];( j( Q) ?) T! }0 J! S4 g. |
  79. 9 ?0 y2 M/ V) ?" M8 c$ K6 f
  80.         if (readparam(mac, stbid) < 0)! g0 x5 f& L& }5 _7 @, y! e3 C3 ]
  81.                 return 1;
    ( V1 x% K9 R- [$ V" o2 H1 B
  82. ! [- C* r2 Y- e) W
  83.         printf("Current parameters: \n");9 y$ G/ r( `2 n) C- f7 F% U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 Q3 P* N. l, `0 j" ^
  85.         printf("  STBID: %s\n", stbid);9 @# _- f0 ~; c8 H
  86.        
    ) e' V, d8 W% j  I! f3 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , n4 O1 D1 |( `& [) [; l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 B! y& V2 P. n, f1 ]4 x
  89.                 printf("Input MAC error\n");
    + y+ v# k0 |$ A' O: C" C" r. q6 t  U4 c
  90.                 return 1;
    : C# x# Z" Q7 O; N* K
  91.         }
    1 ~7 p4 U) Z: ^% ^  Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' K9 N4 {! H1 V( J
  93.         printf("\nPlease input new STBID: ");
    7 h# _) o/ u/ D1 n
  94.         scanf("%s", stbid);
    1 B/ Y/ x  T1 [* |% G, a1 K
  95.         if (strlen(stbid) != 18) {+ F% r. x# k9 l( N: {# [
  96.                 printf("Invalid stbid\n");
    ) `9 g- D; s4 P1 I/ B9 R0 i1 t# I1 M/ i
  97.                 return 1;( u' q9 @% v. X" v& m% |
  98.         }% e6 w. B, O6 e; C
  99.         printf("\nNew parameters: \n");
    0 X/ u5 h5 I% j9 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 [% g3 m3 j7 O" {4 b3 a
  101.         printf("  STBID: %s\n", stbid);
    8 n* c1 H4 u( T; \

  102. 9 p" M7 S9 q$ X% O* D8 {
  103.         printf("\nDo you want to change paramemters? (y/N) ");- ?# O! Y3 h! S4 t
  104.         for (;;) {. e$ I$ S6 r. O- z# C
  105.                 c = getchar();. H6 g. e9 u' l4 e2 I# Q) Z
  106.                 if (c == 'y' || c == 'Y')' D9 A- T$ g; ^+ l9 l' W
  107.                         break;+ D  B6 m5 h0 L3 b+ u3 g( u( I
  108.                 if (c == 'n' || c == 'N') {2 P5 e, J! r# q; c% V, j
  109.                         printf("\nAborted.\n");
    ) d% Q5 g# W5 _
  110.                         return 1;
    : n* ?" i9 C2 j+ |) s  O
  111.                 }
    1 Z4 D; |5 ~) D$ Z! U! B, p
  112.         }
    . {3 U* g6 K  x+ g) A2 X
  113.         if (writeparam(mac, stbid) == 0)
    # J4 ]' |# K. D8 P/ _
  114.                 printf("Parameters changed.\n");
    3 R5 d. A) j9 B, @% Q

  115. 1 _% d- V) y. T8 f  w0 s+ `( N
  116.         return 0;1 m) Q5 p2 n' H( D  e
  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 / [& r5 H% G' t& b# C9 ~
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; a7 K) J  r5 s  B  d5 n
你用的编译命令行格式是什么?
, V- R, q1 j9 N, m' u6 P7 _" z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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