查看: 17329|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ c0 Z  t; l, @0 S) l" y" u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% g: E% K' w  u% p# j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- q6 d3 A- o; ?3 P: ]0 _
usage: himr <address> <value>. sample: himr 0x80040000 0x0
0 S: X: y3 l2 @4 L3 r
0 C' a- m4 m* u% J; q; E( Q. H9 V% X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 b# C+ w: z$ ~* R) J8 O' ~/ J0 h3 E( w8 A# Z
补充内容 (2012-3-8 09:42):! Y# N% U9 X) u- F
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 ]7 L$ \$ ~7 o+ `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 x7 M# z( U* i7 W2 }, i$ q
5 G2 Z  l! B8 G# N7 K1 Ehimr <address> <value>. sample: himr 0x80040000 0x0
9 ^5 G: I) _" U! f% N( A
" R% d" I6 p8 h3 _' w例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。: f" o) ^9 [4 I
himr 0x80040000 0x00
/ j( N2 \) m7 c) Q0 ?* }1 D2 fhimr 0x80040001 0x11% o$ @+ N4 ~, m, _
himr 0x80040002 0x22* ]6 q; G/ w8 |) u0 |/ j
himr 0x80040003 0x33
! [( w7 L# ^6 y) Whimr 0x80040004 0x44! T$ T1 v; w' {! M
himr 0x80040005 0x55
6 L* v! J* [6 G
# _) m: E( @3 v$ q9 m' [SN也是类似。
0 q* H& r) T  g/ C) E/ ?" p7 |
6 M1 |- a8 o( r: u) F现在主要是,谁告诉我们MAC和SN的地址?" c/ u& c' _$ F2 D" S
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 O3 |4 M5 T' S$ r: K1 U0 w+ W2 Y一直想找到运程修改MAC和SN的办法,苦于无解啊

" B4 a; `2 X, D0 J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 m( V' B# N" h) V9 N8 n
% m1 P  T/ P6 W8 s! Z修改的代码早有了。到今天不会编译。
1 q7 }; U+ e& x8 i' a6 c4 G. c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 C8 U1 d, ~' B% K" q" o
  2. #include <malloc.h>+ U1 r* Z3 ?8 M& g
  3. #include <sys/types.h>
    9 O* [" Z8 |" z. |+ p
  4. #include <sys/stat.h>
    1 `# K0 s+ M% n
  5. #include <sys/ioctl.h>
    : ~0 w9 }) Y, [7 g# R. E
  6. #include <stdio.h>
    ' i7 F; L# Y$ }! A8 G$ @2 D
  7. #include <string.h>
    4 h9 l& o- _; u* G% V) H! m3 h# g# ~
  8. 6 a8 W  D+ B* h+ Z/ k; y9 Z/ \# A$ ^
  9. typedef struct {
    , z  s# N* J( f3 l7 V! J; L
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 I$ [9 a; E3 O& k1 s
  11.         unsigned int        sub_addr_count;  z- e- ^. N  M4 d
  12.         unsigned char*        e2prom_cmd_data;
    . O$ T: g' r! k7 P7 U, {
  13.         unsigned int        data_count;3 [$ n* Z6 o% K* b) m0 ]. _
  14. } e2prom_s_cmd;" J2 e4 V8 r! }

  15. 9 l4 e3 S2 x4 B- E/ Z% v- d
  16. #define E2PROM_CMD_READ 1
    3 X2 y; D% _; @* z+ }8 Q
  17. #define E2PROM_CMD_WRITE 2
    7 B6 C6 Y1 l" W" m! c2 m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", V8 K1 y% x+ Z
  19. $ Z& ]: b+ m, i( |, ]" L+ A  R  v
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
      c3 ]2 J9 ?' w: {0 l: ^4 J
  21. {
    ' c: G, z5 l$ r" q
  22.         int fd, ret;# Y, B" @; g2 @7 R9 y; J" O
  23.         e2prom_s_cmd arg;, @) R- c9 ]2 D
  24.         unsigned char buf[0x18];
    6 e; Q) H! T- k7 ]
  25. & j; D- d, t" B* N0 {5 ~& t: ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : h7 X1 S7 X$ j! a$ [, V6 o( J* w
  27.         if (fd  < 0) {
    , ?* A* r0 k$ g6 _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" a+ c- X9 V2 X
  29.                 return -1;
    ! D# \' t& [. `1 S2 W: j
  30.         }
    ' |4 [1 R; H( c: m' O* I
  31.         arg.sub_addr_count      = 2;
    8 ]. H0 m& _9 C; _6 V' h* n
  32.         arg.data_count          = 0x18;3 g, Z! I. j) y! \8 U+ {
  33.         arg.e2prom_cmd_sub_addr = 0x290;; a5 n8 z( ]! y# v# N& Q' G( D+ c- J
  34.         arg.e2prom_cmd_data     = buf;
    ' |: H6 Q/ F7 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # o6 V1 L5 f: ?$ W; U1 s. w
  36.         if (ret != 0) {
    2 f! s+ l/ d6 c+ S, l& o( T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' m' l1 a$ I& g. A
  38.                 return -1;8 }# E8 \9 m% R4 Y
  39.         }# v; }5 P9 K% Z" l0 B
  40.         memcpy(mac, buf, 6);
    ; M8 a" r& C$ W& z' ~8 r" `
  41.         memcpy(stbid, &buf[6], 18);8 ]1 S$ N" B, T. X1 }1 B0 |' O
  42.         stbid[18] = '\0';
    0 N4 [( U4 w6 P1 s; l
  43. 5 {9 j6 l( F- f; B- ?
  44.         return 0;! K" I( ?: J0 C% i0 @
  45. }7 D* U' [2 u0 Z9 q

  46. 4 _% x* }: M7 |+ T# Z- u' I% E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), C  C* e0 n. y) Z; t
  48. {
    3 P9 j# {+ Z2 v) B
  49.         int fd, ret;
    * m' }: U' Y+ S, A# @  z
  50.         e2prom_s_cmd arg;
    $ N8 j  d8 g" U6 H7 M
  51.         unsigned char buf[0x18];
    3 \# U: O$ k1 j/ F  i0 o

  52. 6 i1 U- K: @: n6 @3 o1 n
  53.         memcpy(buf, mac, 6);4 J# x, Q- P% \% x
  54.         memcpy(&buf[6], stbid, 18);
    # ]6 h1 x* }1 H% t2 T5 m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' R; P8 N, D, V- Y9 G8 m
  56.         if (fd  < 0) {
    * l4 ^, c- L2 Q& K+ m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 k3 `+ F+ @( ^
  58.                 return -1;
    " U& l# z/ h. y: o
  59.         }( Q0 \+ V0 g( [+ F2 }/ X( P- k
  60.         arg.sub_addr_count      = 2;. t1 R6 Z: K& @: z& m3 m
  61.         arg.data_count          = 0x18;2 E" }( U5 x6 ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;& I0 R1 f) r3 g" l1 n
  63.         arg.e2prom_cmd_data     = buf;" a6 h2 q  z3 c, q) E) i* v2 s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 J2 W! `& L' v" v/ ]
  65.         if (ret != 0) {0 p! M/ R* D' @: o% @8 h/ O1 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : w6 [  I9 T; a: p! ^
  67.                 return -1;9 R/ C5 X) f: ]6 W  J& S
  68.         }+ q, F1 G+ L& h& Q" V- N

  69. & `: A1 A" T, A/ F
  70.         return 0;6 M" E& w* j: `7 {
  71. }
    5 i! l" s) F' J+ {) l& \: \$ V
  72. 6 N. o7 [) C! `' {2 s# e- z/ j
  73. int main()
    7 J4 v2 L8 b5 x* O) W
  74. {
    0 ^$ k" h/ P2 O0 Y7 D' Q  e3 C
  75.         char c;
    : U' U8 n2 t9 S4 m1 ]
  76.         int i, macs[6];
    3 `2 Z6 q/ g% [- N3 F2 Z: ?! k% N
  77.         unsigned char mac[6];* H+ C3 G* I, N7 a; O2 Y
  78.         unsigned char stbid[256];
    * `$ ^. K6 V% U. _2 l

  79. 2 Y; t0 Q, P  ]" S& I
  80.         if (readparam(mac, stbid) < 0)" [; o# m" e. T+ q
  81.                 return 1;( V) e, ]: }% ?' C: d! J
  82. + y) F2 d2 a- b0 t& @, A0 K3 l
  83.         printf("Current parameters: \n");  y2 j+ x  C( _3 y1 r7 a0 y7 T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ Q+ @) i8 S: O0 P7 N) `) D
  85.         printf("  STBID: %s\n", stbid);
    # Y- ], C- q0 B. i- a7 U
  86.         " P/ `$ f! l$ V3 R1 T6 z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" G7 R1 O2 v% L! n$ X* l& S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- w9 c) h1 o% M7 Q& P6 n
  89.                 printf("Input MAC error\n");! U8 Y+ d7 L& A- c4 ~
  90.                 return 1;4 @, P: `4 L4 `& u, W% ^# k
  91.         }7 y) v( l; u8 J  O" O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 u; ?2 |9 K- M/ B
  93.         printf("\nPlease input new STBID: ");
    + ?# b. L5 n" F. d; B
  94.         scanf("%s", stbid);
    & w! B% S. V( x
  95.         if (strlen(stbid) != 18) {, M# d) V8 n# r5 Q* G1 d3 J& n
  96.                 printf("Invalid stbid\n");! }# [4 w# I  J$ f% X" M4 V
  97.                 return 1;% X) L/ Y1 H7 z
  98.         }, c/ Y6 O/ Z  I% F5 f' O% ?
  99.         printf("\nNew parameters: \n");/ D3 Y  a8 d7 Y8 M& G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / T& q& `0 t/ W, t2 }8 K
  101.         printf("  STBID: %s\n", stbid);6 d: w1 m& ]+ U+ S$ @; m* C. j
  102.   h% G- \8 L: Q' o( F8 J% F
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , l+ K9 q: R  N/ K1 X
  104.         for (;;) {
    1 C5 q/ V3 m. W- A- [" t1 _
  105.                 c = getchar();: d+ Y) b& F0 x. y) o1 _9 v+ U
  106.                 if (c == 'y' || c == 'Y')% E- k& Q  a( y) B: u
  107.                         break;
    + W7 @# u* e. M2 V8 G
  108.                 if (c == 'n' || c == 'N') {
    * a* C; j" d' _2 v+ J' y$ g) u
  109.                         printf("\nAborted.\n");* S% Y7 L8 ~0 X6 t4 V
  110.                         return 1;: e6 ~, H, Q% O0 O$ B7 u# h- [/ r
  111.                 }
    ' ~( p& C6 K: f( r8 f
  112.         }' J% l& Q. h3 O' @
  113.         if (writeparam(mac, stbid) == 0)
    + N$ T  a( n0 L9 i, l3 Z& ~# M
  114.                 printf("Parameters changed.\n");
    ! G4 A0 N+ S. z

  115. ) h1 b, a( w+ I" C
  116.         return 0;6 n8 q+ w* ~, i( W
  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' ]4 p" K2 t# m
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 x7 g9 D) W+ E- d: b你用的编译命令行格式是什么?
1 k" x' a* n7 G' v
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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