查看: 17805|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 r) E/ L5 G% F0 s3 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ) g( D5 O. M. B9 \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* W9 a9 F2 o  V7 Q8 Z) Z, b: X  }
usage: himr <address> <value>. sample: himr 0x80040000 0x0* _$ C5 M" e/ g; {
+ H) \( Q7 s( r3 R2 R

: E- C8 L  b1 c  B  U$ w$ F: N不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ U8 M) g$ n2 v: C6 h
# I) _+ D! V: a0 U( i6 s4 X补充内容 (2012-3-8 09:42):6 H0 j% }9 ?# }2 u* B: ]7 G- j8 z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% v( m! N$ c% w) J& n0 U7 ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 T/ q/ t/ _5 F+ I: D( ^9 q  Q
5 b+ L, G/ F7 c1 z. q3 L2 F3 G# N0 r
himr <address> <value>. sample: himr 0x80040000 0x0
0 H1 w8 L" V0 E7 K. j$ x: j; O5 T- J" [; P$ V9 J" D
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 h( _" A" G! u5 n: ~8 W* a
himr 0x80040000 0x00
4 N# f' P  n  A6 Y. q% V" nhimr 0x80040001 0x11
! |* W; U! Y+ G% ]% R- l/ O9 vhimr 0x80040002 0x22. b- L! z2 H( {& R" m/ R  x3 t% E5 F0 O
himr 0x80040003 0x33
- s& e, I3 \0 ~  }himr 0x80040004 0x440 ]/ N$ A- \. c! p6 i+ G
himr 0x80040005 0x55* f' D. H7 F$ r9 `

5 a/ O/ s1 R- }* r, F- WSN也是类似。& u" a. C2 E+ D- U& S

2 K# A" R; B! E  a" M现在主要是,谁告诉我们MAC和SN的地址?
* H- t+ o+ K+ O( P* J1 P- [( [6 p" N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ }0 L& q; A) i, d* ?# N
一直想找到运程修改MAC和SN的办法,苦于无解啊
; [) `; e2 \% O4 t/ X; a
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# z0 l. U. m% w7 |1 H. p5 Q6 }9 q/ C, A4 m
修改的代码早有了。到今天不会编译。! u9 o& X) o1 W
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 T$ n) X; v- N$ \6 ?8 J
  2. #include <malloc.h>
    ) L  K, n0 g' |0 z
  3. #include <sys/types.h>
    2 `# a/ G/ [& m7 G( o
  4. #include <sys/stat.h>) _& H1 U0 I6 Z, y# ?. n
  5. #include <sys/ioctl.h>  [% I# [) b! u5 b5 m
  6. #include <stdio.h>5 _* d! w3 ^) u5 X+ b& o
  7. #include <string.h>& [. F7 a- u  ~+ u! V

  8. ; e4 p2 d6 Y4 y4 u7 [6 g
  9. typedef struct {
    * V$ L5 W5 w, |2 B6 k8 s
  10.         unsigned int        e2prom_cmd_sub_addr;6 g% V2 F$ ]0 p% e8 G/ e
  11.         unsigned int        sub_addr_count;
    0 W& Q5 Y- b9 f. P
  12.         unsigned char*        e2prom_cmd_data;
    & L( A( F; w: x/ y0 n$ P
  13.         unsigned int        data_count;
    - {9 F  m& [. K& o( f- {% H3 F4 v4 v
  14. } e2prom_s_cmd;
    2 F$ [: x. \; U) p8 a( e! p
  15. ; I" b. L" Q2 q& r0 J9 j8 @
  16. #define E2PROM_CMD_READ 1
    3 d7 G. r* J& M) f1 y$ x" D
  17. #define E2PROM_CMD_WRITE 2( `3 {' G, i: @' [1 }7 K9 X5 o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ \$ g! k# a8 @, O5 D  W; |
  19. % D4 |8 i( Q( b; \. X  D* _
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 v* e( w/ k8 N6 u5 F9 I) c' V
  21. {; C9 i2 j1 a) B" t
  22.         int fd, ret;
    ! n% Y1 s* o( O
  23.         e2prom_s_cmd arg;9 t( f+ U' ^8 I
  24.         unsigned char buf[0x18];/ C1 r2 u) S" q3 Y4 S$ J3 t! Q

  25. 9 P1 L' r5 s) H2 @. r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 z& Y" ~4 m4 u2 I3 U
  27.         if (fd  < 0) {
    ( O" p7 h( a, ~3 a2 c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) j, B: X" K1 A. O' t
  29.                 return -1;/ f5 \6 i: q) `" u6 P
  30.         }
    + \% [; A8 \# |" O
  31.         arg.sub_addr_count      = 2;
    ; m+ d+ S) [/ E# m% x, @% ^3 I9 I
  32.         arg.data_count          = 0x18;
    : ~# B2 W* f6 S2 T; J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 H9 X1 R  V; [; U( k# g
  34.         arg.e2prom_cmd_data     = buf;
    + q3 j' I+ l( s( A1 f1 a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 R: V) O9 \+ X& G" d) @: J
  36.         if (ret != 0) {
    ( I+ [/ L! a( u7 n' e3 J4 F0 A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# ~3 L; S% ?  \
  38.                 return -1;: @3 i' b; }" O8 I" o/ c4 ^& d1 r
  39.         }
    & v: E+ G7 P/ i$ d2 v" F& p) A" E) k
  40.         memcpy(mac, buf, 6);1 o, S9 f. e* m- Z1 w
  41.         memcpy(stbid, &buf[6], 18);* y0 F% h" b" e4 p) p$ d
  42.         stbid[18] = '\0';
    ! n& K( C# U& h9 g) {& v
  43.   C  e4 c* J+ _2 b
  44.         return 0;2 [/ y1 E+ A+ W. d
  45. }4 C$ i8 O% h/ ~

  46. $ t- U% r) K7 \. x& d" h) I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & Q$ Q. o/ F8 Z& T( Q
  48. {
    3 ]7 Q' r- Z/ c" h+ Y* a$ u
  49.         int fd, ret;
    , G# W" e3 ?4 L7 W* {6 T7 N$ U8 G2 a
  50.         e2prom_s_cmd arg;
    / l" r$ v, T# |) K8 y, x( T4 m- N
  51.         unsigned char buf[0x18];" J& }/ N3 j- `4 X- e4 s

  52. 9 M3 l% T6 y# }; m1 f7 s
  53.         memcpy(buf, mac, 6);
    2 j1 D7 ?7 |' T
  54.         memcpy(&buf[6], stbid, 18);5 E7 j1 v9 S* t$ l/ _3 ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! O" X- J; V2 r2 W" l, |
  56.         if (fd  < 0) {
    . E3 n" `! t: F& U. m$ {9 [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 B+ R2 E6 f4 j8 e0 U& M9 Z
  58.                 return -1;
    + D* {5 Y) x; v3 x
  59.         }
    3 B' q' u  x& X
  60.         arg.sub_addr_count      = 2;
    : W/ k+ p& O* s+ F+ q
  61.         arg.data_count          = 0x18;
    6 @+ x' W/ i& C  x, ?! j6 m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( r: k9 _  \# ]* Z4 _
  63.         arg.e2prom_cmd_data     = buf;
    " q- }+ U" w- E" D8 |; H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) ]( D- x- n  H0 U2 S& e. X
  65.         if (ret != 0) {
    / B* \, t6 X9 E/ N" }0 [
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' U0 j* R! Q" t8 W
  67.                 return -1;2 ]; V) ]/ Y1 y  ^. ]
  68.         }
    7 |3 y5 a; y* s8 I( L6 O

  69.   k6 A  @8 n8 {4 R8 P& C
  70.         return 0;0 i8 E8 h. s. r/ b$ s% |( q, j: D
  71. }& V# @7 k1 n8 n9 s7 s8 k* D
  72. % s" V$ u: C1 E3 K5 v
  73. int main()
    + z# z& d3 O) J/ F$ Q
  74. {
    ' h* R9 R. L  j0 o# @# R( H5 w- U. g
  75.         char c;
    ' B3 `% l- w; m3 b2 S" B' z
  76.         int i, macs[6];
    ! C) z6 f% F7 t$ I
  77.         unsigned char mac[6];) E" ~( c9 F3 r9 B
  78.         unsigned char stbid[256];/ x# A, Y1 Y: S' w  u& |
  79. + w, p% R0 P/ \* w: G4 L( @
  80.         if (readparam(mac, stbid) < 0); r* i, Q5 l1 x$ f2 F
  81.                 return 1;/ i7 [  N- u) o, b1 G
  82. ) g/ `8 X/ y( v3 v( s
  83.         printf("Current parameters: \n");
    $ F9 \' `4 Z, @! G) N; ?$ d' U+ J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , ~4 T- e4 G9 D. x9 W
  85.         printf("  STBID: %s\n", stbid);
    ) u) O8 M$ T& `- P& b
  86.        
      @7 t3 C' @( T  E1 T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ \6 L* J4 ~; A! j; A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% V& G: W5 o  a: K+ C8 O
  89.                 printf("Input MAC error\n");
      k& ]' K$ i: W( S0 Q) [
  90.                 return 1;
    5 ?! `! u$ c8 h0 ?, O! s2 n, Q7 n
  91.         }
    " x0 C4 K! T5 F6 R
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 `6 d6 S. E$ J0 d
  93.         printf("\nPlease input new STBID: ");
    - B2 C2 y1 Y3 t" t
  94.         scanf("%s", stbid);9 Y$ J8 X7 g% \' w: d
  95.         if (strlen(stbid) != 18) {- S4 g, v* q; o/ Y$ |* z
  96.                 printf("Invalid stbid\n");
    ) I7 y9 }+ ^7 y5 v1 T9 L: D
  97.                 return 1;
    / n8 x6 h5 ~; w- B0 R( B# G3 D
  98.         }
    ( R  V! R. w2 y7 v) \; {
  99.         printf("\nNew parameters: \n");& J  t" y8 z* r9 T% L: {1 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" J; `, e1 d) E0 \$ C
  101.         printf("  STBID: %s\n", stbid);  x/ Q$ a) R! @* g, C
  102. 3 l1 l' d) v3 G- D1 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");( \( j1 `/ ]7 T5 Q* |( ~! e
  104.         for (;;) {! b/ m& ~) N) e! _
  105.                 c = getchar();
    2 @- x0 _4 s3 j) ^
  106.                 if (c == 'y' || c == 'Y')5 I3 \4 t% C* w* o& b2 O
  107.                         break;" L& f7 G5 s  X- v8 E8 A
  108.                 if (c == 'n' || c == 'N') {
    # x2 J( m  D( u% T7 x9 }
  109.                         printf("\nAborted.\n");
    ' X1 @" O; h! _4 c4 R: V: [6 a
  110.                         return 1;
    $ b& d6 j7 |0 @2 B' _; s
  111.                 }
    ! i0 h( @9 d, M3 l+ w) L4 L0 f$ W9 X
  112.         }
    ' \/ K' k* f; s
  113.         if (writeparam(mac, stbid) == 0) 9 o0 a. C# Z! k3 w# E
  114.                 printf("Parameters changed.\n");
    7 m/ [1 r/ F+ H8 o9 O
  115. 9 T. j' B5 X) y: @) w: b' {
  116.         return 0;# g8 m  @# y2 B. G! q
  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
5 r+ z: L8 H3 O- O2 G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% e2 B0 i2 A& v# c
你用的编译命令行格式是什么?1 m+ }( Z  M* Q4 k. c6 z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部