查看: 16487|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " b9 f$ g% W5 d% o9 t9 ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 J% j- g9 z, e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' M: I  [- n4 y2 r0 S& O8 ausage: himr <address> <value>. sample: himr 0x80040000 0x06 G6 n8 b9 h. o' s2 R3 S
' J6 }" A# u% y4 f7 }& ~

! [+ P! }& _' h- [8 Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ b$ y% q! n1 L
* U0 v0 b6 ~0 r补充内容 (2012-3-8 09:42):8 I3 R6 I, y% e- r
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数# ?% M& G4 h2 E
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 R2 }1 g- S* h7 W" F- }3 p( r8 N
* X+ D4 i4 B3 S# V2 G
himr <address> <value>. sample: himr 0x80040000 0x05 w( Q5 M# Q% V0 s3 W% o2 R0 W' l

' n$ Q+ u/ s, F/ ]# m3 {例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 e9 a0 i  `) ^& g. L4 a2 dhimr 0x80040000 0x00
( P) o& `) O* g; Uhimr 0x80040001 0x11! O- I  m- ?7 d( T" D1 E: Z( g
himr 0x80040002 0x22/ @+ H, k2 h/ a7 e: H; `
himr 0x80040003 0x33
8 D/ R1 a) c& Q& Xhimr 0x80040004 0x44
% K% i  B- G& X& {/ w, Y; rhimr 0x80040005 0x55
9 R1 o5 E0 D+ T/ Y7 f  q" K5 e' X! M9 S
SN也是类似。
! {4 b+ C" O, ?9 l6 O
9 j( a" O' |, h) K% x现在主要是,谁告诉我们MAC和SN的地址?
: l9 V7 t1 k6 M' @& k; ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# x% I# i# h2 E2 @一直想找到运程修改MAC和SN的办法,苦于无解啊

6 U7 w& M/ ?, n, b: y9 ^7 k源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- C' O/ X) Q2 F! h) ]
7 P% e: E7 y/ \修改的代码早有了。到今天不会编译。
: c. z6 v' {8 q1 m! I& G4 @0 v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 I. u0 n$ x+ d) a
  2. #include <malloc.h>
    % g. [- q8 E+ g3 g( t
  3. #include <sys/types.h>6 l5 s, Q9 O2 a, D; q
  4. #include <sys/stat.h>
    7 d; D4 `2 a# [- g2 E
  5. #include <sys/ioctl.h>0 D- Q& g) b" M9 b2 c5 M
  6. #include <stdio.h>* s( z" I* i( t9 h8 q7 ?& ~6 e
  7. #include <string.h>
    1 c. U6 y" v: a

  8. ' y- O& y1 `+ L0 ?  O
  9. typedef struct {& M2 s) }$ l* j, ~  P5 g
  10.         unsigned int        e2prom_cmd_sub_addr;3 F9 ]5 W% C8 Y# J: @2 Z
  11.         unsigned int        sub_addr_count;, r1 p! t; h' \& ~- V
  12.         unsigned char*        e2prom_cmd_data;
    3 m. o* L2 @8 u* M# N# T6 ]
  13.         unsigned int        data_count;3 u* Y: \3 W; G9 ]) [/ _5 U: _2 C
  14. } e2prom_s_cmd;8 H( n" `% d6 z* }3 j' }

  15. * Y, V2 H/ X+ l2 U0 {" t/ _! ~0 z
  16. #define E2PROM_CMD_READ 1* |, M; {" O& q6 ?, D
  17. #define E2PROM_CMD_WRITE 25 T9 l* y& k8 n9 b0 L' M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! f) e& k3 h- ~5 B2 L# A% Q8 z* P

  19. 5 P1 C9 Y5 R7 v4 u$ W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& y+ ~  f  ^. k' y% P5 g  p( t$ ~4 N
  21. {
    9 k9 Y/ b( L+ V5 V6 ^0 {  v4 E, @; u
  22.         int fd, ret;! `# S/ t) r- t$ R
  23.         e2prom_s_cmd arg;, L0 h/ L  g6 x  H2 s% ^0 Q; K
  24.         unsigned char buf[0x18];. E- U7 g# K0 W$ ]  ?# D

  25. 6 u2 c# R5 e* e) F7 m  q* ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- v% H. J. S7 o4 q  B
  27.         if (fd  < 0) {
    " u4 `- N4 T# l, H. ?; N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * ~" E. N% e4 D! ?) m( L( e
  29.                 return -1;
    4 X2 y6 p4 j5 X* `8 @# r. Z
  30.         }7 V4 W$ y" m& \
  31.         arg.sub_addr_count      = 2;, \, j3 f/ Y  q, g! d2 N
  32.         arg.data_count          = 0x18;# }9 b6 L: M  i  S
  33.         arg.e2prom_cmd_sub_addr = 0x290;* I& ^5 J8 N$ Y+ ?  F3 E7 x" ?
  34.         arg.e2prom_cmd_data     = buf;, G8 h0 B7 O- y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' p. j" c8 P) V. D
  36.         if (ret != 0) {
    ) L* k5 x* u) m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);$ t) r* P$ [* ~) T
  38.                 return -1;; Y% W6 p5 Q4 P' x
  39.         }
    & P  W; S7 |% {( t2 e
  40.         memcpy(mac, buf, 6);/ J  |5 T. [! |
  41.         memcpy(stbid, &buf[6], 18);4 K" j5 ^4 C& V7 V1 u5 i) B
  42.         stbid[18] = '\0';
    9 ~0 E% J4 y- Z, E& B7 x
  43. % W" M3 S  i) m# c& n
  44.         return 0;
    " ^: e$ D! r: c6 A; j9 L3 e
  45. }
    & `) o4 e  a+ _
  46. 4 a) t5 y3 a8 o! L& Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 l& g; c* [6 z! Z
  48. {3 r8 B- |2 O# O1 N" j/ V
  49.         int fd, ret;
    3 E8 _1 j! S1 f8 G; [  @0 @: v
  50.         e2prom_s_cmd arg;
    ) h7 u% |2 v3 e& M; w
  51.         unsigned char buf[0x18];
    $ p2 G1 H; p1 C
  52. 8 g0 C4 G2 I* `4 i5 }
  53.         memcpy(buf, mac, 6);8 P+ I% Q1 w, |) `$ B) ~
  54.         memcpy(&buf[6], stbid, 18);
    . F# C! I3 T! \$ @2 p+ o' r& R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, w4 A0 S9 s6 N. {1 V
  56.         if (fd  < 0) {; r4 P% ^  E; R0 [: T
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; b/ g: m  Q5 ]. K/ ]
  58.                 return -1;
    3 m5 U% ~. {9 V8 m  [! e
  59.         }4 w- W" \+ j/ x* M! t# R: f( G
  60.         arg.sub_addr_count      = 2;
    5 `* `, i9 q/ J8 S: L7 V
  61.         arg.data_count          = 0x18;! H( K7 C6 w& m/ ?. x4 q  f5 Z1 J* ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ }/ h: Q1 o+ p
  63.         arg.e2prom_cmd_data     = buf;
    $ }; p+ _% c9 d" `6 ]
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " y5 G; g$ X* h# b2 C# e0 ~
  65.         if (ret != 0) {
    & x8 K, m9 c2 ~( {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . a- M! O5 d/ `. m* \- W
  67.                 return -1;
    & m' k2 _" h0 S: ?6 ~3 F' Q
  68.         }
    $ ^7 Z; C- v2 T9 v; q

  69. 1 e) d# O$ a; _3 {) i
  70.         return 0;# c! J: |" o9 O3 l4 o2 a
  71. }1 {- R/ P" Z3 U/ I  k3 [
  72. $ ?# r% A4 m% i2 D
  73. int main()
    ( K; k; j; H! U; X/ A5 z1 S
  74. {0 }9 s, j6 H1 D$ k
  75.         char c;
    / i4 ^/ o0 P4 s; H& j: ?) Y( }
  76.         int i, macs[6];; \$ e) z! ]/ S' s2 l- ^3 ~  Z
  77.         unsigned char mac[6];6 q# t3 Q3 E2 p! ~5 E8 T
  78.         unsigned char stbid[256];5 u9 ]1 w6 v9 _2 k6 f! e7 c
  79. " z; ^; V3 @& Q
  80.         if (readparam(mac, stbid) < 0)0 c5 F8 {3 _8 k5 N
  81.                 return 1;0 T, i  W$ C1 L2 d

  82. 2 W" I# R& x% [8 a3 Z# s/ R
  83.         printf("Current parameters: \n");# c5 p' z. @1 n) O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; J: K. h( G8 k0 B1 s. J4 x! N
  85.         printf("  STBID: %s\n", stbid);
    + |& I( f& X0 j1 d( d
  86.         # w+ c9 M% k2 B. v. \' ~; H) @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& P! c1 Z8 @+ {3 \# L- X. O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 P/ T  I* }+ M+ V
  89.                 printf("Input MAC error\n");) ^* b& V* K1 v- S4 M' I; k
  90.                 return 1;
    2 [2 S! T9 R" [; V0 N
  91.         }2 J% Z0 y3 k- S; S" P) |7 B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 [! x+ |/ |0 j: W  ?7 ^' g
  93.         printf("\nPlease input new STBID: ");
    5 W4 Y5 D& q5 U& b
  94.         scanf("%s", stbid);- M$ j  Y/ b' }9 U
  95.         if (strlen(stbid) != 18) {- y8 y" i6 s( a. S9 F. i
  96.                 printf("Invalid stbid\n");
    6 p) F' ?8 p3 X' L
  97.                 return 1;
    ) d$ e$ \3 b- S7 ]; |* u, R" k
  98.         }. }: t+ V4 q9 ^# V% }$ s( R
  99.         printf("\nNew parameters: \n");
    ; t1 f# f4 X- ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 R2 t* ]. s, V9 g" ]( t
  101.         printf("  STBID: %s\n", stbid);" n( O0 ]5 ]' }% T  V
  102. , u& E9 T# S! D& q& |1 c7 V
  103.         printf("\nDo you want to change paramemters? (y/N) ");2 M6 O/ |  y& i$ W& T' O
  104.         for (;;) {/ q1 B1 K- N" \) S( x: }
  105.                 c = getchar();% K# f7 p- Y  _" {8 U
  106.                 if (c == 'y' || c == 'Y')9 b3 m* K. x" {% k6 I' g
  107.                         break;
    ( D5 i0 s9 g+ r3 g, U
  108.                 if (c == 'n' || c == 'N') {
    8 d8 s. w( y% e8 \5 A
  109.                         printf("\nAborted.\n");
    + x! c6 C; |# L: S
  110.                         return 1;
    ; {* K9 v8 G. w( c
  111.                 }9 e7 e9 Y4 l. T. k! b, U
  112.         }  K: V! u5 y4 P+ l3 d' }+ B) v
  113.         if (writeparam(mac, stbid) == 0) $ }4 [' c  ^9 J& i# U1 M1 Q1 p8 X
  114.                 printf("Parameters changed.\n");" w$ P! T" A  E6 u
  115.   z) @( B! K" h6 x/ g* F
  116.         return 0;
    4 l7 S: n) D9 o1 b9 q- G
  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$ ^3 O4 r. z* h- V: e: {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 z( `9 b- e+ \- M你用的编译命令行格式是什么?
" D+ R; f2 @0 Z# C  s- k& X8 x' }4 g
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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