查看: 16678|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( F, o+ w$ u- e/ m3 d! m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , p! @5 v1 N" i5 o* T. A. w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
3 A% W9 S' n( [& P- r: A& P; Ousage: himr <address> <value>. sample: himr 0x80040000 0x0
  ?. I/ @# K8 W! E2 F* r7 p5 T. `. F6 s9 d3 p3 {
( {1 U- h, i: e; X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 I$ L$ w  M  y; {6 A

3 v* c8 b. X# b" M% Z: F$ M补充内容 (2012-3-8 09:42):0 A3 ^- C# ?( b6 T" O7 u6 A* w) n
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 c# |( S- M. y! [" ?9 w
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
% S1 P4 ^$ ~) n9 Q% k  A! [) j
himr <address> <value>. sample: himr 0x80040000 0x0
) o$ E" K7 l/ i  Q4 }$ B5 |% ]  O1 f, {/ u( C; L
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) C" m# a" G# t5 ^! b
himr 0x80040000 0x003 A7 O$ u# ]; |; @% B8 I
himr 0x80040001 0x11( m9 @( L. Q; r
himr 0x80040002 0x22
; z  X2 q) N/ T1 t/ G- N" r- _% k+ zhimr 0x80040003 0x33$ ?8 s4 m9 i' \5 _
himr 0x80040004 0x44( ?6 g' P+ o; r  r# ~. s
himr 0x80040005 0x55) D! O: u$ j, f& Y
+ `- t& |, g5 s& A; r& _, y+ ~
SN也是类似。
1 ?* k; j4 `& ^  H# p& R8 n( m: p+ G
4 a+ c  H( U* `/ b现在主要是,谁告诉我们MAC和SN的地址?! E+ ?0 Z3 T' O7 F! ?- l9 ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! _" m/ I9 l- D7 f一直想找到运程修改MAC和SN的办法,苦于无解啊

+ T. ?, }, R; g/ c) p源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   _4 T2 g" |& X8 m3 }8 w
& e& P: G9 v- N( j( n! R
修改的代码早有了。到今天不会编译。
; b' m# E& F4 B- a. ~需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( }* V* i4 G1 ^
  2. #include <malloc.h>
    2 J" T% [/ l% r+ P' g0 ]
  3. #include <sys/types.h>% D- g% B; h$ X5 F: b' y! j
  4. #include <sys/stat.h>
    $ [, \8 s: O# `& f3 |: v
  5. #include <sys/ioctl.h>
    9 Y, c3 ?! N$ I) p* \2 p
  6. #include <stdio.h>0 a. I5 U1 d- r4 W
  7. #include <string.h>; D9 w& A7 u2 a2 ~& z( w

  8. * _2 b  ^2 `  P+ b0 m2 F5 i
  9. typedef struct {' Z2 p" W+ l( ~4 g" m5 I
  10.         unsigned int        e2prom_cmd_sub_addr;
    * t. L2 @' `# k1 y6 ~
  11.         unsigned int        sub_addr_count;4 E9 r' _$ s9 S. n" h
  12.         unsigned char*        e2prom_cmd_data;" b( K& D7 T* [/ J  _! E6 U
  13.         unsigned int        data_count;; S- x6 d1 }" D4 b) e$ {
  14. } e2prom_s_cmd;. S0 w% j& F$ x0 h
  15. " k9 i0 C7 O% `" u
  16. #define E2PROM_CMD_READ 1
    7 f0 w! B9 ]! I# `5 @2 v; I
  17. #define E2PROM_CMD_WRITE 25 l3 I0 A, M, N% U% H6 e8 ]/ ~  i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"" l0 Z/ a: D( g' E( e
  19. 1 J4 E  \( C9 n4 U6 ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# F( E" x' i7 _. }
  21. {
    ' [5 |2 F! e' ?# m. i+ Z1 M1 M
  22.         int fd, ret;; ]) G4 E, y$ s4 t6 Z4 ^
  23.         e2prom_s_cmd arg;
    , k# V8 A2 f* S: f8 s
  24.         unsigned char buf[0x18];/ m; Z4 s1 r  y3 n/ w' G

  25.   |! p7 g! L  s1 u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 \9 `% m8 K6 u
  27.         if (fd  < 0) {& f- z. {; k. W% H/ b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + D0 H# R6 ?! s; D0 S( r3 Z
  29.                 return -1;! K' U0 T1 S8 |- ?; m
  30.         }0 [( [9 L& L- A0 B
  31.         arg.sub_addr_count      = 2;
    - u0 g! W7 I1 {; m
  32.         arg.data_count          = 0x18;
    ' p' S% Y/ T! x. Q* S2 b# a$ R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( k; ^: W7 [+ J/ v* L
  34.         arg.e2prom_cmd_data     = buf;- a8 ~1 X2 F+ {6 I4 T8 S- A) J0 ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 @" H  @/ Z" @5 W3 e) R: T
  36.         if (ret != 0) {  o/ n' u* I. |! A  P! j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      c/ ]- J1 _) z" s- a; n
  38.                 return -1;
    : E. t; [8 f. ]4 B1 `( I& B
  39.         }
    ) x" I& h8 N5 X  I6 c* w4 j
  40.         memcpy(mac, buf, 6);* F1 L& ^6 e* T0 \
  41.         memcpy(stbid, &buf[6], 18);  \  b- ]0 e* J2 W& U* F8 K
  42.         stbid[18] = '\0';
      m6 }& n! _6 `  `* G- ^
  43. 8 M: G) y- z# }, Q4 J/ M2 n* G2 _
  44.         return 0;
    ' x4 B: H9 p% d& V' ]$ Z( N
  45. }
    . x0 i8 W1 |2 V% r! ~* s# x
  46. + q: z7 r- ]( N$ t6 V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' C" i" Q& q1 Q/ @4 h. K+ L# D
  48. {" h$ B% s0 v+ O, X3 x: n5 k
  49.         int fd, ret;
    9 a/ N1 A5 b$ T$ Q& b$ Y+ v8 g
  50.         e2prom_s_cmd arg;
    " N. C1 p7 [1 a; P7 `4 p& N
  51.         unsigned char buf[0x18];: {2 N! O: a& \6 I+ |

  52. ' g# K) t1 q" y1 A1 z. c- L  v
  53.         memcpy(buf, mac, 6);
    3 P1 ]: T4 M( E& e
  54.         memcpy(&buf[6], stbid, 18);& m# ^, h, Y5 V6 q- {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 Q/ h- f. |9 F
  56.         if (fd  < 0) {" `: I4 u- `  d6 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! M  V& f  w! i
  58.                 return -1;+ D; x5 K' y$ Y9 f
  59.         }
    0 z* r. t* z& W& H( [$ {# }0 k1 n
  60.         arg.sub_addr_count      = 2;
      q  \. z  U8 P6 J* G
  61.         arg.data_count          = 0x18;
    - r; r! [( j( [. J( H( x" A! I6 d6 _
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ R' s. ^' m5 N' E/ `
  63.         arg.e2prom_cmd_data     = buf;4 {5 o6 e* f- L6 y5 m, Y, B! w% |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 o' A; _) R  M, G" J
  65.         if (ret != 0) {& r! t9 [; c# }2 W# P' [( O5 f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( h6 \+ a2 M2 T1 L/ {9 v" ?
  67.                 return -1;; A5 \, m9 H2 Z9 l  X0 p0 j, h  }+ w
  68.         }
    $ j# `- P) O  o

  69. 7 W6 G; O/ |4 r, o4 a2 B7 W
  70.         return 0;+ i# T5 S1 {  }7 H9 L4 o5 j
  71. }
    . m! b& o# V  ?$ ~: Z9 l) f
  72. ! s/ F8 |) ?$ R% s" y, K  s
  73. int main()
    3 ]6 f, ~+ e& G! l8 s3 d* F
  74. {: ]7 P1 L5 L- q8 b. k% d
  75.         char c;
      Q9 v' g+ W7 l* m' B8 J+ d3 z1 E
  76.         int i, macs[6];
    ( C2 r+ V* d' G7 i7 K! G
  77.         unsigned char mac[6];8 E$ ~% Z! r' d$ i$ g1 M
  78.         unsigned char stbid[256];# j' u. M& L) q; U6 E( j/ p6 r7 T
  79. # K7 z7 B2 S6 q' q9 B
  80.         if (readparam(mac, stbid) < 0)/ L$ f4 t6 I6 |; }! }
  81.                 return 1;
    & K- B' F8 g, U: P
  82. - G% k3 O0 N7 @& t
  83.         printf("Current parameters: \n");" Q8 j+ _6 i0 [& \) w9 `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( n: o/ |0 r9 E. v( F6 L; f4 C
  85.         printf("  STBID: %s\n", stbid);
    6 i$ O3 S) t5 j4 K
  86.         2 q; K4 ]( E; E: [3 `# G& b
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  r, k6 |# M0 s8 M( s* c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 R; z+ @( r% h; h* f$ B! g
  89.                 printf("Input MAC error\n");6 f. p8 m3 s6 E* i4 d
  90.                 return 1;  y9 I+ v" y, ]
  91.         }
    & x5 \: k- Y# ^9 F9 ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- [  \6 H. d, c# b( m
  93.         printf("\nPlease input new STBID: ");* [( \4 `0 s. K' H% g, K
  94.         scanf("%s", stbid);* k6 }2 T$ v! C$ o3 d. _
  95.         if (strlen(stbid) != 18) {
    * V" z, i5 M: m& X$ W6 ^  ?4 Z
  96.                 printf("Invalid stbid\n");8 _2 y- U) |1 c* j( W. o4 B- X; Y
  97.                 return 1;
    8 O4 r# i) V  _1 ~' n. g& N
  98.         }
    ' K% @( d1 ]9 r4 r2 p  i# Y- D
  99.         printf("\nNew parameters: \n");
    1 C5 U: w  l- S2 w2 N1 {- F3 _
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 |1 s. h: k2 B& @
  101.         printf("  STBID: %s\n", stbid);
    " Q) K6 G7 T& H( _$ R. n3 t, @% j
  102. / j1 _' t# e# f0 j7 I! x
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      X2 ^. c* n" N4 E
  104.         for (;;) {
    6 Y: A7 z" G' S# m- n
  105.                 c = getchar();) W6 K6 d2 L% ]! ~! u9 O% \* R
  106.                 if (c == 'y' || c == 'Y')
    8 Z! |9 m# b: z+ r
  107.                         break;
    * u+ Z) ~: I4 L
  108.                 if (c == 'n' || c == 'N') {
    + D! [% Q* b! Q- Y& d1 r. d2 j
  109.                         printf("\nAborted.\n");
    , b5 S* m# a- [' V# ^9 T7 d
  110.                         return 1;
    ! e0 k- h/ a$ H
  111.                 }) b+ Y) p" e/ G; B! w; n1 T, Y& ?
  112.         }# }* z. M5 S$ ?+ q, I  X
  113.         if (writeparam(mac, stbid) == 0) . A# z+ j+ x+ t, L$ p" f
  114.                 printf("Parameters changed.\n");3 }( k. R7 q" w6 g; X$ N

  115. 9 K" E% E7 V/ }& `4 F5 t3 Y
  116.         return 0;$ H  n% W8 H6 R& k+ i# B  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
* k" k& P- d. a9 _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ Z4 ^' M) G  V. r/ }/ A" n4 p- \' t你用的编译命令行格式是什么?- v* R/ v9 u/ H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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