查看: 16662|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & T/ I- G( o2 O, K6 y* R3 G; m: S: Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ x! y3 Y% j, m1 i( m4 R8 M
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& O% _- t# E+ A4 P% Cusage: himr <address> <value>. sample: himr 0x80040000 0x0; n3 g) w8 v' \, [

+ l& I: J6 N' b4 g+ t5 C' V5 `
5 j" G5 ?$ b6 ?( i' R3 ~; [+ i不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) g, I8 y8 H/ ^) r
/ V# b. g; y9 H# T5 Q; O
补充内容 (2012-3-8 09:42):: k1 A9 }/ W4 y, f) N/ ?& |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% o  j7 T* @& p2 o这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. v! Z- T: N$ m8 T) g3 {% H" U5 K9 F
7 Z; M9 |. t; f: i
himr <address> <value>. sample: himr 0x80040000 0x0
4 g; H5 [& k$ O( u: l3 Q
* [. o. j1 t* v- m6 P- p例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 ~, {+ u' \. q, k5 u7 M7 V- f
himr 0x80040000 0x00
3 x' w; M3 \) v8 M( J# Uhimr 0x80040001 0x11) I1 N1 |# C% r! o. A
himr 0x80040002 0x224 E- ?+ ]/ x- f6 `# z
himr 0x80040003 0x33+ ^- n( |, D+ @2 A4 A0 m+ P1 t! W
himr 0x80040004 0x447 p/ ]9 g+ x/ _( t5 x- n( I
himr 0x80040005 0x559 p/ \( Z( }% u  U- O8 W

" _4 f; A6 X  o4 u( K# ]' lSN也是类似。
, t) i+ B8 i9 Z5 F* X7 z, i
- w& r% W: k1 ]) i# t# q5 i现在主要是,谁告诉我们MAC和SN的地址?
0 `! I& L$ E+ w& a# u9 N' n
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ W8 E. y6 J0 `% p一直想找到运程修改MAC和SN的办法,苦于无解啊

7 N0 Q2 P. A! i0 u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 B/ p* m5 U8 g3 A. L2 @+ M* @4 [
修改的代码早有了。到今天不会编译。
* L- b+ r; B" l/ @( ^0 ?3 e需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % p) l( m. r  W  q) ]5 D  N1 ~
  2. #include <malloc.h>
    6 o# f# |$ x9 U
  3. #include <sys/types.h>" \% E' J. Y; S7 @
  4. #include <sys/stat.h>
    3 u( z0 X5 V6 ^2 g
  5. #include <sys/ioctl.h>) L0 T+ d- k: R  z% R% i. `
  6. #include <stdio.h>' S% v, v% @% a% e2 e
  7. #include <string.h>
    : R0 B8 N, b. a! J) @/ P/ _1 s5 H$ Z3 r

  8. ( i1 [3 O; z6 s6 A6 R  O
  9. typedef struct {: i' S4 J( ]+ N. F, S; }
  10.         unsigned int        e2prom_cmd_sub_addr;% g- z/ V4 i; R" j& J
  11.         unsigned int        sub_addr_count;' _, X$ {2 [, R; v& y/ p" |* J
  12.         unsigned char*        e2prom_cmd_data;4 X& o! E+ F; S: x
  13.         unsigned int        data_count;' V0 k- G5 ^* F& @
  14. } e2prom_s_cmd;
    # Q- }: d5 o  m4 I0 U6 ~+ c2 h9 \) t
  15. * ~! v6 j% O2 R1 a1 }, `( Y6 f, D
  16. #define E2PROM_CMD_READ 1
    2 t7 N7 V, _8 o: ?6 R
  17. #define E2PROM_CMD_WRITE 2
    : G8 x0 Z) Z4 e. C: q. V0 }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 {, ~8 ]3 A9 e/ I9 T

  19. ; I) \$ ^! O9 X0 B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ S: r7 t, v& q7 [. k, n
  21. {
    0 ?6 S- K1 h% f- k" n
  22.         int fd, ret;* j% ^9 J2 ~) [- t: C* R) m
  23.         e2prom_s_cmd arg;  X7 p, s8 d$ U
  24.         unsigned char buf[0x18];
    ) W) m/ A+ Y9 l& r3 b0 |

  25. - B' a. f# A0 P/ N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 R: j7 A/ h. G1 X: {
  27.         if (fd  < 0) {
    0 X7 _5 z" {" D+ A
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( ^& e2 w1 ]' i4 ]& z2 ]7 Y; ?
  29.                 return -1;- R' Y" D7 H8 R
  30.         }
    , x+ G: z$ Z( d9 w* u& g
  31.         arg.sub_addr_count      = 2;
    0 H  O9 v; A/ u( X2 L+ q
  32.         arg.data_count          = 0x18;
    * Y* W0 v& \6 T% d/ o
  33.         arg.e2prom_cmd_sub_addr = 0x290;' ~) V- n0 a5 E6 [, f; z
  34.         arg.e2prom_cmd_data     = buf;
    & r2 T( l9 b- ^: y: A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& C. k) E! `+ W0 R( w% f
  36.         if (ret != 0) {8 R) y% N9 r# A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; ~; {# G) e+ E' F+ c5 p
  38.                 return -1;
    6 O# Q* ~4 [+ i2 r7 W4 ]* I
  39.         }+ v2 }3 q5 r, ~- O' E
  40.         memcpy(mac, buf, 6);
    4 n$ ^* b9 v/ G5 z
  41.         memcpy(stbid, &buf[6], 18);
    * o3 g2 C; q. \1 T+ M% b/ J
  42.         stbid[18] = '\0';2 @$ t) J* h3 P$ s0 S

  43. , v6 ~1 L, a- D
  44.         return 0;) l$ x; O0 u. e. _( X3 \; V+ b- K2 W- [
  45. }
    2 o5 `% y  u  t, o

  46. - @% m4 a6 A1 D: p* h0 F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , t: s0 X% {& k1 R
  48. {$ v( U9 `3 u7 E% r$ f" ?5 F$ _/ B  U
  49.         int fd, ret;7 H9 [1 ]6 h' K  }* H
  50.         e2prom_s_cmd arg;
    / O( {! @3 h$ \- u& @: p. U0 F
  51.         unsigned char buf[0x18];
    3 f; b8 u( n( |9 V5 ^

  52. + I5 k, s! r/ {/ ], {+ f
  53.         memcpy(buf, mac, 6);  e! g( c$ t$ M1 f* w
  54.         memcpy(&buf[6], stbid, 18);; x% ^( K+ N& k$ M: @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);9 n1 y% e6 k! [2 {5 G
  56.         if (fd  < 0) {
    7 f$ E4 G; ^( Q* N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 C; p1 Z& @3 ?4 F6 o( [; X
  58.                 return -1;" D  l, Q8 [) x* P& O/ q- D
  59.         }2 J7 z% }, F4 I0 \
  60.         arg.sub_addr_count      = 2;
    1 g5 ~1 w& g6 a5 d9 a" Q3 K: _
  61.         arg.data_count          = 0x18;
    , a* G  k6 f: O- o+ Q; \9 G# ^5 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 {; @( i" e$ ~% `3 i( K$ [! c- ]$ P
  63.         arg.e2prom_cmd_data     = buf;
    ' v, e) d+ m$ p' N: S' U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / Q' o8 e- \: E, v2 b* K$ H3 Q
  65.         if (ret != 0) {
    1 ~0 a1 M1 Z* z: D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) B1 v* G( d1 a9 j
  67.                 return -1;
    1 j& d; r8 h. ]7 P7 g) c
  68.         }
    # b% m& o! S: w: R

  69. # [! o5 {" A6 L% Q7 z5 [3 S# d0 m
  70.         return 0;
    ' i1 h7 H, b( P8 a
  71. }
    : z: d- Y  Y; a% x/ L! p; R
  72. ! R7 j; V* T7 y
  73. int main()
    ( b+ I+ u7 j0 \
  74. {7 ~+ e0 C8 S' x) n$ M
  75.         char c;
      b& C! F+ Q# p0 k$ ?. K
  76.         int i, macs[6];0 ~7 P& D7 w) |: ~1 \; T- E- e
  77.         unsigned char mac[6];8 [) J: s6 D: @# M
  78.         unsigned char stbid[256];
    $ P9 `% s4 @6 M
  79. ; v8 k' z5 \1 V  [4 C
  80.         if (readparam(mac, stbid) < 0)/ P) q. T+ [% d4 D1 b; c
  81.                 return 1;: M4 d/ i" s! Y/ P4 Y& t" c
  82. " ]2 @# _8 w# k- o
  83.         printf("Current parameters: \n");' t6 y7 w* b: [) C; v! Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* |, ]0 r2 F+ C4 u
  85.         printf("  STBID: %s\n", stbid);% e) T! _% R6 _, D! P( `
  86.         ! x0 `, d  a& R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    $ l2 G' \( s, z3 S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! |4 g8 b$ W+ K( J# ]7 }* x, i
  89.                 printf("Input MAC error\n");
    0 L# \4 a" b# V: d
  90.                 return 1;
    9 O1 b' N# P5 r/ J) @! h- L9 a5 S! q
  91.         }
    5 V# J2 p; n, e- U" d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 ]* G$ W9 _% y' {& _
  93.         printf("\nPlease input new STBID: ");  b( }7 W4 v' P) G* ?
  94.         scanf("%s", stbid);! g5 X5 s: i- [+ |5 ?
  95.         if (strlen(stbid) != 18) {
    / e: h* x7 A2 C7 a% b7 q
  96.                 printf("Invalid stbid\n");
    : p; e$ _  v1 d) \4 F- n
  97.                 return 1;5 n! q$ j) S- v0 l5 X7 A
  98.         }7 ?. f/ ?& u2 B3 H: c5 t% G6 O' S
  99.         printf("\nNew parameters: \n");
    ( k% h& u  E* y% @* v3 R: r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 [* F2 V3 A* x( Q. k+ b0 L& {+ N6 N
  101.         printf("  STBID: %s\n", stbid);. Q: L% {7 o3 U& h
  102. ) T5 w/ ]9 Y, h% L, F+ b3 `
  103.         printf("\nDo you want to change paramemters? (y/N) ");% A/ W+ }; a' K* ?4 E8 n
  104.         for (;;) {8 |5 N, m1 E: k7 q1 v
  105.                 c = getchar();
    / e4 H% T8 V2 e4 u* p  R
  106.                 if (c == 'y' || c == 'Y')
    & ?. h9 L! _9 V3 }% [: R1 h
  107.                         break;
      q5 u, J  J6 D1 }
  108.                 if (c == 'n' || c == 'N') {0 P) f  T3 w; y$ `% Z
  109.                         printf("\nAborted.\n");; ?: p: @; q# H& U. I' b
  110.                         return 1;" ~( \' a' J- N0 L% e2 M; C
  111.                 }2 z3 }" s* e2 q8 B9 p
  112.         }$ `1 @5 t7 C3 _! _
  113.         if (writeparam(mac, stbid) == 0)
    ( H' o" z  f+ U5 z
  114.                 printf("Parameters changed.\n");9 c+ Q) l& R" j/ |& S
  115. ( a1 ~! I1 N2 D1 i
  116.         return 0;+ Y( O: N- R% ?# z3 A5 ]7 y- N5 X
  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
! M/ m5 M9 c4 B4 ^在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" H: e! ~0 v$ U  f4 t/ T& N你用的编译命令行格式是什么?
2 C# ]& y0 M! e6 P# T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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