找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15506|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- W3 F$ o9 q4 v) K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 c0 {. N/ O: J5 J% {" j6 i- m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- @- ?6 Z, B! |' ousage: himr <address> <value>. sample: himr 0x80040000 0x0- t; D; ]) s+ @3 t  L
' F1 J3 h& _2 F9 s7 x) v' Q

  Y" u8 f0 e! J: I9 @! `2 |7 v5 N" b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( F  V( q0 r+ H* B

( z, r9 |* C" ?: N5 t补充内容 (2012-3-8 09:42):$ `- D# U/ y) [5 s: o/ F; r
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ r* y7 P8 l2 u# q这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ ?5 v4 J1 {* |5 L, N
5 z- A9 {1 j" N
himr <address> <value>. sample: himr 0x80040000 0x0
$ S: n& E7 ]3 K1 r' `/ }+ `$ B2 q( L* D8 M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; H; L* a0 J9 l: b- q( _2 D7 I
himr 0x80040000 0x00( U: d" u+ [" i
himr 0x80040001 0x11/ o8 r) b5 O1 ]' k$ d0 ~2 x& e
himr 0x80040002 0x22
0 k  U; ]1 y1 W+ b4 p; h3 d& R4 zhimr 0x80040003 0x33: _" `( Z; m! Z9 |
himr 0x80040004 0x44
2 O1 @' b8 j% g  ]9 _$ y, Lhimr 0x80040005 0x550 r* ?" m# T; K+ @% G8 Q
& V6 ]* Y( b9 r, Y6 T
SN也是类似。' A& k+ m9 F! S% }5 i4 J

8 j7 y% ^; R4 d" V现在主要是,谁告诉我们MAC和SN的地址?
* `+ B9 s6 a+ H5 s4 i9 R; Y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- x8 v3 j! Z& k% O- [# Y一直想找到运程修改MAC和SN的办法,苦于无解啊
$ ~( t+ h9 ^1 d5 G! `9 x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ c1 B  |! n7 q( ?
! B$ c  W& L+ e3 V/ G修改的代码早有了。到今天不会编译。/ B; B1 U" {0 a% E3 Q) _$ \
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; a  s5 P) X+ f" E% L
  2. #include <malloc.h>
    " \2 u& }* H# w3 F
  3. #include <sys/types.h>! X% i" K) W0 f) l8 F
  4. #include <sys/stat.h>
    2 t) s: _  Q. N9 n! h
  5. #include <sys/ioctl.h>
    8 N9 r$ G# ^9 u* b
  6. #include <stdio.h>
    & w6 f- c8 T9 O& N" C/ f
  7. #include <string.h># P+ p3 G7 J  Z; t3 u+ Z

  8. 8 p2 m% |! e) w, |- Q! H
  9. typedef struct {
    7 o4 \7 f  z4 g7 E! @, h2 m
  10.         unsigned int        e2prom_cmd_sub_addr;) r! }! y2 ?7 @3 o, K" @
  11.         unsigned int        sub_addr_count;  j. N/ Q. }. d' X  ^7 G
  12.         unsigned char*        e2prom_cmd_data;- N* b' h/ y9 X; \# d
  13.         unsigned int        data_count;2 M! O) J7 a3 T# O- Q+ P
  14. } e2prom_s_cmd;
    & m  Y8 I* ?+ g+ `$ n( w
  15. 2 P/ c6 I! M% x8 F! T
  16. #define E2PROM_CMD_READ 13 `$ u. E% _+ g3 q5 ?7 w
  17. #define E2PROM_CMD_WRITE 24 d4 q+ }. C2 q- \1 _( h5 F6 ]+ j! \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 d, I$ @, P" f# j
  19. - w  t& H5 @4 c
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) ?* n# y' a9 l7 z% a
  21. {8 X" U% A. u1 h6 ^0 p/ i
  22.         int fd, ret;; B* y0 q8 M* J
  23.         e2prom_s_cmd arg;
    3 i3 i0 Z# ?0 X' |+ \
  24.         unsigned char buf[0x18];
    ' ]# ~+ ^5 u5 q/ a5 k( c8 m  M3 ^7 ^
  25. 2 b" J4 n0 ^; j6 n8 Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( q" C2 Y0 T% d: R% i2 J. b
  27.         if (fd  < 0) {
    - b4 r* L" ^5 B5 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # z( a! i% C" f  O# O/ l1 i
  29.                 return -1;8 x1 D6 J3 ?9 [" u) ~
  30.         }
    0 @( M6 G$ O) q  V0 k) p
  31.         arg.sub_addr_count      = 2;
    ( J, r' d( W# @2 N; }
  32.         arg.data_count          = 0x18;
    ( r8 S9 N  z- n
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : `2 ~5 Q; W9 e% n, S& X
  34.         arg.e2prom_cmd_data     = buf;) h# Q& u. d3 _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 a2 N3 Y. U& o" O$ b3 J% G
  36.         if (ret != 0) {
    8 _% U# G) \% r% s
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " L% m0 U% g% n9 S
  38.                 return -1;; q( N! n+ d0 D9 M* v
  39.         }- |+ f, I7 r+ e* W& m
  40.         memcpy(mac, buf, 6);; `; `5 N  _# \& C
  41.         memcpy(stbid, &buf[6], 18);
    + {* h( M: J. L6 D: J
  42.         stbid[18] = '\0';. Z+ [8 J' q' [7 d: @* L, n

  43. " u5 q) w5 B/ y8 h7 g4 m& N
  44.         return 0;/ o( K# H! P/ j& W. p8 O
  45. }3 x% ?, l4 n4 `( H! O2 f

  46. - O% A- `6 \' j5 f9 O6 r! B7 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' z5 H' K* j$ f5 Y2 Q
  48. {
    8 `) J, e: c, E" q0 q* q
  49.         int fd, ret;
    ' }* `! B& `; G
  50.         e2prom_s_cmd arg;  t1 f$ P* @: b
  51.         unsigned char buf[0x18];
    6 u, ?: T% N  Y( ^, h. |, g8 I* B
  52. 7 `" y1 l' {  P7 R' ?
  53.         memcpy(buf, mac, 6);
    ! Z! a& s, t0 L9 F7 B, D# B3 J/ N
  54.         memcpy(&buf[6], stbid, 18);, j* z( v& v9 o( p: S! R
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# M! s$ {9 h  {; A  e$ R
  56.         if (fd  < 0) {+ s0 X' d+ E5 z( i* e2 i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : M' G* Y, e" K3 t! A+ u! Z* g0 m4 v
  58.                 return -1;
    ! ?$ Q8 Q( @4 ]7 u
  59.         }6 o% K( Z- \) l& x& I
  60.         arg.sub_addr_count      = 2;% l0 _6 c6 H& z( p
  61.         arg.data_count          = 0x18;. D0 B2 I) `" d9 Z/ N+ P( _
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ I9 p; o) `- ^, O0 D
  63.         arg.e2prom_cmd_data     = buf;- B4 q: s5 L$ o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 F' l4 `& {1 w5 ]" X; x
  65.         if (ret != 0) {# O9 `1 N9 N' z" g8 A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 L7 d0 h4 L$ f" K; }* \7 A
  67.                 return -1;
    ) @+ s& ?% F" |+ J5 P
  68.         }" b- d( d# h; S; v' S1 D

  69. $ |) @/ t  R+ m
  70.         return 0;
    : ?* _' G$ i/ E* w6 T/ z
  71. }
    ! L  Y% s( h2 C+ w& U! Y
  72. 4 `# Q) h) Z+ X- w/ k& ^
  73. int main()' V0 S4 c; `) ?2 Q
  74. {; s! e2 z7 N' o& E2 M& J: y; N' X1 |
  75.         char c;" H, N9 m4 s) W  Y0 w7 U
  76.         int i, macs[6];+ g  h" c1 l( e% I% @7 I; q
  77.         unsigned char mac[6];
    ) z9 D0 [- }7 N
  78.         unsigned char stbid[256];. U' s$ c. X( a/ f2 x: s) y
  79. " Y/ R" E( a. F$ x* D! B# H
  80.         if (readparam(mac, stbid) < 0)) x2 v( t- e8 W, [9 Y2 L
  81.                 return 1;4 _, d& V" N8 f8 x; P+ g  i' q: B, P

  82. ! y4 d8 v  Q; n, q
  83.         printf("Current parameters: \n");) h9 Q, C4 S2 W- b) e5 ~6 s/ G: h5 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % C8 z1 W( Z. |2 T2 V, D# h+ Z
  85.         printf("  STBID: %s\n", stbid);
    + J' W  R( r# h0 Q9 A5 Q, P
  86.         & U( Y( o) z* ~- p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 m9 N) q" u( Z( f& e. Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( h7 y, C1 }; V6 \; p4 w2 Q! C
  89.                 printf("Input MAC error\n");; [9 ]7 s/ l% M9 `! \) W
  90.                 return 1;" h9 _& b& v) [* c/ v
  91.         }* q0 F, o9 `& p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; t- Q7 |& B; Q
  93.         printf("\nPlease input new STBID: ");
    : ?- E, Q: U6 ^% o8 |4 b0 T7 C
  94.         scanf("%s", stbid);
    : g' R- M! u- V2 D
  95.         if (strlen(stbid) != 18) {$ @& v* D3 V' i  |
  96.                 printf("Invalid stbid\n");6 s# A$ _- v% L8 s
  97.                 return 1;3 h9 I% ?2 e% l2 d2 n' S& `
  98.         }2 M- h, s2 S+ M
  99.         printf("\nNew parameters: \n");
    ( J( f! Z" D1 u  ^& e3 S. n; G6 v7 ]6 X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: J  h. b6 g: M8 ]8 A7 E6 K
  101.         printf("  STBID: %s\n", stbid);2 t  K  Q" K/ X9 \& l- b

  102. " K) k$ M, S/ U' t0 O; f) f% e
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % v+ Z1 m: h6 @! k7 K
  104.         for (;;) {# O! e7 `. n5 ~4 S9 W8 r0 r0 V
  105.                 c = getchar();
    - Z+ n- O$ W3 Y: X2 m# p' |3 w* R; M: E
  106.                 if (c == 'y' || c == 'Y')5 E! f) r* P1 [9 D2 X
  107.                         break;
    0 R5 D% b5 t8 p7 z1 A
  108.                 if (c == 'n' || c == 'N') {5 q! w+ r1 A, f
  109.                         printf("\nAborted.\n");# K. Z5 j; u2 R. z
  110.                         return 1;+ d6 p! V. d" ]0 l! I
  111.                 }
    & y2 D9 I! l* J/ `
  112.         }" Y; L$ J- Z8 l: g; W. T' `, l
  113.         if (writeparam(mac, stbid) == 0) 0 N+ c( [4 }. L% b: {+ O/ W9 Z( u
  114.                 printf("Parameters changed.\n");
    $ r' g: ]. S2 Y# z: {
  115. : X" ?. D) X; I( i4 Z
  116.         return 0;
      J( f- k* `) w4 M+ C
  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
+ B3 `5 `) h, x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& ^4 g( M  R( `你用的编译命令行格式是什么?) m& y/ \1 X( @, t" _+ \/ y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-12 13:36 , Processed in 0.023397 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表