查看: 16424|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * Q) L8 f7 l3 d* {7 ]. x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 \/ x/ p# ^! o' L6 A: }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 P% }" s1 V6 r7 Xusage: himr <address> <value>. sample: himr 0x80040000 0x0. a' M  N: x* Z3 S! p( `$ D6 c

. ?1 h- K% F: \& L3 s0 s6 m* S: H: U+ u: |
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& t9 f. S7 i; i0 g! P; s* D6 r

5 w, ^; f1 R7 w# o  \6 ?补充内容 (2012-3-8 09:42):  T5 B* {* d+ o* s( B
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 t4 c$ @/ X& R2 o* w8 P) V( A这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ h6 _4 o( p8 t
2 c. Z- x$ f  m9 nhimr <address> <value>. sample: himr 0x80040000 0x0
( t3 D$ [( ~& }8 b
. Z& R1 U# Z1 d. E( ^- r0 x; b6 N例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) ~+ v/ H% c- }; yhimr 0x80040000 0x00
2 o3 N# k7 u, O3 O9 @himr 0x80040001 0x11- t" h  g" h  ]0 P2 p
himr 0x80040002 0x221 T6 c6 r; @. u, k
himr 0x80040003 0x33
, U3 B- e5 g3 V# ?' L( S+ b, ]3 bhimr 0x80040004 0x44+ ^" H# q. o: r! I* m& v# F
himr 0x80040005 0x55
0 T% r6 x; Z3 U9 z4 c: J3 I, Y- L5 _
SN也是类似。8 k% C- E4 M& o& K6 H+ @, |
9 f& K% t! |- A
现在主要是,谁告诉我们MAC和SN的地址?$ z; j" h% k1 h9 b# Z& n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; e1 @5 g0 r9 {, c' {一直想找到运程修改MAC和SN的办法,苦于无解啊
4 V$ z5 `; k6 B0 q+ C4 z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , _  ], W" y6 j2 m% ^2 K! f

1 |( J) E' w+ r: w修改的代码早有了。到今天不会编译。
2 G1 b0 p5 b4 E) g. \- m: y8 @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; u5 \3 r6 _; S0 P, m9 g
  2. #include <malloc.h>9 h) f  b+ q/ n2 D4 @: {( E
  3. #include <sys/types.h>
    % v6 J0 A# [% X4 j0 l* I! F  b
  4. #include <sys/stat.h>
    3 l' z1 z; R# R3 L$ Q* r
  5. #include <sys/ioctl.h>+ K  w# H6 N. G$ D0 p5 K" E
  6. #include <stdio.h>4 H+ U' z) {0 Z: W; j, I
  7. #include <string.h>! Z+ E+ I9 V$ @0 z2 p+ J$ s, W: u
  8.   Y! G0 w8 r* A
  9. typedef struct {
    * q' v2 a) t1 a# X, @" n1 f
  10.         unsigned int        e2prom_cmd_sub_addr;- r( m# H9 j; R
  11.         unsigned int        sub_addr_count;
    / x8 D# B3 ?( u; j" Z. y2 R8 U, l
  12.         unsigned char*        e2prom_cmd_data;! R& [: z- ^* n, \
  13.         unsigned int        data_count;
    . r7 s* z+ n: ?2 ^# r+ _8 {- J
  14. } e2prom_s_cmd;
    3 Z! \, s: Y# o: \+ V( P

  15. 5 J2 |. o; X, M
  16. #define E2PROM_CMD_READ 1
    4 E" m/ u. Z/ a& ]1 I( m
  17. #define E2PROM_CMD_WRITE 2/ S/ Z' a7 p2 I) [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# @( D6 I/ y1 c' \, ^
  19. " l0 ]# q, O: \8 E+ ^+ `( m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 C3 d5 C, _8 L  [' Q
  21. {% l2 F$ j6 W+ M1 ]- h: E5 b- Y
  22.         int fd, ret;+ x! p; g) b. m
  23.         e2prom_s_cmd arg;
    0 H* B) @0 C4 d5 h
  24.         unsigned char buf[0x18];7 F0 W) |# l) L; E  M' K
  25. 2 x" w" {( S5 [* c* {" s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % E' n$ Q7 g# y  w+ R3 `# ]
  27.         if (fd  < 0) {, L- k( ]' v1 n& u) s
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# v( r- c" q, Q, K" u; r: y
  29.                 return -1;9 L1 O6 Z9 f4 ?: J; L& H: c
  30.         }
    3 r& T: C: p8 y  V- ~
  31.         arg.sub_addr_count      = 2;9 v6 F, o/ r9 C& I9 A$ {/ c8 }
  32.         arg.data_count          = 0x18;4 l8 o( X) W3 B7 x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( x; |9 E9 {4 c5 B& }% g
  34.         arg.e2prom_cmd_data     = buf;
    + q7 o! v6 X; H! t" Q9 A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 g5 W: `5 z5 j* H5 z
  36.         if (ret != 0) {
    : ^4 O$ ~6 ?# G/ _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - v# \8 U* C& g/ [9 ^+ N
  38.                 return -1;; n) [, A8 E& u) L, h9 D6 ^
  39.         }5 S9 c9 C  S4 f& q" G
  40.         memcpy(mac, buf, 6);
    $ d& [8 V! ?( i
  41.         memcpy(stbid, &buf[6], 18);
    ; y2 X. ?, F  ^" z2 ]6 g4 r. K
  42.         stbid[18] = '\0';
    # ^0 }7 o/ n# Y
  43. % Q( E, ?2 y  V3 {
  44.         return 0;
    6 f8 T: D% O. p/ |+ O
  45. }
    0 x6 [# r/ [  \. o6 i. @. M0 A1 \
  46. ' Y/ R9 C7 H- ^9 T9 K# K* X  M) M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 A! A9 r) e$ H+ z( W/ C" H
  48. {
    , y* }+ j# y. c( x3 }* E, H
  49.         int fd, ret;
    1 X( N/ H0 Y1 s. d
  50.         e2prom_s_cmd arg;
      C' j+ w; ?1 I* v9 j! S, t( F3 U# g0 t
  51.         unsigned char buf[0x18];- r, {2 _2 a4 Y: u1 Y8 y% t. m

  52. ; [4 I4 B; n- V
  53.         memcpy(buf, mac, 6);
    % H* u, {2 ?/ m' q
  54.         memcpy(&buf[6], stbid, 18);
    ) y/ F) a) k% ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / h9 J# E3 W- J& f" H
  56.         if (fd  < 0) {& P9 T1 o5 t- m% X& v: r+ z' q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 l* X# Z0 J9 U$ C0 X9 D5 Z
  58.                 return -1;$ O3 j  g3 B5 \8 X- T& M
  59.         }  J2 M+ |" I1 H& c2 `# y
  60.         arg.sub_addr_count      = 2;
    ' q$ ~" ]# u) Y5 Z
  61.         arg.data_count          = 0x18;
    ( o, v* f, L! V' s% m- v' w) j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ( t: ^$ G* ]1 `# C0 t9 W
  63.         arg.e2prom_cmd_data     = buf;# e4 x& [. x& ^% {1 \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , ]: `* o$ d- \4 {1 [6 s& S/ N7 _% r: s
  65.         if (ret != 0) {5 t2 O/ Y3 x+ V. t1 y1 M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- H& s: e: T/ z% Y4 G; c
  67.                 return -1;
    $ G* z. F( _- F: B1 C
  68.         }
    0 P! M  R2 e# E/ b  |2 K1 i6 E

  69. * |1 _1 Y; n( X9 C
  70.         return 0;
    9 t' Y9 w; o3 Y# ]" s! D6 l( i
  71. }
    ! I# Q# e$ h6 W" Y

  72. 5 x1 K& S0 q- f
  73. int main()
    ) p; e! I% J$ C- Y
  74. {
    3 G4 Q# M" p$ A! ?8 p) F
  75.         char c;
    / l6 |/ D* L0 T* T  \* {& x
  76.         int i, macs[6];" j  R+ o0 \/ [/ l! j
  77.         unsigned char mac[6];
    . o' `8 N6 t+ m/ u* i# U
  78.         unsigned char stbid[256];/ S8 f6 Z3 z" u* Z
  79. # O% h+ N; j3 \) B9 W5 j9 f
  80.         if (readparam(mac, stbid) < 0); V, Q! @& @7 R& f7 M0 f; u* Y+ U
  81.                 return 1;0 @  h2 P4 N- Q* A2 P& ]

  82. 8 V* U9 S* H- B: m2 _7 z  P
  83.         printf("Current parameters: \n");
    3 G$ E! }! @6 s6 Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ Q- |7 Y3 |1 j. O# P  ]. z
  85.         printf("  STBID: %s\n", stbid);
    ; n. M+ d4 ?/ {$ {4 O+ a) [! X4 @
  86.         - i, \1 B& f- a$ u" X$ F
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# T( L7 e$ j" `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 e  I& @- R& _+ X/ p9 @: V
  89.                 printf("Input MAC error\n");+ t. ~4 K1 T2 y. F( i5 t
  90.                 return 1;
    5 z- e% W/ E/ `$ V  Z% _
  91.         }7 r1 j$ Y. G, L* Q; U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / _) D0 K+ H! T* }- o
  93.         printf("\nPlease input new STBID: ");
    7 A* \9 l# h/ k5 F5 [7 U& f
  94.         scanf("%s", stbid);
    : f" v+ C# \: P( a0 J% l
  95.         if (strlen(stbid) != 18) {2 s2 K4 E8 l4 c! E% T
  96.                 printf("Invalid stbid\n");
      M1 S/ R. ]0 n. ?
  97.                 return 1;2 ?: ]2 e( q& ?4 K* c
  98.         }
    2 @( C7 n5 y" E; y
  99.         printf("\nNew parameters: \n");- T9 H% y, ]% G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. n4 S: k$ t8 T8 }$ x3 `* o
  101.         printf("  STBID: %s\n", stbid);+ }9 ^4 `! L3 X

  102. ! G5 K. ~" H4 N+ z5 b0 F" X' n' E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; N+ j9 \$ s9 U% y2 P
  104.         for (;;) {
    , Z5 y" U/ r" x& v' ^' _8 O
  105.                 c = getchar();
    . Y7 v; C1 S' a; j/ r. |! r
  106.                 if (c == 'y' || c == 'Y')( `; J, ?" O" G+ b" c
  107.                         break;
    % i/ E$ @* L9 f- S( ?
  108.                 if (c == 'n' || c == 'N') {& a1 X1 n- R1 J- Q5 s; e8 ^6 A
  109.                         printf("\nAborted.\n");
    ' q& E! i7 i+ ]& Z8 u& U
  110.                         return 1;2 j, `+ E5 j' I5 s9 o+ ?- f
  111.                 }7 s' v$ @+ b8 D, v' Q+ i2 a5 E$ v
  112.         }! M6 w: m8 c) {" b9 G
  113.         if (writeparam(mac, stbid) == 0) 3 V. Y/ g9 t% Y, w
  114.                 printf("Parameters changed.\n");
    / J' M% _2 n, s7 q' v1 z7 a

  115. ) o& K/ l9 n: S0 x3 |" E
  116.         return 0;" L4 G" [4 B4 O( S) _% m$ 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 - g: k/ i9 C) A$ U/ D
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  {& S  G! d& S& F你用的编译命令行格式是什么?( m& |& N6 `7 r$ L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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