查看: 17266|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      ?8 l+ a* c! h; e
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ t  d9 j5 _0 z6 M$ [& X$ U
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* h9 h/ j  |# ]% I* ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0! h  E' |0 w: T' p  {' t6 X

& r! _7 b* g0 o- R, b' i& F
' C, S7 J+ R. k: c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" G: _; C+ j6 f) G& i
' S$ ^$ Z& A3 w补充内容 (2012-3-8 09:42):  d6 f4 O! k. _; {! {
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 b( V) o+ ~  K: c- i! w+ ]这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
4 }1 I1 b, ?$ L' n' c+ a' f: k5 K+ J3 K7 d
himr <address> <value>. sample: himr 0x80040000 0x0  Y: |( v; T+ q" B' E  c6 P
/ M$ u' z/ o0 n$ E) l/ m
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% Q) f5 p8 V$ L
himr 0x80040000 0x00$ x9 w/ X0 d' k9 w
himr 0x80040001 0x11
3 B8 [( w6 V/ |7 G8 Khimr 0x80040002 0x22
: P: Q2 r1 X/ I# {himr 0x80040003 0x33  [- N# D9 J; M5 c6 \6 Z' g7 ]
himr 0x80040004 0x44' C/ y8 y$ k5 g, T6 N! V
himr 0x80040005 0x55* `  i1 ?( D6 ]( F- F

! D7 F1 {% B7 ?4 b) KSN也是类似。+ M9 h, \4 H* L/ U. P1 e2 h2 L! a
: j% ~2 N& H) n, B3 X5 u
现在主要是,谁告诉我们MAC和SN的地址?" P& K+ j! _6 _' u7 n8 e( M; k# d
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 `8 n0 G, M  ~" M. Q- W一直想找到运程修改MAC和SN的办法,苦于无解啊

2 |6 u2 ~* E8 K: W0 j+ b% n# |源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 % \3 p+ X' f5 \/ u4 z& n

/ e( f- S6 q, _. U6 E: e修改的代码早有了。到今天不会编译。+ s4 A7 h, T4 _) S1 e
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / L/ {' k4 Q, Q, e6 S1 t6 l
  2. #include <malloc.h>
    0 u3 I$ p- k9 U9 J% L9 i( R
  3. #include <sys/types.h>8 `4 R) D( |' V  H( A- T* _
  4. #include <sys/stat.h>( I" B" O$ D8 l! n% B" C
  5. #include <sys/ioctl.h>
    # E; H& s" i/ }, d, q- G: L, t5 T( \+ _
  6. #include <stdio.h>% u" T# q% ]* m. V" l' y* R
  7. #include <string.h>
    + u4 ?) i/ F, I

  8. 2 _2 C# d. }( T% R) U, ?# R
  9. typedef struct {) O6 i5 x/ r4 L8 q1 c( T' b
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ m5 a* e  [  w/ B* X5 ^
  11.         unsigned int        sub_addr_count;
    0 ~5 z8 c1 v8 z2 B) }: B4 K) J
  12.         unsigned char*        e2prom_cmd_data;
    & j2 ?( {: S& @' n9 n
  13.         unsigned int        data_count;: z$ z9 Z/ x% ]- q6 u* j
  14. } e2prom_s_cmd;
    . ]; o/ J, |3 D+ c

  15. , w0 Q' S7 f+ B
  16. #define E2PROM_CMD_READ 1
    ' z! r, o! f4 H/ u0 c" j: `
  17. #define E2PROM_CMD_WRITE 2* W0 e( G: Z; x. Y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" e2 Z" ~1 r0 D( {( p5 a
  19. ( A" Y: s8 f& b: }- ~$ G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 b- A  b( d6 k. P" D
  21. {
    0 D3 e5 {: m( {# V# X" H4 R
  22.         int fd, ret;( l5 W" c4 n8 Z% K* ~* z
  23.         e2prom_s_cmd arg;: x$ ]" A# D% f! e) ^7 [" ^' K
  24.         unsigned char buf[0x18];
    % b5 d% p7 ^" i7 i

  25. 9 P0 M9 R/ e3 n8 @4 n# w& R
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ \8 ^+ J& ^8 ?1 R
  27.         if (fd  < 0) {% P( a; z" S- v1 ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - A5 K8 B& v7 n' O0 ~
  29.                 return -1;
    9 f/ C, y0 D9 i6 @" p8 l
  30.         }  G; j/ s: q  Z# K$ p1 Y* {# Z
  31.         arg.sub_addr_count      = 2;+ f: {* @# a, `" @4 _" E7 F
  32.         arg.data_count          = 0x18;. x$ q9 I  q: k8 F( |
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 l' O6 ^1 b* Y
  34.         arg.e2prom_cmd_data     = buf;
    " `' e$ U4 E. P0 z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' T/ C" q8 R9 d0 N0 z
  36.         if (ret != 0) {
    ' J% j4 b- z0 Z* O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + C1 T; w' j0 n+ ?
  38.                 return -1;  s0 p6 l5 I9 S8 J
  39.         }
    % t0 o: c' H! L8 S3 z/ u! i
  40.         memcpy(mac, buf, 6);
    2 D+ ?5 t0 h. N9 Q# c+ M4 s
  41.         memcpy(stbid, &buf[6], 18);' W4 }3 N9 v9 z) ]. y
  42.         stbid[18] = '\0';6 E/ J) H* j$ }2 V

  43. 7 y; W: P9 J, c8 C3 V3 S
  44.         return 0;: w9 r5 i/ G0 W% B- l6 _& T
  45. }, Z" P: r6 I, ?* d9 t5 b) L

  46. 4 C5 J( v, u5 L0 M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . O+ @7 M" }; }( _% I! M  i
  48. {
    , p' K& {* N4 t* D1 d
  49.         int fd, ret;
    ! Q: z/ ?* P( @, n+ p& ]
  50.         e2prom_s_cmd arg;  |. U; i5 {. ^! {
  51.         unsigned char buf[0x18];
    ( S$ c2 `* O8 r! M
  52. 6 A8 F7 J8 ^- M  J3 _- I8 _  u6 V; Y4 S
  53.         memcpy(buf, mac, 6);) o! T/ m$ K: ]  P
  54.         memcpy(&buf[6], stbid, 18);$ z/ ~1 a. Y" R$ q  M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 T/ w, x& x9 J
  56.         if (fd  < 0) {
    2 k, n2 S5 W/ f4 Y7 [, z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ m" s7 l( a5 G' X
  58.                 return -1;
    3 \$ y+ U, u0 |1 ]6 X
  59.         }3 [) S' e3 C; i
  60.         arg.sub_addr_count      = 2;% d' Z5 r# H$ z! ^5 d
  61.         arg.data_count          = 0x18;
    , d) [4 H& t& t- L* X& x
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . G# K9 j  z* W: e! P0 p1 |) R
  63.         arg.e2prom_cmd_data     = buf;
    . S( e+ t* k! p5 k5 D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; z( l! w( r6 e- N* f+ E! g( y; W
  65.         if (ret != 0) {
    ; L8 p: A- _6 j) ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( x& u# Q. c+ H3 C5 j
  67.                 return -1;  B( i) ?4 V" g& k
  68.         }
    * |* H; V0 t5 n' j( ~! P  I; }7 x0 T, O
  69. 6 Q3 c- |7 z: f( O
  70.         return 0;
    % \3 \$ a: R3 M: c. u' \
  71. }
    8 n( x0 m2 {; b" Q
  72. / {/ z) E7 P* K: I; u# f! s9 f
  73. int main()
      L# w* ^! ]- g3 s; L6 o
  74. {4 s$ m2 a! U  z$ K; }
  75.         char c;
    0 X! P. r) @- H& U2 |0 ~: f5 [
  76.         int i, macs[6];+ L5 I  o  X4 C# Y
  77.         unsigned char mac[6];
    # O+ r( ~8 `. O: R& j- }+ c2 r
  78.         unsigned char stbid[256];
    - w# Y: t+ E3 L9 S7 Z  Q
  79. 5 T/ I4 }' [. @. K# M2 U( P
  80.         if (readparam(mac, stbid) < 0)
    9 s; x* t6 f9 _, T, F
  81.                 return 1;
    - ^5 t0 g, Q. C5 r, F

  82. 2 n# I  X/ W: ]( X! v
  83.         printf("Current parameters: \n");# ~, k! |/ `0 Q) `# X5 t. B4 v
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! ?- P# o9 t' E, J
  85.         printf("  STBID: %s\n", stbid);
    5 j$ W: i# ]# G9 f) x7 o$ m' Y
  86.        
    & f. V8 W; x: f& g0 t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( c1 V: j  w/ F$ B- ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 @- j) G$ m8 h2 M6 h
  89.                 printf("Input MAC error\n");
    ' g2 t! p9 K* V5 S4 ^
  90.                 return 1;
    " e, C9 ]0 [% k6 q4 S$ i# l5 v
  91.         }
    9 T. Q% M2 G. X4 t2 t1 E
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 |: c% E# o" K/ f
  93.         printf("\nPlease input new STBID: ");) G' O7 m" n; m- s
  94.         scanf("%s", stbid);6 ~- m# V4 o, ~2 _+ S4 X3 f
  95.         if (strlen(stbid) != 18) {2 w( M# f0 d. T! d/ j/ Y
  96.                 printf("Invalid stbid\n");7 \2 y6 j4 z& u1 U8 @6 i0 f
  97.                 return 1;. [& f( V& Q- U1 S
  98.         }* J+ t- T, L7 j# \. X: F% q
  99.         printf("\nNew parameters: \n");  Q* b, w: e2 u& ]% c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 K; C" H$ G- N; B' v2 C7 l, B
  101.         printf("  STBID: %s\n", stbid);
    ) {; Z) V$ h# w8 v2 X0 o1 C; A5 P
  102. & y# |8 S8 h; L5 E1 v4 ~1 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    * P$ U- O' I) e$ f. S3 V
  104.         for (;;) {0 I2 N; p$ M/ j* t! j- Y
  105.                 c = getchar();
    & R, P7 b- c6 i- X
  106.                 if (c == 'y' || c == 'Y')
    $ @0 Z! L2 S2 p6 K2 p
  107.                         break;( h% _* B: T% k' v
  108.                 if (c == 'n' || c == 'N') {
    $ s: p( g1 V2 S
  109.                         printf("\nAborted.\n");2 x" W" X! s' u+ V- ~8 h! t
  110.                         return 1;5 X# ^/ r' S* n) H. K. Z' @
  111.                 }/ ^. a$ x8 a4 j+ ~8 x  D
  112.         }
    3 H/ a! V) g# I- w) k6 [$ n
  113.         if (writeparam(mac, stbid) == 0) 4 b1 ^$ R% F! R
  114.                 printf("Parameters changed.\n");8 x8 e  J! O& p+ f4 @% [
  115. ; z, u+ W9 N! x0 L; z
  116.         return 0;
    8 Q' m' C- }& Y! A; f* h+ Z
  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
  [( I  y. P4 L- d! L9 P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ m2 q/ v0 y/ }, v: d5 B% \# {+ ^你用的编译命令行格式是什么?% z3 A/ S. D7 m  _! ?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客服返回顶部