查看: 16103|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% f4 z* A. R4 C' Q1 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! w( E- x/ v* y1 z% T& y" ?! v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 [. E" i- D+ ?- d* y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
* k) u* e  d. l! P% h  _  k) u! }5 t# M# I/ w7 R. B; R
% u& A, P  r  H; x
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 E8 j5 m  r- O3 a+ ~$ }: Z, E$ u8 m& q1 @
补充内容 (2012-3-8 09:42):6 `2 _' r% A; E
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 f  N% h1 O- Q$ F3 a7 ?8 F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! d1 a/ G( Y& v$ [1 B

& G. i$ l# p* R; |8 m! H' L- |' zhimr <address> <value>. sample: himr 0x80040000 0x0$ n! q2 d4 g5 Z9 z5 b  M
6 x) ~) n8 Q$ s% A' s  r! v2 y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. y% a5 j! ]" E- z# q- jhimr 0x80040000 0x00& q+ Y2 }/ m! i( N) L' n
himr 0x80040001 0x11, `; U, d( M6 _, ^  B7 T
himr 0x80040002 0x22" t0 T- A. Y6 H1 ?! F
himr 0x80040003 0x33
3 C3 V$ q4 f" u0 b4 D1 p5 m2 dhimr 0x80040004 0x44
# ^9 W! a( I% z0 S7 i& fhimr 0x80040005 0x55' ?( K* h# q6 S% p8 I

$ T+ v: K- |1 M2 P, H4 Z) CSN也是类似。
: I' K; _! n) Q- W  d
4 Q$ I0 x! J# C- G/ @  n2 c; e现在主要是,谁告诉我们MAC和SN的地址?: J' O6 y5 k8 i- Z  r5 T3 c% V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 D) z$ [2 I7 {- C一直想找到运程修改MAC和SN的办法,苦于无解啊

& x; o, \1 R, d0 K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, m9 `4 q; Y! [+ Z) {) M( V5 I4 N) A8 e0 l. j# W' W% Y1 u. h7 C
修改的代码早有了。到今天不会编译。
# q* u% U) d8 Q; Z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 d2 @" j/ F/ w/ w0 P" C; Z
  2. #include <malloc.h>
    3 G/ L' W3 f$ b; ?9 z, M
  3. #include <sys/types.h>6 I: ?7 S8 W, T* P* y' V
  4. #include <sys/stat.h>
    : ?0 Q4 e$ S7 J+ B" o7 A3 C
  5. #include <sys/ioctl.h>
    + m+ C, y3 R' O- E+ ]7 D3 x
  6. #include <stdio.h>
    6 I3 }# N9 Y8 `# j, ]6 o
  7. #include <string.h>) [: k# N  c( }  K9 E! ?! s: K

  8. $ B: r+ `3 A9 n- c1 s% I9 R
  9. typedef struct {' n2 T- I7 E: _' n
  10.         unsigned int        e2prom_cmd_sub_addr;& T/ I: e6 i; \' _  x/ ]) ?; l
  11.         unsigned int        sub_addr_count;
    4 `1 y& d2 R8 n9 @( N1 K0 R% G
  12.         unsigned char*        e2prom_cmd_data;( J7 `1 ^$ s: S) U5 ?
  13.         unsigned int        data_count;4 f2 M. p  }! c! ^4 h
  14. } e2prom_s_cmd;
      x. j0 O5 _, A* T( [

  15. 6 T- u4 `. Q  `$ K, |4 H7 T
  16. #define E2PROM_CMD_READ 1* S0 E# S3 i# }3 ]. @+ |; `
  17. #define E2PROM_CMD_WRITE 2
    " @% D  {4 v9 q9 R" N2 Q. f& S
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; G4 v: z/ E) |5 G1 R0 J
  19. 1 ]. @- {: _2 V' ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid). P6 B7 D1 u& y; q$ o& V
  21. {' h" n* f2 m6 S; n$ ^
  22.         int fd, ret;
    - W; n. v6 E" H: {
  23.         e2prom_s_cmd arg;
    7 i+ u0 v' ~% p$ A2 N
  24.         unsigned char buf[0x18];
      R$ e4 U/ d8 J# q

  25. 0 b/ ^% T4 l/ V3 j& c: u2 z2 j2 b. I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ |3 T! |2 l& n
  27.         if (fd  < 0) {
    0 |. w2 N8 M" S* V; U0 s/ D( f  Y( I% `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - U* x; z$ [- W! O; K- f, N
  29.                 return -1;; X& t! g' n; h! V
  30.         }! j; g1 _1 ?8 a: g. _( i& ^) \
  31.         arg.sub_addr_count      = 2;
    ' a. T( s& o- `
  32.         arg.data_count          = 0x18;
    " N* |1 J7 E( V% F" o7 g
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 v# J& g0 D/ N/ g  X
  34.         arg.e2prom_cmd_data     = buf;
    . c- A( v9 s6 i& _/ M2 W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( s3 k9 h& X6 ?; m( w  R% Z2 c
  36.         if (ret != 0) {2 C* T' `' s2 x9 w2 G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  t% x8 E- w7 D5 Q: c
  38.                 return -1;# C- m  s, H) ?% X! L% q
  39.         }% |! c" _) @/ X' ?
  40.         memcpy(mac, buf, 6);( y% c. `  V8 ^3 ^* ]: G
  41.         memcpy(stbid, &buf[6], 18);( r4 _) [/ ^9 C3 H% c$ ]
  42.         stbid[18] = '\0';
    ' Y% g$ L9 Y  O9 V! r
  43. 7 p7 Z% `9 W0 Y& K
  44.         return 0;
    ; k8 F" [3 z+ }
  45. }
    " d! i; ^* w/ n  J- ]
  46. 5 P, D3 |& m) e, {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): ?: h, g! @/ z. ^7 O7 v" [  Y
  48. {
    + H. U: k7 ]0 A1 m; p4 @- }
  49.         int fd, ret;
    % j* n! @1 S  q  Q. K# p
  50.         e2prom_s_cmd arg;
      O+ M# ?+ G9 H( @
  51.         unsigned char buf[0x18];
    $ @# s* p$ z8 e2 ~2 J" p

  52. " `$ n5 l: W" E- p: c/ w
  53.         memcpy(buf, mac, 6);# X' ?' s( D  H
  54.         memcpy(&buf[6], stbid, 18);
    2 `7 n' _7 l+ r2 Q, t1 F, K- E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# n* ]- d( R6 P* F% F% D
  56.         if (fd  < 0) {
    ) f$ [$ @# g( `8 r  d& j' M9 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 {! P. [2 T' S0 ^) [  i1 d
  58.                 return -1;- Z; U6 c; @  n* `3 F
  59.         }, w7 \2 V5 h1 H9 D) P) L
  60.         arg.sub_addr_count      = 2;! a4 d3 u" P) Z
  61.         arg.data_count          = 0x18;
    4 z1 c+ M1 F8 F! w. O6 N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) N1 Q# N4 L/ o9 M
  63.         arg.e2prom_cmd_data     = buf;. ~) k# g# K. c& _$ k/ v  C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: r; S. q4 g# T2 D  J4 ]
  65.         if (ret != 0) {; A3 I3 Y6 X% b% t% y, S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 J: B& G% E0 r3 P  `
  67.                 return -1;# Y/ Z' ]; s% x* d
  68.         }% J! ^! ~6 M- Q( C0 `2 _9 @+ Q
  69. # v2 D7 T+ ?; B5 ~! R3 ?3 R: V6 ]
  70.         return 0;2 J9 C" {1 w0 h: `) K8 f8 m( L* h
  71. }) K: T' b- }( y+ F& M% `0 l/ P

  72. & f; b+ c1 D% i2 m
  73. int main()5 J# }; j9 Y0 C% ]0 u$ G0 ]
  74. {
    7 \9 M2 n3 m. X( @0 J% Q
  75.         char c;' A- a4 m0 i% h  m5 T4 Z
  76.         int i, macs[6];
    ) [0 f7 ?5 G; j4 p3 G: R0 C/ ?
  77.         unsigned char mac[6];
      \8 t4 Y  p8 u6 a& P+ J) U  ]+ y! f
  78.         unsigned char stbid[256];2 J' d, S* ^6 h
  79. ) N3 I$ U* l* B4 k8 v& G: p: E+ I) R
  80.         if (readparam(mac, stbid) < 0)9 ^' Z" T5 ^$ V. {+ M! d
  81.                 return 1;  K! j0 _  {+ w! O8 p: Q
  82. 9 f% w, I* b: q: L9 Q2 N5 u- Q' ]
  83.         printf("Current parameters: \n");
    * s  v! h; R4 i$ \* W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% D( S: A/ w" ?( ]
  85.         printf("  STBID: %s\n", stbid);
    " C5 W6 z2 x# p( m
  86.         : \7 k& G5 E/ h9 P) _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - m9 s9 ^2 p# _+ M( ^* A. g8 b3 W, R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 d: u$ p' T* q3 V0 Y: ^
  89.                 printf("Input MAC error\n");
    0 W: p' I6 E; N1 W( B5 L3 i
  90.                 return 1;& p% m- q0 e! t: V4 Y8 P9 N; [/ s
  91.         }1 C7 L$ e8 X1 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + N) }7 s4 q/ Q5 k& \
  93.         printf("\nPlease input new STBID: ");
    - v2 ]% _5 p! u" Y
  94.         scanf("%s", stbid);
    / V5 L5 L/ F% J5 u2 y7 {+ _
  95.         if (strlen(stbid) != 18) {8 B% |: i4 C' k/ R0 s& n
  96.                 printf("Invalid stbid\n");$ E* N: |, c4 F9 h/ f
  97.                 return 1;. b6 i; ~& v3 M- [' J
  98.         }: T: B* t; Y  d
  99.         printf("\nNew parameters: \n");+ m  h. c0 n1 }2 z, A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : r  Y! g9 a/ W; H
  101.         printf("  STBID: %s\n", stbid);
    ( O# h7 x8 g& J
  102. & g& @1 h0 e0 [$ b0 X/ y2 e
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 z1 N% E1 m- I: X" X$ Z
  104.         for (;;) {
    + ^% \& J2 k" C: b
  105.                 c = getchar();
    9 q  F  \' A& j
  106.                 if (c == 'y' || c == 'Y')2 `( m: g& E0 W: `) E1 {+ d* h
  107.                         break;
    * L$ w. S7 W4 U5 C  x3 d6 A8 m
  108.                 if (c == 'n' || c == 'N') {! b7 \; U7 B0 ?) s1 s
  109.                         printf("\nAborted.\n");7 p5 a% r) Y7 H! `  o$ r
  110.                         return 1;
    4 `9 f- p8 l5 r3 z$ m
  111.                 }
    - L4 Y0 d3 M/ W. k
  112.         }3 X5 B8 {7 J! U" w' s6 f
  113.         if (writeparam(mac, stbid) == 0)
    6 \  S; ]" k" g/ p
  114.                 printf("Parameters changed.\n");- B7 o" m* o0 D4 _- t
  115.   d" q1 A5 w1 t) L; }
  116.         return 0;
    ! R$ b0 H0 g9 z/ M
  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
: y- `! A2 x+ Q; u  e4 U6 g0 u0 u在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 z# H' P" D/ f
你用的编译命令行格式是什么?
: [+ \* f: a0 _/ B- I: V2 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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