查看: 17923|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 G  {) R: j2 y3 E" f- Q( ~' {* C" D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ T7 ~6 j" R, T' N* n* a3 R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  L  T7 K2 ^9 Z
usage: himr <address> <value>. sample: himr 0x80040000 0x0( ^! {7 q0 w3 ^; P
* u9 U# u7 I! A

; j1 D; Y& t4 C& n5 }( A# ?不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?  R5 t  j4 ?' D$ [
$ E5 w* I1 w% @% K/ q9 j
补充内容 (2012-3-8 09:42):
) y' d& N9 t3 ?: G: bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" }- f/ V4 N, c这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' E3 s7 S: _9 k* N5 I( g0 X
! h- L. t: |! |+ @8 v/ `6 h5 |
himr <address> <value>. sample: himr 0x80040000 0x0
* Y0 f8 T6 L: B& o/ s- t
8 |1 f4 P7 j! R: M) b( b8 k例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& i9 _& l! v7 _! I
himr 0x80040000 0x007 m2 f/ B' b$ U- Q& r6 t
himr 0x80040001 0x11, i/ ~9 M5 ~) o' I* z, S; I2 g0 z
himr 0x80040002 0x228 y; h0 u, w6 j- c4 {# Q
himr 0x80040003 0x33
9 Y$ z: y/ R) Ihimr 0x80040004 0x44; w& m" E. ^- ^- b. Q3 N
himr 0x80040005 0x55
, U3 I8 E' k* L9 U5 f0 g( W& I& U0 [9 u
SN也是类似。
1 U& `9 K) e$ J" S  U. q3 I* t
5 v) x, k1 T/ O2 B8 F1 ^& ]' w# f现在主要是,谁告诉我们MAC和SN的地址?
9 H3 D5 ]$ P2 A2 I) q
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' }9 H1 h: E- x' F
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 {6 g0 A7 D; ?+ E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 n0 T  J' h/ c/ `9 U1 l6 e6 x( o" O. Q" D' V
修改的代码早有了。到今天不会编译。
8 a* T: T$ r9 ^4 ~4 O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 b* D2 z3 ?/ g, A4 U2 y
  2. #include <malloc.h>
    * h2 G9 p8 H* t- y% K& c3 Z- w' F
  3. #include <sys/types.h>
    " e9 X# J  b2 m! E" {0 l
  4. #include <sys/stat.h>
    9 t$ _4 `# [4 Z3 ^% Q' q
  5. #include <sys/ioctl.h># Z5 B3 `5 r! R" N& X; J
  6. #include <stdio.h>& ?3 D0 L, F9 T
  7. #include <string.h>$ b3 T: s5 }0 [6 w/ A) g+ ?4 f/ q

  8. 3 I, O9 `0 w8 x* c8 r
  9. typedef struct {" Z8 X3 r2 [; Z5 i" `0 f' H5 U
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 m2 ~. r& \4 e; z$ @  s
  11.         unsigned int        sub_addr_count;& M- O2 x+ o( [! X0 c2 F) a! H2 {
  12.         unsigned char*        e2prom_cmd_data;
    9 V% \- ^. a8 B) I9 W5 t
  13.         unsigned int        data_count;! P+ s) N) R- E
  14. } e2prom_s_cmd;
    4 l- M8 y/ P8 J, _8 r% N5 {

  15. ) z" T; C2 }; b& s: \1 Z$ i
  16. #define E2PROM_CMD_READ 1: u" e  @2 J) J8 w% I+ Q/ _) [& ~" |
  17. #define E2PROM_CMD_WRITE 2# O9 P* r, t6 u7 E  V* ]1 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( q6 O' }/ K( F" x( H  t" a

  19. ) F6 _9 P8 ~) n5 G
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 w. L$ P8 c* t' I! G
  21. {
    - C) v& ~: W, K0 N( l$ \8 Y- I
  22.         int fd, ret;( S! [1 E* a/ }) V4 x
  23.         e2prom_s_cmd arg;. u, d7 d' l6 S/ w$ ?+ f2 H7 W
  24.         unsigned char buf[0x18];5 E7 R2 W8 Y3 ^* m) k. S
  25. ; x/ B7 O8 k4 D' M! I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 e, i, }2 L* N0 f/ ~' H: g$ L
  27.         if (fd  < 0) {, j4 h+ s( k8 t. Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # M7 O! z: S5 E. E6 O& V  ~
  29.                 return -1;6 G8 x% U. h: K# e; h
  30.         }
    / ^- r' o; ^. W% k8 W' B1 j
  31.         arg.sub_addr_count      = 2;+ D9 g& e* s% x2 A% Y, g
  32.         arg.data_count          = 0x18;
    5 Z3 o. p3 `, _/ Z8 V) ?( j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - K9 e5 C$ D! F2 `3 [* w/ W
  34.         arg.e2prom_cmd_data     = buf;9 O, o. L0 `8 G! G  I* h  }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / x1 `, f7 e& ?
  36.         if (ret != 0) {3 r. @+ U! r# ?+ ?! A# c2 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 u" p) C, e. i5 e$ R
  38.                 return -1;2 x& b" f! K+ ]% h- E# G! G
  39.         }2 z7 m) u9 b% S# p* X  E( y) X. t
  40.         memcpy(mac, buf, 6);3 |( w& z; a/ ~/ I$ n4 s* e
  41.         memcpy(stbid, &buf[6], 18);8 C/ u( v3 l; N' q8 k
  42.         stbid[18] = '\0';
    , [. E" s! ]6 A+ \, @/ Z5 _! H
  43.   W9 F* P: k9 a, Q  W$ J2 p9 M
  44.         return 0;3 i, Z' t$ K; S1 }/ B' q9 B
  45. }: a  q# ^6 s- b7 z
  46. ; U  B  a4 }1 L1 ^' i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" E$ M1 f/ g5 M5 }8 h( q4 a& \6 G, L
  48. {8 P8 x. E6 C5 ~
  49.         int fd, ret;
    # P& U$ }* a. J7 D2 ]. R. n
  50.         e2prom_s_cmd arg;1 t( W1 F& l+ Q, E- e! _* k; r6 O
  51.         unsigned char buf[0x18];
    & U! r4 u: T6 k" [: ?) M% j
  52. 8 S. c  V" j* u. }0 K# ?9 a
  53.         memcpy(buf, mac, 6);
    7 b* S6 X! C  N1 g# E: x
  54.         memcpy(&buf[6], stbid, 18);/ X0 H+ @3 J: _3 }7 \! F* Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# N- |' O8 X9 c
  56.         if (fd  < 0) {$ q9 i  Q* ]1 g. ]! [
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) P4 P9 A) |* U, o6 A9 y& l; N+ c
  58.                 return -1;
    2 ]& E0 K! ~  ?' `6 k, I( k) P9 l
  59.         }+ ~. _; n) E: _% {2 k* Y% y/ I
  60.         arg.sub_addr_count      = 2;
    " b/ g/ e( q, W% P
  61.         arg.data_count          = 0x18;
    0 E* H* ^+ i. H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 Z3 H, c" \9 G1 y2 R- z
  63.         arg.e2prom_cmd_data     = buf;
    . Q7 K: r. ]  S0 W1 ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) U# c5 Y. t* M5 }  i/ a, L2 j
  65.         if (ret != 0) {1 H* f) w) x/ Z) d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 k2 ^2 ?4 K/ ?1 z* p: \
  67.                 return -1;4 p4 L# m  i! i+ E- b8 r
  68.         }7 k7 j+ \; W2 R( G2 Y/ I

  69. * i3 q4 \) I% ?' V6 g4 ^5 Y
  70.         return 0;
    6 P8 [; p" R, Y; |' D/ m
  71. }
    1 x; k( A/ I: E  |8 Q

  72. - i& L8 r1 C9 j/ z3 P/ h
  73. int main()
    ' ^. w6 h) w: s' o6 @5 j
  74. {6 R# M/ Y6 e: [$ n' M# h8 c# E* t
  75.         char c;
      q' {. {! O! z
  76.         int i, macs[6];1 p2 m: ]7 g5 u! Z1 ]
  77.         unsigned char mac[6];$ M* w. f5 v1 |) l
  78.         unsigned char stbid[256];  i; {$ \- Y" v2 R  \
  79. 9 I2 n. j( r+ w- L7 i$ Y
  80.         if (readparam(mac, stbid) < 0)
    " |5 x* X0 a% R  m2 o7 I
  81.                 return 1;
    6 u4 k- p3 E( f9 y! j% K" K: y

  82. 2 B$ U4 ~! |' x3 K2 J. N
  83.         printf("Current parameters: \n");
    3 W2 w5 k5 i! m: h- h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 O3 Y# O; b( I
  85.         printf("  STBID: %s\n", stbid);5 k$ |; O& c6 M% N
  86.         - m. x: B% k0 k% k8 y* j
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& ^/ s, r+ Y9 X3 s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! f% c( T: h6 G) p8 v1 t
  89.                 printf("Input MAC error\n");
    ' I; _1 H, H- Z
  90.                 return 1;
    ! {& C5 u/ F& [, [0 W
  91.         }
    1 p! ]6 Z4 b# d# C3 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * V% m( s! {, d) a* e
  93.         printf("\nPlease input new STBID: ");  ?  [  ~  d: |/ t( r" B! {, [0 r5 j
  94.         scanf("%s", stbid);
    , c3 t  \2 c9 E; h) d6 g3 c
  95.         if (strlen(stbid) != 18) {
    2 k% Z7 |; ^* j8 R1 Y
  96.                 printf("Invalid stbid\n");& t7 x9 B1 Z0 t. Q4 ]8 _$ T
  97.                 return 1;, A# C& g' X, u& V' o/ z
  98.         }
    ; Q, v. v: N: m" C- r8 O( b1 d+ X  E
  99.         printf("\nNew parameters: \n");" s8 l" T- |5 y  u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 ?  b. H, s( k& h+ `) a0 F/ h) x
  101.         printf("  STBID: %s\n", stbid);* V8 F" Z) z# a  x! D
  102. / n1 x: H; [! A; S! D+ d
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( ]* C5 g  A! B( o  h( `8 P) N
  104.         for (;;) {9 r, S/ s  k: D1 O, }" q( g# c
  105.                 c = getchar();
    # c. I2 L! t5 P/ o  p- `) u  \
  106.                 if (c == 'y' || c == 'Y')
    ; H( ], d- A; m8 D6 h0 D$ ^
  107.                         break;& z' `5 P* w& W6 Q: y( O# J2 r
  108.                 if (c == 'n' || c == 'N') {: s- T6 g# [; E* `7 m
  109.                         printf("\nAborted.\n");: O1 p; w0 S5 Z3 Z& C
  110.                         return 1;
    ( r8 R( q: M' d/ Z1 w
  111.                 }
    6 R( }( X: L3 T1 J. S5 }6 c
  112.         }& m0 l; c' Z, p; h
  113.         if (writeparam(mac, stbid) == 0) ! @3 H3 ~1 r0 f/ y- k9 M
  114.                 printf("Parameters changed.\n");6 B/ _: `5 V+ Q9 j4 t& c) r- J* X" z$ `9 d
  115. 7 p. Y# Z: Z+ k& V7 [, Q
  116.         return 0;/ K9 f" L3 B+ e) }) T
  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 1 G" R& q  r  I- E" D9 s& f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# Z  Y$ X3 R) V. z5 Q
你用的编译命令行格式是什么?
; K* ]6 e" ?8 q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部