查看: 16071|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + F, q/ ^( m1 x; n! j5 ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 ^9 i* ^& @! u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 A: z) r0 Y, Y' L8 r" Cusage: himr <address> <value>. sample: himr 0x80040000 0x0
& q0 q4 D) \4 O& a8 H
* A# I7 V* h7 q4 w4 H0 j- j# }# I, R$ l( o: v. W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 V1 g8 H8 ~1 m( c9 j# M
8 {' b) ?4 r( d5 _+ b补充内容 (2012-3-8 09:42):
' _5 R7 p: {' hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 p* U. V( `0 F# o2 L8 r3 _3 ]8 s这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。& n+ n+ w# S- [5 {- S- f, j5 T

( v9 b! J% y) {9 W* ghimr <address> <value>. sample: himr 0x80040000 0x0
) e* [  e- p; J- q: i, R8 w7 r& J; ^+ e' F
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- L9 X8 V$ ^8 L1 v2 Nhimr 0x80040000 0x00+ ^0 `: |8 w8 g7 I, G, j" \) E' `/ X
himr 0x80040001 0x11: b7 l' ^& g, a% Z6 K- t- C- Q
himr 0x80040002 0x22
3 V2 \6 p  E4 Whimr 0x80040003 0x33) `! ~9 x: {  W: z) h- I
himr 0x80040004 0x44
- }" \+ U4 u3 [& }7 N4 chimr 0x80040005 0x55  U2 P/ W- b$ p

0 b  u0 w5 W, ^4 w0 Z: ~SN也是类似。
2 Z3 H9 ]0 Z% Q% O) Z5 w0 D2 L( c0 k8 G, `. Y1 y
现在主要是,谁告诉我们MAC和SN的地址?
& @9 E, Y$ q0 q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
4 z8 X3 H6 k1 U一直想找到运程修改MAC和SN的办法,苦于无解啊

: S; f/ a1 k1 s4 R% d, O2 M源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 o0 ?$ q; J5 ~6 l( q

& u1 R' d* Q! U  r! c修改的代码早有了。到今天不会编译。+ w2 c3 d) I. K  ?
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 \2 X5 {0 m! q+ a# g+ M+ U' T* K
  2. #include <malloc.h>( \& c( h" b! S2 H/ {3 z
  3. #include <sys/types.h>
    ' j4 D( d# z# ~2 A' x' c5 [& z: D6 `( n
  4. #include <sys/stat.h>8 b: }! W3 m+ y: R- j7 \
  5. #include <sys/ioctl.h>
    , }3 b3 ~; O+ |6 a" v
  6. #include <stdio.h>, ~/ s" A8 K) r+ i/ l6 H2 j6 F) I
  7. #include <string.h>
    ; V2 I& t0 g" q7 B. I" }0 m& d, j8 x

  8. " r4 c  _1 W  J1 T4 @9 B  |8 u
  9. typedef struct {
    ! e$ d" w3 w. B- M0 @
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ }! a7 b% V% n
  11.         unsigned int        sub_addr_count;7 H: v4 O& `* }2 c+ K
  12.         unsigned char*        e2prom_cmd_data;# }# K( e% ]8 \
  13.         unsigned int        data_count;3 Q4 H0 y+ t; R7 d/ z: e# w- u
  14. } e2prom_s_cmd;8 L. \, E) s- L" K7 s% i8 _
  15. ( ?+ }! _/ O$ u9 Q8 ]6 d
  16. #define E2PROM_CMD_READ 1% x7 J5 O- I# i& I# r
  17. #define E2PROM_CMD_WRITE 2& k$ {+ I& w# {, e/ P" e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; a( j: e  n0 x0 j$ w
  19. # L! o* A& c; j5 n* F& H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 N4 V' o/ q$ k6 D
  21. {
    , L( |8 `, k! P7 j1 v3 Q
  22.         int fd, ret;
    ( h! O7 g4 i# @: M( o3 h5 E. Z
  23.         e2prom_s_cmd arg;( Y0 b5 y2 a8 T9 ?1 f, v: w
  24.         unsigned char buf[0x18];
    ; X4 g7 J+ u4 L
  25. 4 N2 e2 e4 O' t# Q! P4 ?' \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 i- N6 ]5 E. K5 ?
  27.         if (fd  < 0) {
    3 l" w; i: f6 u  T/ N9 X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      A# X. t' Z& H
  29.                 return -1;
    5 }4 B3 @+ e+ `# U; G  j
  30.         }/ |( L: z" V* _) Z+ k
  31.         arg.sub_addr_count      = 2;
      A* y6 F6 E* m+ p( E/ k# I5 {
  32.         arg.data_count          = 0x18;
    1 t: F0 t5 j8 K# m7 `9 n+ T9 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 @- a- G0 a' t9 u- L" o
  34.         arg.e2prom_cmd_data     = buf;
    ) }# @/ A; N0 `( o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ r. d7 j1 ?# l: ?1 b
  36.         if (ret != 0) {1 o, B% u5 Z, o+ T$ S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 c5 k- @% K2 m1 G5 ?
  38.                 return -1;4 J9 O9 D, N6 {) s
  39.         }
    ' ]& b1 S% f2 p0 g
  40.         memcpy(mac, buf, 6);/ K) a/ I& T, E3 m0 M/ d
  41.         memcpy(stbid, &buf[6], 18);1 I8 Y# t6 R' |
  42.         stbid[18] = '\0';7 x2 B5 Q; X* O8 w' G# J3 p' p

  43. ' C2 r0 K5 U% y' T0 x; _
  44.         return 0;
    0 b5 O0 q' E' Y# {. V# d
  45. }
    ' m( S3 x) D# @( R+ U/ t0 ]
  46. ; b# n+ w. h  {2 d, _& N( P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 Q0 v7 {2 `& \7 h; @$ F
  48. {' r' ]" j/ n2 r: U. t, P. J
  49.         int fd, ret;! e2 A  h+ |8 N; Q7 I7 X
  50.         e2prom_s_cmd arg;
    " @) R, ?% a# L+ m* L6 Y
  51.         unsigned char buf[0x18];
    : n- t* ~$ R+ C; K3 i5 z8 n! R
  52. ' U" E$ n1 [- @7 g+ w) E
  53.         memcpy(buf, mac, 6);
    ) y( a+ X. W- M( J5 Q6 x9 }0 v7 z
  54.         memcpy(&buf[6], stbid, 18);
    - {  v0 q: H& G4 d) u6 s% Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! k' W8 T+ ]# U2 Y5 o
  56.         if (fd  < 0) {; T. h8 S' _. D8 g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + |5 D: g; }( J) i
  58.                 return -1;
    % t4 Z' A) C, P; A$ x& h6 M
  59.         }
    7 f. Q4 t# L, s* ]9 E+ a
  60.         arg.sub_addr_count      = 2;" W! d4 h9 n% u4 N6 H- R' h* V5 T
  61.         arg.data_count          = 0x18;
    ! m9 v0 O+ r1 r+ q
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ ], T' ?& B+ Q, x+ |7 s
  63.         arg.e2prom_cmd_data     = buf;
    3 R. Q+ H6 S" Z( Q: b" v9 t. p, d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , F' V/ o1 H" \5 d/ h0 z: r" S- v  O
  65.         if (ret != 0) {4 v- J' x+ n( h9 I) U# w  p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 H6 ~7 x  p: N! a
  67.                 return -1;
    % ^! U- q4 M9 A! y
  68.         }$ j3 E- \9 I3 @2 h8 X' g

  69. 4 ^: A4 J; P6 ?* `) B
  70.         return 0;
    ! \( t% T) z5 u  F0 j% ]. X
  71. }, g- q9 \2 S  X7 d) Q  k
  72. 1 _+ ?! a1 j2 g$ b4 H* A/ m
  73. int main()4 U0 R9 v5 y, [
  74. {! t5 p" b' U" j9 U& x
  75.         char c;
    . n2 d$ z- Y. ]  ^8 i2 Z: G
  76.         int i, macs[6];2 G, G0 \" i; ]' D1 G
  77.         unsigned char mac[6];
    # t# O0 c! C9 K( k7 X: L/ ?
  78.         unsigned char stbid[256];& B) S- m' N$ a! j0 |

  79. % T2 e; q2 W& R  L" R0 `7 H
  80.         if (readparam(mac, stbid) < 0)8 C$ L! \& M0 P
  81.                 return 1;
    : a1 D0 r5 A3 `) F

  82. 9 c- K8 u9 Z) ^: T
  83.         printf("Current parameters: \n");  h% Q  U5 `! ^9 m1 r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 G9 I; f2 y* \
  85.         printf("  STBID: %s\n", stbid);* ]) f% h: T# ?) R) Y
  86.         ( l7 h" G( }( M8 W7 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 \0 W; _/ m; O
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) u! w  O8 \2 O  U8 Y! l
  89.                 printf("Input MAC error\n");
    . B# s# I8 x% G
  90.                 return 1;
    : x8 L- a9 H% L& r* h9 z) b. K9 ~
  91.         }
    + r7 `, g5 |4 M3 i0 l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 f4 b1 X# c: I0 E- J( j
  93.         printf("\nPlease input new STBID: ");" G7 `; [* s: ]- b8 o1 E
  94.         scanf("%s", stbid);
    , n/ b" r) ^: e" u7 [. R7 I
  95.         if (strlen(stbid) != 18) {) p% k: x8 p  z) j5 K" `" l
  96.                 printf("Invalid stbid\n");' y2 d0 J! R. ^
  97.                 return 1;: k0 o  Y5 r9 y3 Z, R6 v
  98.         }
    % g; j: m; j& M) v( v+ `
  99.         printf("\nNew parameters: \n");
    ! N  p) U+ ^9 G% q, t9 T3 t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; ]8 o7 U' w# I0 N0 u
  101.         printf("  STBID: %s\n", stbid);- b( d; M* B2 C% c. B# _" m

  102. & ^0 D0 i# j+ V  r/ V
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 V+ i; M! g0 y$ k  z0 S' o7 y; x
  104.         for (;;) {( ]6 i" u2 q  V1 E% s2 I6 L9 Q/ h
  105.                 c = getchar();
    7 t7 S# m- l) f6 }& J
  106.                 if (c == 'y' || c == 'Y')
    7 T5 P: e  r5 q( }$ w" Y
  107.                         break;7 X" }) P- T* X* A0 m% S0 v
  108.                 if (c == 'n' || c == 'N') {2 T, O. t8 g; V. N. m
  109.                         printf("\nAborted.\n");( @) H+ T0 ]- R
  110.                         return 1;' O0 G* w( E& R/ N: _7 Z. L1 P' g6 g
  111.                 }
    6 h, T! ~2 O" v( r# S8 g
  112.         }
    ( G( P9 g0 Y7 i7 ^
  113.         if (writeparam(mac, stbid) == 0) 7 R& W7 Z( b1 c* r* z, l7 P. T+ Z
  114.                 printf("Parameters changed.\n");
    " W2 J. B! R, R) D& V% A: Z$ m5 g

  115. 2 D8 b7 r7 t" ^. b6 e8 Y( ^
  116.         return 0;0 |" u, }2 S" I9 F8 C. ~" x4 V
  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 $ Q* c; g% t" n" k
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- ]6 s: d) ^; h+ ~3 f% w( A
你用的编译命令行格式是什么?
# l1 Y# j  h7 z$ k1 g' }0 B7 ^2 N
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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