查看: 17325|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , X5 J  ?: o7 K2 H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' @* I* j, F& g, c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' I" I+ h2 |' n" N+ a% v( Eusage: himr <address> <value>. sample: himr 0x80040000 0x00 c, A. _3 Q7 }- p! M8 z- ~

+ d1 f0 ]4 \7 N) x+ a: y4 X6 A' O( U" C. L
9 X' h; C( t# O0 B! o( Q, w' g不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. i" [( w) q) v" O$ y$ D' ?: S5 j

0 x" |+ n. x6 D* o6 D补充内容 (2012-3-8 09:42):. I( d/ e$ w( Z8 r6 k/ J& C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 w' O3 W6 I+ v: I" |. j
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' |3 I( N2 E) n" h
5 m- I! ~) I. Q  Phimr <address> <value>. sample: himr 0x80040000 0x0
' G0 m3 \, q) P6 g' h9 Y, W' M& Z* Q, b! I
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' m7 P9 I. @7 l. _2 G3 M
himr 0x80040000 0x00
" r) v1 F0 l, |( z: K& l2 b" xhimr 0x80040001 0x11, t3 V& K2 U$ X" H) W
himr 0x80040002 0x22
, ?) c) \  n, P% m. m9 N" Ohimr 0x80040003 0x33
. j0 V! v  M$ ~( Yhimr 0x80040004 0x44
' d. j3 L9 i) R) O1 hhimr 0x80040005 0x556 O7 n' ?8 Y9 A
' C1 N- b' D4 _! {/ Q2 D" m2 \
SN也是类似。
3 _1 B0 }8 x+ M6 v- G( S6 Z* d, U  ~% N
现在主要是,谁告诉我们MAC和SN的地址?" I) N7 j* I6 f- b- c& Y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 n0 h7 J. m9 s' [1 \3 c6 ~
一直想找到运程修改MAC和SN的办法,苦于无解啊

) L! F* M' I& D3 t4 y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& ^; `# i$ f* [( p3 s, ]; G9 r* u. b# g5 E1 ?
修改的代码早有了。到今天不会编译。
% p3 c1 _$ U+ j% Q0 _5 W# P  I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  E% J) O: T7 |6 \+ f
  2. #include <malloc.h>
    8 b& }8 ?+ V- S# Q1 {
  3. #include <sys/types.h>
    : r7 E/ q3 L" a' X7 Z7 `8 G
  4. #include <sys/stat.h>
    ' I, h6 l8 d6 c' D
  5. #include <sys/ioctl.h>
    . l4 q" K# Y% V' o- ^+ q
  6. #include <stdio.h>, f* H' J4 ^- n6 s2 K
  7. #include <string.h>
    $ x  n1 `+ Y, }$ k: g2 @

  8. 1 X7 P8 \/ M" W1 t
  9. typedef struct {
    . `, D/ F$ D6 f  h% e, R
  10.         unsigned int        e2prom_cmd_sub_addr;% {5 p: N9 F/ y9 \3 E. L3 Z
  11.         unsigned int        sub_addr_count;
    9 V2 ~7 w$ \. \1 G( s  d
  12.         unsigned char*        e2prom_cmd_data;
    0 {6 C4 e/ l4 w: l+ k
  13.         unsigned int        data_count;- D+ t. C6 N  a3 j
  14. } e2prom_s_cmd;
    # M4 x$ _5 e" s; \
  15. $ l& ~& Z" e# {0 d% c( L% X& L; X
  16. #define E2PROM_CMD_READ 17 Y8 A2 `8 q# f, B
  17. #define E2PROM_CMD_WRITE 2( B- U7 H' @1 s: o5 `: a$ |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # d% I. y  d. H; j  Y" p, N
  19. 9 e! F* @2 Q; e  m, a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    " F5 W6 U; A& y/ o) `# R& M+ p
  21. {3 a  _! v! y& p+ p
  22.         int fd, ret;
    4 A' e, j. e  s0 T
  23.         e2prom_s_cmd arg;- I! |4 ~- n' C- q' w$ \
  24.         unsigned char buf[0x18];7 O& F6 V4 i9 X/ V% K

  25. 4 N& x( A% A; F% C+ l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& p3 [& n* k" e
  27.         if (fd  < 0) {  ]2 ~) ?1 Z5 y: _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 b' ?$ k. ^0 A) i2 S% F
  29.                 return -1;
    / F3 F; r6 N6 |: X' d0 X' h
  30.         }' d; m8 ~- E7 a8 J: v
  31.         arg.sub_addr_count      = 2;' ~3 b3 i' z1 `) y8 _( y/ S1 d6 w
  32.         arg.data_count          = 0x18;
    ; V5 R- }5 J& M/ E
  33.         arg.e2prom_cmd_sub_addr = 0x290;) j5 i6 n) N! W% i5 c1 e. `0 K
  34.         arg.e2prom_cmd_data     = buf;
    - d* }/ q6 n& o+ [( z- ~0 U6 b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      S! _) |- q( q# ]
  36.         if (ret != 0) {
    . H& n, n+ A' R  }4 y+ Y8 s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 i5 Q2 {: v+ u1 P0 U' ~
  38.                 return -1;4 B  _: }& V- n* H% F! F, S
  39.         }
    + D: z; n  x, m$ b: v8 h& B
  40.         memcpy(mac, buf, 6);9 ?0 S5 e1 M) \
  41.         memcpy(stbid, &buf[6], 18);
    $ u! |6 l- t& v
  42.         stbid[18] = '\0';
    ) N* J8 B1 K- b5 I% m' J& |- z

  43. 8 l# s& g) r! `0 ]
  44.         return 0;
    7 O; Z! s6 A" v. a0 T" E
  45. }
    , x) f- R: }! C+ K+ g
  46. 9 K! y0 R' x' `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  K7 r. t9 N7 K; [3 B
  48. {
    - Q4 Z( A4 T$ H# Q. Y
  49.         int fd, ret;. B& |9 U, o* M1 p
  50.         e2prom_s_cmd arg;
    : Z# `+ H, S, I" e8 z- f
  51.         unsigned char buf[0x18];: A; z: a) C# d0 q4 i
  52. 5 Z3 D6 i7 h7 {4 q7 V# _4 r3 ~2 B6 k
  53.         memcpy(buf, mac, 6);& X7 x5 A" X: a' e. h) T; a
  54.         memcpy(&buf[6], stbid, 18);4 x* a2 F9 f+ K) Y1 A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' f: S: F+ q! f2 k: t( v
  56.         if (fd  < 0) {7 P0 b3 f& C7 u% t" o$ M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# V9 E, w5 ?; ~) a' I" q8 H
  58.                 return -1;
    - e; L! Z7 t2 p) I& Z, W
  59.         }2 I  x4 V) R. t9 u0 u& t5 N6 p
  60.         arg.sub_addr_count      = 2;
    * i% Z; H4 \* W  f8 I
  61.         arg.data_count          = 0x18;
    ! f! P9 k# h0 p6 R5 @( {
  62.         arg.e2prom_cmd_sub_addr = 0x290;; U2 R' p' O( h& \% _7 ~) t
  63.         arg.e2prom_cmd_data     = buf;* t: e+ h" j0 D1 ^  p0 `3 C6 ]' B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. l1 H; D. y2 _. X! O; x; }& ~
  65.         if (ret != 0) {
    7 F) d2 L% u, ~0 T) R' W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 [6 @$ t% t; S( K$ F# ]
  67.                 return -1;
    % N# X9 c, U) z1 F
  68.         }/ W( S7 ]# h; L4 F

  69. ) S! X  g3 f: v5 C
  70.         return 0;6 h1 S* v( Y- s* \
  71. }
      I$ g' j3 ?* S% J2 u

  72. , @" h4 i$ Y& D6 K+ p  _
  73. int main()
    2 z6 g6 \1 C6 i4 z- V
  74. {7 A. z( q: k& H/ I% v
  75.         char c;
      i# f; p) c2 z
  76.         int i, macs[6];
    & B8 W$ v; ~6 H  l' Q2 W+ w2 @3 q
  77.         unsigned char mac[6];
      E9 }# M0 Z9 K# J
  78.         unsigned char stbid[256];
    - m, K2 L7 f" |, Y& \" l) _

  79. 1 s1 D3 `& E, k& F$ g/ ?
  80.         if (readparam(mac, stbid) < 0)
    ' {( P  G, @+ T! V6 \
  81.                 return 1;9 J1 K% C4 @* q# B+ {- C

  82. & ^2 P( q" y8 E2 f9 N/ y- y; k' G
  83.         printf("Current parameters: \n");
    7 m$ y. M; Y) N' m$ |0 Y1 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 a1 G. ?7 d' L6 _4 `6 e$ d; i
  85.         printf("  STBID: %s\n", stbid);
    3 t: z7 I- w2 k8 y
  86.         # x9 |8 A* {$ l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ I2 D, R* b& U; c" p; z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 o8 ^/ G( ?; r+ K
  89.                 printf("Input MAC error\n");
    . Q# [8 a/ g' }& R  V
  90.                 return 1;0 _: m. T' J6 w6 f3 G' Y! I
  91.         }
    5 o; w' K. i2 }  w: o$ d/ L, G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( c# x% {+ r. F% U6 ~0 Q- T
  93.         printf("\nPlease input new STBID: ");# z4 t, H& z0 E5 Z
  94.         scanf("%s", stbid);9 Z4 v: p/ Q+ z- }# r" z- h
  95.         if (strlen(stbid) != 18) {, I/ w' c/ F- {4 Q5 w+ q; k5 J2 u
  96.                 printf("Invalid stbid\n");3 |: ?4 b9 e3 X: b: m  {$ H) a
  97.                 return 1;
    7 @; r3 B% ?3 G. C* i$ _
  98.         }9 e9 g7 u& ]( N# T. C
  99.         printf("\nNew parameters: \n");
    & B4 @, g# S  V6 N% m6 e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : B' C! y: Z. P9 @- W9 l
  101.         printf("  STBID: %s\n", stbid);+ f1 J& B' U! f3 |, u! \9 o; }
  102. : o& Y. Q( B/ l+ x
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # j6 @7 G) T1 V( \" ~
  104.         for (;;) {
    % L& Y+ h$ Q/ T5 s& S6 w
  105.                 c = getchar();9 O. b2 ?" B9 o* s2 ?
  106.                 if (c == 'y' || c == 'Y')( @# C% L9 b& k2 J1 u! x! c3 E
  107.                         break;
    ; m+ G# X# B# A7 G6 G  l
  108.                 if (c == 'n' || c == 'N') {8 Z3 ?+ w+ G1 d2 D
  109.                         printf("\nAborted.\n");' ?4 a8 w. N) B* c8 G% f8 }& A
  110.                         return 1;1 \, a# e; ?+ G7 K
  111.                 }
    # u( [6 f: P0 w  k  }- @4 }5 C
  112.         }: i* ?2 w4 L$ \6 B/ K$ g9 y
  113.         if (writeparam(mac, stbid) == 0)   o/ J  }7 E% L# c7 O
  114.                 printf("Parameters changed.\n");; H6 d, O/ y; L
  115. - c1 _0 d. V. I) ~
  116.         return 0;% Q  i0 E# [& p+ K
  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 & }& R4 \; x# G  {/ n
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% j8 j! x, w& J, n你用的编译命令行格式是什么?- A# s5 g6 H6 U5 c  x
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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