查看: 16443|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 Z5 l# P# X5 M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / K$ a5 D' i8 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 b7 q2 i+ X# c5 n. I& l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. i$ k8 k  [' Z; N' W0 a$ j
% L: w5 C" l: ?4 E' Z
' e0 {' k3 z& s# C0 o* o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" Z0 R8 i3 d3 W/ P& U+ P( _9 B

1 d+ _: k, I3 y6 C补充内容 (2012-3-8 09:42):
/ ^5 J' k; U9 C# O0 l. thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数: N; i3 C( U4 U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' d, R1 Q) v. o2 q
& G' o( b  t+ [# `5 G: v7 Z
himr <address> <value>. sample: himr 0x80040000 0x07 m  J! u8 n0 x5 X* L/ {5 ~
7 o% R  V7 W# i7 b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- f  C6 ~7 F  _' E( T
himr 0x80040000 0x00
, h* ~, y1 ]0 L& N' Ihimr 0x80040001 0x11$ P- `5 X2 \  J7 `
himr 0x80040002 0x22$ |3 k- k3 s$ Y; `
himr 0x80040003 0x33
! N$ g: R. q' Q" D" `himr 0x80040004 0x44
8 {- z, D3 p! |& P! m) Yhimr 0x80040005 0x55
; Z; X3 z! Y& L9 R, a7 s8 n" y1 `! _4 K/ j( }
SN也是类似。
0 |* I  a; u& ^. j6 c& t; ], C( T
- b7 s+ ]# T0 Q& J4 p现在主要是,谁告诉我们MAC和SN的地址?5 l: d- V+ {) M2 m- e" h
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 J) M: A6 \2 J一直想找到运程修改MAC和SN的办法,苦于无解啊

( r  R+ u& J9 i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : u! F4 d, p. ~5 e

. z- B1 D3 k! i- t4 c& f修改的代码早有了。到今天不会编译。- l2 m! R  z$ `0 C, E3 [
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : m, ]: Y" T$ _8 |* S
  2. #include <malloc.h>
    7 T' ^' b0 ], s$ v( w: @% j
  3. #include <sys/types.h>, A: e/ x) Q0 v' j4 f
  4. #include <sys/stat.h>
    ; U& \5 M- ^6 c+ L5 b  l2 R4 I
  5. #include <sys/ioctl.h>
    ( a2 d: Z; I* c' P& @: |' ?* m
  6. #include <stdio.h>
    0 S2 p/ P  i/ L" c$ S
  7. #include <string.h>
    5 D2 I3 a) K, `/ c, i6 {  g

  8. + V7 Y; _! e  s* t+ y  j$ V
  9. typedef struct {
    / v; Z0 u& V& v5 z6 [
  10.         unsigned int        e2prom_cmd_sub_addr;
    + }% Q# h  P5 {
  11.         unsigned int        sub_addr_count;
    9 ~7 Y0 U8 F! ?" N5 G0 ~
  12.         unsigned char*        e2prom_cmd_data;* \( U" K5 E( G% I
  13.         unsigned int        data_count;$ M9 T9 G  X- T5 ^8 `2 N* H
  14. } e2prom_s_cmd;7 n; ?/ s$ P5 `7 X* P5 t  @: X0 t9 J

  15. + O# g7 I+ Q9 h0 n1 _
  16. #define E2PROM_CMD_READ 1
    1 a+ f' s9 }4 g$ R% W- _" o
  17. #define E2PROM_CMD_WRITE 29 u% \' c2 I0 c+ {4 X) n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% ?3 K6 p4 _: Q/ v0 C9 k- o

  19. ( G1 ]7 V6 z) P2 O5 Y# |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 F/ C! C8 Y8 d% x  k
  21. {9 F6 r) ^3 N* l, b/ c- i
  22.         int fd, ret;( ?  U/ e* M; s9 s2 ~
  23.         e2prom_s_cmd arg;
    $ x2 O4 Y* F1 {; j- B9 c
  24.         unsigned char buf[0x18];& G! B) `1 Z' p* e3 @, A8 K

  25. 6 d7 D* F+ v) e  f" M: }. i# K9 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ j  G( q5 Q  T" C
  27.         if (fd  < 0) {
    , B5 s) D" Z% {3 }) [, x6 j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' \1 |3 E3 K1 m/ r1 K: W
  29.                 return -1;$ ]: J. X3 v3 Y, b0 P4 r2 f
  30.         }
    , l  Z/ H( b& z) ?$ a% S: g# I5 `3 A
  31.         arg.sub_addr_count      = 2;8 b$ `! B0 v9 S6 ~$ ^: n( ^
  32.         arg.data_count          = 0x18;$ P+ {( \% V  ^" E7 J3 H0 f4 l
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 R7 V  l4 A4 W  k$ e; w
  34.         arg.e2prom_cmd_data     = buf;
      g1 H( G, p4 L, }: R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % ?# j# u& Y& d6 y
  36.         if (ret != 0) {7 R) g7 U2 D2 X- w1 j. l
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 R! W5 U. w& r: T5 ~/ w1 Y0 t6 q
  38.                 return -1;; p8 |7 ?8 G" @, M1 q1 `
  39.         }* w* h  y& C8 y' Q9 f) ?
  40.         memcpy(mac, buf, 6);
    . L! H1 k4 p! y; C$ M1 Z
  41.         memcpy(stbid, &buf[6], 18);; ^* O6 {! W, }4 W/ V8 A# h* c
  42.         stbid[18] = '\0';
    8 E/ I* l  z! d% ]8 u) n0 ^; W4 y5 N

  43. / @" P" }  b+ z3 U+ A+ v; w9 U: @
  44.         return 0;4 p. U$ i. e% a& M
  45. }
    " X4 f" N2 z7 e7 ?+ I
  46. , r8 J' j1 [5 N. S! m) r4 R' \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / {: l1 n6 {" \, U# N" ~
  48. {' z+ Q( e  O0 b: ~3 b8 k" P
  49.         int fd, ret;
    8 c- C+ H2 O6 P1 e! [3 [3 u
  50.         e2prom_s_cmd arg;
    1 d, M& i, u7 e+ b
  51.         unsigned char buf[0x18];
    2 G5 }+ @" [* O, U* s

  52. & ~' \/ d4 g. r- l) {
  53.         memcpy(buf, mac, 6);
    : B* n; c5 F# @+ D1 u
  54.         memcpy(&buf[6], stbid, 18);6 |3 p2 N, d3 y: \6 u+ q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) b: Y* a6 R; E% G' b  t" C
  56.         if (fd  < 0) {
      h8 E  v! \0 _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 v) O$ j0 C- Z( \9 w
  58.                 return -1;7 i  E$ g5 g0 m# ]/ Y/ h
  59.         }
    ) O2 ^9 Z6 ]+ V' @/ l
  60.         arg.sub_addr_count      = 2;" o! v" C0 ~# S" l) F
  61.         arg.data_count          = 0x18;3 f+ O  `3 T  ~: F
  62.         arg.e2prom_cmd_sub_addr = 0x290;$ ]. i; T, a5 R' [, z
  63.         arg.e2prom_cmd_data     = buf;
    4 i$ @+ {9 R1 K, j, J! `
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# ^) V7 _: I2 v; C8 w4 Y# f
  65.         if (ret != 0) {' ?# `9 ^" H& A: p+ C# h$ C$ R
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 C' q6 A0 O$ w
  67.                 return -1;
    & k! `6 P, F# U4 c5 |
  68.         }/ T+ b' M% Z1 I- e3 n) S& l
  69. 2 l5 I0 [) ?% D
  70.         return 0;3 e3 j' B7 F& h; q+ R% g
  71. }
    , x" b) \% c) s9 \9 J& y: q

  72. ; y7 V1 Q; G+ x3 b: l+ Q+ A
  73. int main()
    ) J, O7 {3 ]! n  p& ?& o( i6 ~. Q1 e/ B
  74. {, H: u1 h4 C# `- i8 D2 T
  75.         char c;
    7 P5 E! E8 q' j4 f( l% g
  76.         int i, macs[6];' L4 h; q* ?7 w: t' r/ V
  77.         unsigned char mac[6];
    " S# \+ s; c& m- w2 _( P2 a( o
  78.         unsigned char stbid[256];
    7 e. U& U9 z9 D6 ^- w
  79. 8 s2 |! D5 U: i
  80.         if (readparam(mac, stbid) < 0)
    ; A/ K6 ?" x4 C/ W) y
  81.                 return 1;
    : O1 F4 C' @; c4 V
  82. 8 L! Y, q( U$ J  Q- e% {
  83.         printf("Current parameters: \n");4 w& ]; l+ ~. t  e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # W  V1 t! d* N" j5 w
  85.         printf("  STBID: %s\n", stbid);/ E. l" I& p: g" Y& Q! u7 X8 `
  86.         ) N) }2 g7 C. S' A" \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * M/ F% F* F& u* j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 @7 I$ P8 r6 l# I# l) R* B
  89.                 printf("Input MAC error\n");
    ; u. \* P) E6 ?( m2 ^  U
  90.                 return 1;
    + X3 o2 J5 H, q5 V
  91.         }
    0 \( G7 ]4 v! `! ^9 u
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; M0 x/ _$ Z/ ]- r( ~! ^$ G
  93.         printf("\nPlease input new STBID: ");* a- I+ n$ p7 E# ?; M* D! j
  94.         scanf("%s", stbid);* G2 l' N' \& M; f
  95.         if (strlen(stbid) != 18) {
    6 M* E9 ?; c! z: k% Y, }- x
  96.                 printf("Invalid stbid\n");% Y+ {) f3 V" N7 g0 F; I8 C
  97.                 return 1;, @3 E; K- v4 h/ W5 F/ M  j0 u
  98.         }
    5 s4 R6 d( S) S) Y6 ~, C
  99.         printf("\nNew parameters: \n");$ C- K1 e+ a5 D3 g/ f
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & N" b) x4 Z. b' b, d9 w
  101.         printf("  STBID: %s\n", stbid);
    0 \  P; l4 }/ e& V- h( p2 c
  102. ' \. g: D' I2 A: [* t/ u8 z& X3 A4 J
  103.         printf("\nDo you want to change paramemters? (y/N) ");; q, Z, A/ N% k  ^3 r& @
  104.         for (;;) {
    : {: G! q8 a- x2 B  [7 M/ W
  105.                 c = getchar();
    3 H; q" V+ Z; X0 y
  106.                 if (c == 'y' || c == 'Y'): |2 D* m) p: V) T7 x
  107.                         break;+ I( ~" \6 X5 J& C
  108.                 if (c == 'n' || c == 'N') {  d9 b) G: B, P$ Q0 Q1 }9 k
  109.                         printf("\nAborted.\n");
    6 z+ v4 H' N* z
  110.                         return 1;3 U3 s) }( ?% J0 C3 _, }$ s  |
  111.                 }
    - l. c# V& W- v" q( e5 S
  112.         }" F# k) C7 ~/ P1 ?+ N6 ~( i
  113.         if (writeparam(mac, stbid) == 0) ' O! x7 o/ ^5 E
  114.                 printf("Parameters changed.\n");
    : [  A3 v! N# G4 U9 ]
  115. / ?  E' ]0 L1 |1 U
  116.         return 0;
    8 Y7 `8 J- M! c* r
  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
( W9 V9 R4 d7 Y5 s. `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 g. G! G; C+ v; O: G. ^+ G你用的编译命令行格式是什么?. e1 _0 v# p9 A" w$ P
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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