查看: 15877|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- S# d2 D% s9 ~8 f" [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: l- F- {* v% A! a2 G- v2 W9 t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 W+ |& W  N  g+ @7 lusage: himr <address> <value>. sample: himr 0x80040000 0x0
1 G) X9 z2 R/ R* z
! a1 G5 [# o3 ~1 P' ?  T- V4 I: o9 _9 ]& i; ]' m( |1 q1 W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* q& q* }! e3 Y8 E1 X0 ~- g
+ a' |# I! b; w0 ~& t. [8 G补充内容 (2012-3-8 09:42):
/ T+ Z7 {1 n! [5 jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ @  P9 |- v; R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
( F+ H, j2 B! M8 {& y. M% k% C0 ~: U. l* c! N0 X* ?. @5 |
himr <address> <value>. sample: himr 0x80040000 0x0% Z3 T$ [1 _( k2 a- e; X* o

0 S* ], y5 n# S! [例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- Y8 s! p1 y) i% T; bhimr 0x80040000 0x003 y. w. i2 L: `! Z' a
himr 0x80040001 0x11
' R  Q/ k9 f3 _% }* I5 |) ?8 E! |1 Khimr 0x80040002 0x22
  J- E+ j! O/ W7 K% l5 b8 Vhimr 0x80040003 0x335 B" c2 w6 v$ l
himr 0x80040004 0x44" k  M5 k7 p7 v. J
himr 0x80040005 0x559 l1 [6 X! G3 U5 G8 w, V

! ~6 c$ ?+ Y, e4 ^0 ~5 i$ E6 YSN也是类似。
- J7 O% z, g  p: o
: p, W! T8 ^( ]& N( h1 O1 ?现在主要是,谁告诉我们MAC和SN的地址?
! @0 g% q7 d6 m1 n5 d
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' R. ?$ \! `5 N, V* L  l9 N一直想找到运程修改MAC和SN的办法,苦于无解啊

( \+ b+ n8 C' u3 [& g+ P源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 S: V- Z3 w& ?9 c$ L* J/ i# X) @/ {

8 w0 w/ {+ k- P' \2 ?8 \! `, g$ V修改的代码早有了。到今天不会编译。& I+ V* e! Q! o2 C7 D: z" I- O
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 @/ P5 s+ S; q/ Y0 J- H
  2. #include <malloc.h>
      y+ ~* [+ U. j6 M9 ^
  3. #include <sys/types.h>
    6 k2 ^8 C8 D1 ?- B* x
  4. #include <sys/stat.h>
    6 m0 l; E  I" J) o" V4 U" f
  5. #include <sys/ioctl.h>
    " C4 c+ W7 m$ }
  6. #include <stdio.h>
    0 k# G1 ?9 z# \9 l& }
  7. #include <string.h>: _% l6 ^) I- D( U
  8. 9 ?5 T- t6 s, D- ?  s
  9. typedef struct {, R0 j& h; a$ G1 X2 s
  10.         unsigned int        e2prom_cmd_sub_addr;& e6 l' y0 {9 {, O
  11.         unsigned int        sub_addr_count;
    3 B" N1 o3 R+ F' t  H" F* q9 x7 @
  12.         unsigned char*        e2prom_cmd_data;
    ' o( k1 }+ i* v- X8 r+ z' _
  13.         unsigned int        data_count;
    1 X. x: {( C6 J) x
  14. } e2prom_s_cmd;
    0 o. c, X$ T& V

  15.   Y3 w* [' N+ P3 Y7 L
  16. #define E2PROM_CMD_READ 1
    4 z' L4 [* A/ N; s
  17. #define E2PROM_CMD_WRITE 2
    & t$ I4 O  Y4 ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- M: N5 N: r2 E/ P2 J3 O; N0 A
  19. - ~4 W6 [- S- U! W" U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; ]1 K) |; n9 L
  21. {- J  S; Y$ F1 J  }: ?
  22.         int fd, ret;
    8 H, P* W1 T3 o
  23.         e2prom_s_cmd arg;
    5 @/ Y8 l- R' x  I& s2 r; E! T
  24.         unsigned char buf[0x18];: [+ |. {! B( n) Z( a. h
  25. . `. U: J$ v2 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( e8 r3 j% C# S) c
  27.         if (fd  < 0) {
    4 h' X0 l5 V0 A7 [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 S, t& k5 h+ w0 j7 h
  29.                 return -1;3 D7 X7 H4 y  J8 L
  30.         }
    # E) G9 _. I0 P' X
  31.         arg.sub_addr_count      = 2;# N  ^! w! F0 g- a5 _
  32.         arg.data_count          = 0x18;9 U$ A: Y4 S' y( Z/ l- s" {  W" D
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      Q! e3 c/ m* X
  34.         arg.e2prom_cmd_data     = buf;
    3 j% N1 [! ?, k5 s- M. n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # ^2 X& f5 e* d5 u8 i; R
  36.         if (ret != 0) {& U! Q/ v  q% e3 E; n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& y9 K+ b' y( C. `8 J4 ]+ Z) u
  38.                 return -1;
    1 S, s, k1 Q# e+ ~
  39.         }$ o( |* [- S: y
  40.         memcpy(mac, buf, 6);2 V0 J! J8 k8 ?3 e( c
  41.         memcpy(stbid, &buf[6], 18);
    3 H$ w4 T6 N' l
  42.         stbid[18] = '\0';
    & e# x0 L/ Q/ h6 A$ D5 C

  43. 1 _+ U) T" z5 l) ]9 g8 _
  44.         return 0;
    ; `* c! R: Y: Q- U) w2 \# }  W
  45. }& z4 Q8 o- m, |! c  }( K( k- P

  46. ! Q9 J: d( ~. y+ H" X5 S, G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid). d* E0 e  a3 i& U! S2 g) g3 m
  48. {
    ( ~3 r% Z- w* k2 _  y& U0 `
  49.         int fd, ret;
    $ E( }' V+ J# m# ]8 C/ ?
  50.         e2prom_s_cmd arg;
      C2 A" m  A7 z, M& P
  51.         unsigned char buf[0x18];! K4 ^( d3 r# o2 H6 P" v4 ~

  52. ( O( X0 B& X5 k  Z/ e5 D
  53.         memcpy(buf, mac, 6);, Q3 _) d% ]7 k  J1 w/ I6 H8 S" P& Z: h
  54.         memcpy(&buf[6], stbid, 18);
    ( ]* o! z. N9 {6 o! ]' D  _9 _9 R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 w7 X! z$ l/ l1 D/ G/ L6 }5 Y
  56.         if (fd  < 0) {: m  J% W6 n9 D  Y+ i$ \- o/ }- e$ F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; p" B3 h* i8 l0 B9 i  D. `' g: L  w
  58.                 return -1;% d. t+ P) T4 Q4 A2 R- {
  59.         }# p" _; W5 F; H6 n, G; h
  60.         arg.sub_addr_count      = 2;! @. K" L: I( ~1 @7 Y
  61.         arg.data_count          = 0x18;
    & ]; V) C! a+ h# {! ~* F5 K
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 E  b% E- \  l- L0 n
  63.         arg.e2prom_cmd_data     = buf;
    0 i2 x) M7 t0 `7 \. P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 t6 Z, L' x, B
  65.         if (ret != 0) {
    5 d; k+ o- n5 q( V) W$ c
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & p/ i/ @% K  H# ?4 z9 H2 s# Y
  67.                 return -1;# w0 J- K8 h8 S1 t+ {
  68.         }
    3 V6 R4 N5 x/ S( O

  69. 0 Q( B8 ^% [( b% A$ u
  70.         return 0;/ F' |; E& T8 l2 u8 q
  71. }
    6 S5 p2 B$ l$ p: p, V3 B6 [

  72. ' T  l3 Q8 s0 F( b: V9 j
  73. int main()
    - N0 E5 q5 n: y: F1 }" W
  74. {9 q6 c/ z6 H4 q( K5 u' v
  75.         char c;$ z& e+ I7 E, f9 q
  76.         int i, macs[6];0 b& x+ q9 J. k' P' E& @* f  t& M
  77.         unsigned char mac[6];
    ; L+ i( e  A/ C( U/ l* i9 M6 a
  78.         unsigned char stbid[256];- A! P/ H4 h" ?; ]

  79. . c) @& j  |' p1 r) c- c7 r9 b
  80.         if (readparam(mac, stbid) < 0)
    5 m6 y/ K0 v5 w  q3 k9 \6 a% Y
  81.                 return 1;& z1 j$ m' d0 |7 Q
  82. 7 \+ x" ]8 G# i1 h) a- ]  @3 h: v4 z
  83.         printf("Current parameters: \n");4 Z" G1 ^" R5 J" z) v& H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. j, \# _6 h3 E) \3 G; g9 n# x) U' W) g3 ~
  85.         printf("  STBID: %s\n", stbid);
    * W, d' Z' P/ K$ P/ Y
  86.        
    ; y9 S( Q. J  l: B* C9 _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ( s, W3 v- `- _9 W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 {" l* s( [* l' d8 w( Q
  89.                 printf("Input MAC error\n");
    2 F0 e0 T5 l* }) }" K; `  k+ X( J
  90.                 return 1;" Q6 t2 b! c' t0 `
  91.         }
    2 k# P- t) c, }  K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: {6 K& _/ _- N" N8 a6 }1 X) U
  93.         printf("\nPlease input new STBID: ");  e3 S1 t* L7 U4 t+ ~! s3 ?
  94.         scanf("%s", stbid);
    - C! y. y, f; E6 b
  95.         if (strlen(stbid) != 18) {
    " k  o3 k$ p# m
  96.                 printf("Invalid stbid\n");
    , Y+ f% `% d7 `
  97.                 return 1;
    5 f: Q" `3 Q) i' {9 h+ L* u0 N
  98.         }
    0 C9 z; B/ c# p  M: P; {; _+ n; v/ f
  99.         printf("\nNew parameters: \n");& E  W' m; }' l" f" i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( `0 m9 I% ~8 g
  101.         printf("  STBID: %s\n", stbid);. G& t" P- t9 K1 m1 {9 J1 {

  102. 7 H( F* v& d! S- O( u2 |$ a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 X( W* p( C4 R6 ^0 x
  104.         for (;;) {% v# v4 e8 i- `
  105.                 c = getchar();
    1 {. S# ?3 e8 D- b
  106.                 if (c == 'y' || c == 'Y')
    : [; Y: G: F* [+ f
  107.                         break;4 o8 S! j, u. u- a$ @0 h3 j' K* X
  108.                 if (c == 'n' || c == 'N') {
    4 x% N& Y) B% w) j
  109.                         printf("\nAborted.\n");
    1 i5 M. l, I) Y5 p" ?0 M# _
  110.                         return 1;5 A* o& x. w8 X$ z' ^/ G
  111.                 }
    " \) o4 Y$ f; L( {5 m
  112.         }% p( s$ g3 l$ o2 H# F& Z8 b
  113.         if (writeparam(mac, stbid) == 0) & i. U8 H7 F2 V  e$ H
  114.                 printf("Parameters changed.\n");2 e7 T! i% J; Q" q' H! T
  115. 7 u0 U# h' _" R9 H( N* c
  116.         return 0;9 x! g7 S( O# ~
  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
+ T* ?6 O- Y) J4 u& |* a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" r  q+ K  Q# s* G你用的编译命令行格式是什么?
# ]. K8 k* ^) O  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客服返回顶部