找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14751|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& I) \. x5 q# F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    + i+ C, o% ]% i7 v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# l( J6 [5 H. y: k+ f" Y  t! ]2 j: z/ husage: himr <address> <value>. sample: himr 0x80040000 0x0
3 e/ M) @) `+ {( y  q$ z" G: S
7 N5 g( z6 S% L1 `/ q8 R; M0 ~' L' d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# @+ E: e5 [% Q
$ S8 w: C$ A5 j% r1 ^; r! u2 \
补充内容 (2012-3-8 09:42):
" G6 y% C4 R. a* {; x( l7 v6 Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 |4 }8 w7 M' b7 v* S
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ q4 d; O, W% X, ^$ N3 o- O' u% b" H1 q* z9 I, P: z
himr <address> <value>. sample: himr 0x80040000 0x0
3 W6 I7 L1 \8 [" t2 a$ _( L
( N, N; Y# w. M1 a& u7 ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# n2 z$ l7 l  a6 G# f
himr 0x80040000 0x00
+ n' T" ?& U% f+ h  `himr 0x80040001 0x11
9 b: V' \+ G" {. D" Mhimr 0x80040002 0x22
" \3 h  Y. L! j4 f7 Nhimr 0x80040003 0x33! y2 e4 P0 n  R  y3 z! p) C/ B
himr 0x80040004 0x44
4 ]  Z+ U2 d5 i: |# k& ^5 R* fhimr 0x80040005 0x55
4 Z: p4 t( I2 h; X/ h
. u+ G* Z2 V8 f* Z" JSN也是类似。
3 h, ~' O) o6 [) h6 c6 e. P! W$ y' ?: J9 U, _* {
现在主要是,谁告诉我们MAC和SN的地址?* J1 x' @/ Q( y- x/ s" K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 `, T5 J4 S9 k, Y  l8 ~
一直想找到运程修改MAC和SN的办法,苦于无解啊

0 n; j+ @/ c  {! }0 b1 E源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ h/ |5 c* H/ n5 B3 o+ h# v
4 L/ t% }- e" K+ A修改的代码早有了。到今天不会编译。% G- ]: Z9 z! S. X" O
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 C- `# w9 V0 S, n# H
  2. #include <malloc.h>, ?' }5 }) ^% }6 U) c# V0 F( {
  3. #include <sys/types.h>
    / g% u+ [' x& N; K5 h% @! D  {; `
  4. #include <sys/stat.h>
    ' M* n* e0 t  @  I# i2 |: Y
  5. #include <sys/ioctl.h>9 ?1 G/ {# {/ s7 _) O* e* b) w: h
  6. #include <stdio.h>
    2 o3 B+ R9 O! P/ C
  7. #include <string.h>
    ; M& T( |- r. m
  8. $ f  |! v% S. K4 R- ?) ]3 s
  9. typedef struct {
    ( Q# h3 P  A. E' t( _
  10.         unsigned int        e2prom_cmd_sub_addr;' b6 _; Q  l0 d  B) f# ^, a! A( U' i
  11.         unsigned int        sub_addr_count;; {5 l/ i* b0 U) f) E, n
  12.         unsigned char*        e2prom_cmd_data;
    . \7 ^) I0 K, B/ h* I! i
  13.         unsigned int        data_count;
    ; {( t5 p2 T" y$ @- A* T- o( Z+ C* Q
  14. } e2prom_s_cmd;
    ; ^6 y! S2 s! L$ {+ J! A0 y

  15. ; e2 w- s7 w" L
  16. #define E2PROM_CMD_READ 1+ |  X4 x' ~& f6 P
  17. #define E2PROM_CMD_WRITE 2
    5 d( v2 q& ]- J1 y: T+ I$ w# v
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* c  ?1 [) ?: {0 ^* }$ y, j
  19. 2 Z. `. e+ W& C. c- n1 w4 w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 R! Q& ?7 b3 l0 t, P! V
  21. {. @0 [0 U- u9 Y5 V
  22.         int fd, ret;2 D7 L+ D( s* m* w  Y# \
  23.         e2prom_s_cmd arg;5 P2 m+ A' g- _3 ^0 X7 w8 ]
  24.         unsigned char buf[0x18];5 S' \- T/ I( _9 K
  25. ' S; C1 h, M# Z. W; q/ B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 }/ C. d. u/ ]0 n" B, \9 c& M
  27.         if (fd  < 0) {
    0 r4 B5 C! D( `2 D+ U( ?# c8 s6 ?9 @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 \, }. V1 @' q! ]/ ~
  29.                 return -1;
    2 S& c9 L% k: t! i
  30.         }/ e  Q) W) w0 ?- [' P# e8 n* J/ [8 Q
  31.         arg.sub_addr_count      = 2;
    ) H  |6 Y3 O& u* D
  32.         arg.data_count          = 0x18;  P* L4 h0 P: k# l" _/ v7 i
  33.         arg.e2prom_cmd_sub_addr = 0x290;. _' I' c* M8 ]. S3 L/ R9 z  }- ?
  34.         arg.e2prom_cmd_data     = buf;% M/ G, \# F$ A' A& ?& g/ c3 n- @
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);5 L) _, G% z  b( }, j
  36.         if (ret != 0) {
    8 [9 {8 Q% e) L- n( R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) j. j4 Q8 c! f! D
  38.                 return -1;. K7 W/ k/ l% p* x+ m  p
  39.         }
    " X6 A6 U# g* A: x
  40.         memcpy(mac, buf, 6);
    , r+ p8 @/ B! \* d9 X8 S) g# w
  41.         memcpy(stbid, &buf[6], 18);
    1 Y* q# {6 T9 E; W* e% O
  42.         stbid[18] = '\0';; R: Q# v# v$ N9 O9 H  `- b

  43. * I5 X9 x! e3 u$ T9 y: A
  44.         return 0;, n0 a9 r! d: V9 d" C% E7 l( b+ n
  45. }4 a2 }7 \0 i" v; G, \
  46. 8 f, a7 Q+ Q; h) @& W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" f  x6 p) |5 G4 l
  48. {; u; v* ]. O6 Q8 Z
  49.         int fd, ret;2 Z2 l4 S& \! z; x, j& J! r, f
  50.         e2prom_s_cmd arg;
    2 {$ [* l8 @, @2 R7 u& E8 m9 T, {) p6 J
  51.         unsigned char buf[0x18];7 e; u2 B) b. X. K, H

  52. # n2 \$ M/ S  }0 N) W  N9 d& [
  53.         memcpy(buf, mac, 6);
    2 D8 y; h' ^1 i; m
  54.         memcpy(&buf[6], stbid, 18);
    * p/ V' g0 `% v( Y( T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 |# X- x8 V4 T6 `
  56.         if (fd  < 0) {: w( A% h5 N; t0 K. \% b0 ~. {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) r& `- b5 K5 ~, m. r
  58.                 return -1;- ~) t; S1 r  P
  59.         }  z9 K  c0 j; o1 B/ @4 j
  60.         arg.sub_addr_count      = 2;2 J3 g- _- K8 A  `
  61.         arg.data_count          = 0x18;
    3 \8 Z. i0 j7 V1 M
  62.         arg.e2prom_cmd_sub_addr = 0x290;& e% R0 P) r6 B# d8 E3 R3 e
  63.         arg.e2prom_cmd_data     = buf;) T! e! R6 `+ u: l/ J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  c7 Q. |  K# _7 ]  j% r
  65.         if (ret != 0) {# w0 x  s% X/ U- S9 ~; X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * ]" q1 N: C  ^) \3 Y2 x- |
  67.                 return -1;
    5 b# t+ }0 U  X: H& h9 C
  68.         }1 x6 P7 Z# U& U- {
  69. # N+ o! J. e' H3 p3 T  K+ N
  70.         return 0;3 ]* p' m8 }$ u0 {
  71. }
    ; H0 \  h: M2 t0 @

  72. 3 W; S; ]$ O8 u: _
  73. int main()
    ) B4 f  D! m- _7 h8 h4 W" Q# h: j' u
  74. {0 j9 c0 U* A3 n% t
  75.         char c;
    , ^/ W0 p- h" }; h- G4 O8 @( k& S
  76.         int i, macs[6];* W2 j  ~' L$ F+ m( t: Y
  77.         unsigned char mac[6];/ Z4 E- C  ^( U; ]; U+ S2 y
  78.         unsigned char stbid[256];. X8 Q9 `. E# I2 d! X
  79. . {% N' I. B, E& n" I, s3 |
  80.         if (readparam(mac, stbid) < 0)
    1 S1 x6 y/ X* n
  81.                 return 1;
    8 n; X, t' {: M# K
  82. ' ]. U2 d9 |" h/ ?
  83.         printf("Current parameters: \n");' y" l, \7 e" P9 ~) n% R0 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 [. A$ n+ q8 H. `  s1 q& X& W
  85.         printf("  STBID: %s\n", stbid);
    / s. p; z% g+ x
  86.        
    1 u- Q) Z% n- S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ ~. X3 j# F! E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + l0 s& {% B, Z6 p+ }
  89.                 printf("Input MAC error\n");
    2 t) x( {. P8 ^; i+ z. B
  90.                 return 1;9 n- ~" p% l4 T: d' g( e
  91.         }
    , ~" `+ |$ m4 r( J  Y) L" f+ w% M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - h8 q3 d. l* q' B0 x
  93.         printf("\nPlease input new STBID: ");: g3 b/ J. N4 X& n
  94.         scanf("%s", stbid);
    ) k+ [7 r$ l9 T/ G
  95.         if (strlen(stbid) != 18) {8 k& c6 b- c8 {  f  C* x- A& F0 Z
  96.                 printf("Invalid stbid\n");
    : s5 `, }& ^! F
  97.                 return 1;
    ' C: l6 p1 e; a  [5 N$ P8 L
  98.         }0 x- D+ }* g9 m3 |9 ]
  99.         printf("\nNew parameters: \n");' u% ~8 |9 f/ D  }# ~' B& q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * d: P" y7 b$ K
  101.         printf("  STBID: %s\n", stbid);+ K6 C: Y- U6 c4 \! r

  102. - O: z+ z# e, b/ r! n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    . W9 y# T, y3 s* f5 L) d; a7 Y9 q
  104.         for (;;) {
    / a0 P2 d, \" P; E1 @
  105.                 c = getchar();. O: ]8 D; d$ J$ W6 ]5 W3 l' V% O
  106.                 if (c == 'y' || c == 'Y'), A$ d; G8 P% O8 X3 _% d
  107.                         break;
    & g7 b% `8 ]3 n# j3 K% z
  108.                 if (c == 'n' || c == 'N') {! }1 ]1 k6 y: C( M/ k
  109.                         printf("\nAborted.\n");
    9 ^3 q; w! z: {2 M8 e/ ?
  110.                         return 1;5 i; ?- C. V8 x: x
  111.                 }
    + B. U' s: S0 X  s% G, I
  112.         }
    % @2 y& A5 r+ v2 H% g
  113.         if (writeparam(mac, stbid) == 0)   E- _7 G5 H' n* o# B' Z
  114.                 printf("Parameters changed.\n");
    ! }4 V' b! M8 Z. H; M. E0 n$ ^

  115. & N% @, y) ]9 [: S9 T& N* P# ]
  116.         return 0;
    ( {! |- H, P- |4 k) y
  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
- u, j. g5 g% G* _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- Q- K: H: @* R
你用的编译命令行格式是什么?
- a% g# o$ i+ p" K0 S
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-7 22:00 , Processed in 0.042904 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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