查看: 17522|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 l3 r+ Y" X" X. t2 s: q/ \3 P6 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ g: z# f, Q, I) ~8 A! I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, P) J8 @. L* S) y+ @- N
usage: himr <address> <value>. sample: himr 0x80040000 0x00 l- x1 l4 n  @6 [( o" C) E+ C

& H9 Q$ u9 l# D8 y, Q: U2 w% f9 z6 y' o1 D- N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ G" L' T$ @4 ^, O: T
% n- B5 J' J: X8 i  n1 E1 V
补充内容 (2012-3-8 09:42):1 ]$ ^& C! L' M( z6 p% T) _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
; s; U+ H7 S' @2 x$ \) s& X; _: ~' ]! N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
3 U4 M! G6 |+ Z  s; s) w8 n/ Y) [  V, S2 v
himr <address> <value>. sample: himr 0x80040000 0x0
6 X) @. |# o4 D) N; a# j! u2 v; p) T' R  E+ h" f
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! p/ o& Y8 L( t" f, J3 y( ^himr 0x80040000 0x00
2 [3 V( J0 A. w: V1 N" m7 [5 ihimr 0x80040001 0x11' D: v) o, R$ K4 Q) @& ]
himr 0x80040002 0x22
+ x% s+ a9 E( g+ Hhimr 0x80040003 0x338 u& q0 v3 M; A* v$ o6 K) q. {
himr 0x80040004 0x44
8 n( M4 ?% i( d" |himr 0x80040005 0x55
0 [1 R1 m7 D/ _5 @7 u9 J5 W' f9 M% c3 a
SN也是类似。
; g4 q0 I. p& Q3 v
: U- r$ D: w  ^1 L1 P/ y现在主要是,谁告诉我们MAC和SN的地址?
3 k" @% I$ v: {
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- c! b7 q1 V" o9 U一直想找到运程修改MAC和SN的办法,苦于无解啊
1 a$ y% Q/ e# w+ f( f6 e; g6 B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . m& _8 z1 P! l5 x8 U& v
+ L  y' T2 `, H1 Y' R: X
修改的代码早有了。到今天不会编译。# k$ i! `) V3 n2 [
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>9 T# z7 a; l. E; f( x) |! `# ~7 O
  2. #include <malloc.h>
    / T  H! p0 k( E% _% K9 g* v
  3. #include <sys/types.h>( q; p  B. [8 O; ^
  4. #include <sys/stat.h>0 R& g- X5 |0 b
  5. #include <sys/ioctl.h>
    7 C/ y# \! k( g' {1 _) N6 G
  6. #include <stdio.h>% h5 K1 d6 A7 ?% ^
  7. #include <string.h>
    ; Y& j% ^+ G8 P

  8. ; m* j3 s4 D. s5 r. E8 z/ j
  9. typedef struct {% q& `5 I0 X- K
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 d  u' t3 O3 O2 R% W
  11.         unsigned int        sub_addr_count;! x: n  V% ^2 W* E; `* w3 H, j
  12.         unsigned char*        e2prom_cmd_data;
      z5 c/ F6 @$ n3 Y8 k- b( s' G; ?
  13.         unsigned int        data_count;1 A( b) I; n1 ]9 O$ M
  14. } e2prom_s_cmd;
    9 I$ z8 g  _# Z/ F3 K8 K+ I

  15. $ x+ d  _  ~) Z* z$ t
  16. #define E2PROM_CMD_READ 1
    % Y/ R( M7 g  q  h5 D6 L- _- }
  17. #define E2PROM_CMD_WRITE 27 l; M: B1 c% y  h* Y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / s6 X# v$ [% k" P

  19. * `! N. l4 ~+ J/ ~7 I) l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)4 ?/ M8 a) `* I( S- r" G; q" c
  21. {3 t- T* Q- S2 u/ e2 N) r
  22.         int fd, ret;
    7 E  n9 W+ j+ b
  23.         e2prom_s_cmd arg;
    1 D0 s. t( z; H! g% T$ R
  24.         unsigned char buf[0x18];
    - c/ U, j' u0 a; b$ C+ y

  25. 9 y$ V7 n& V9 f" c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! L# X# J( [$ ]! l& m3 R; n
  27.         if (fd  < 0) {- W1 Y4 C, }9 l: d- O' S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 P5 A4 Z7 L. U* ^# m( q- e' b
  29.                 return -1;
    ( M% o* B3 n" T3 k: [+ G8 G
  30.         }
    , V) t0 o9 V4 E9 V- Q
  31.         arg.sub_addr_count      = 2;3 @  p- c+ p# G# X
  32.         arg.data_count          = 0x18;
    - ~$ Q9 P; |; H9 n; `0 ]* S6 {3 f
  33.         arg.e2prom_cmd_sub_addr = 0x290;  m/ }$ x" _) K) E: y+ \3 C
  34.         arg.e2prom_cmd_data     = buf;
    1 L1 k& D6 r! @( \& J# b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ D7 y2 S: c( {; F/ s
  36.         if (ret != 0) {( B* F3 \4 W4 i$ E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 `% Y) ?" v/ O. D6 l
  38.                 return -1;' {$ o# A8 s: l2 H5 m
  39.         }
    ) ?" D& v0 n- H8 @4 E. p
  40.         memcpy(mac, buf, 6);; d1 ~  z) ~( P8 o, K8 ~! y- {
  41.         memcpy(stbid, &buf[6], 18);
    : n$ L' G) T. H  M# I4 D
  42.         stbid[18] = '\0';
    ) T4 J0 J1 ?3 X9 w$ _& U

  43. 5 y* K; F) {) w
  44.         return 0;- {" A3 {3 t( ^* H6 M
  45. }! h9 i  \' i4 T3 T

  46. / x& }0 y. t0 H9 b6 e. F
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( O4 e8 \5 Q. G7 U& O  F
  48. {
    8 y0 Y9 @9 d; a# ]4 r) I, w( |6 B, H
  49.         int fd, ret;% P4 L8 P- D# C
  50.         e2prom_s_cmd arg;# L/ N) \, v' z: A' ?
  51.         unsigned char buf[0x18];
    / `8 R7 v$ X) L6 k' J: k7 s: w* a

  52. 2 t- y4 f) B) h1 }$ @; C* V
  53.         memcpy(buf, mac, 6);6 C$ x$ z# `6 T4 l2 o' a& Q
  54.         memcpy(&buf[6], stbid, 18);5 j7 z  m0 M  b8 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 t1 H1 I9 m$ v+ N2 {
  56.         if (fd  < 0) {
      z& y4 m+ o9 V4 o# C, e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ Q$ E) m& O4 y7 Z! O9 i7 J
  58.                 return -1;
    3 m* v$ l! i+ y
  59.         }  O4 ?% R) P) R) q5 m1 S- N* q9 C- U
  60.         arg.sub_addr_count      = 2;! T! N3 I1 L2 n, Q6 r/ u
  61.         arg.data_count          = 0x18;+ l3 V. [, C: [5 B- M1 r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , L3 A6 P  M" ^& W
  63.         arg.e2prom_cmd_data     = buf;6 C- K; i2 V/ v+ l' a( q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 [( B  `, v" l! Y( e/ G
  65.         if (ret != 0) {
    ; k4 _0 u7 n/ T9 q7 a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# W/ \* M6 d7 _4 N
  67.                 return -1;# `0 s* d" J+ B' L' l
  68.         }
      r4 b: l8 J$ @( u  J2 N

  69. 9 i, x  X/ D# o& R1 z; |: I6 g4 e
  70.         return 0;" o, o& z" P+ i8 f9 W% E- M
  71. }
    * n( a' S# v; F0 `4 Z
  72. / ]* w& P) V$ V6 {
  73. int main()% P* _8 K+ Y3 ?0 v$ @5 c
  74. {
    . F! |- x  N+ Z% _2 Z6 s: R
  75.         char c;' \5 I' i, _+ ~/ T
  76.         int i, macs[6];* w( y9 q) K; S; e) L9 V
  77.         unsigned char mac[6];8 _7 t: C7 n% v$ B  e2 |
  78.         unsigned char stbid[256];" y5 ]7 _7 S- p& `( X0 V
  79. 9 Q+ t  e6 w3 S
  80.         if (readparam(mac, stbid) < 0)
    7 O3 ^- ?: K5 \  U. z2 R
  81.                 return 1;
    / \. S6 m$ d) y+ q( O) P
  82. 1 [8 |7 l( r( t- H4 l9 [
  83.         printf("Current parameters: \n");* W, q) \- B' E0 r$ {( |
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 w1 ^; K0 d5 y) }+ h9 ]
  85.         printf("  STBID: %s\n", stbid);0 q4 T3 h, B) ~
  86.        
    , Y$ |& `0 b  {, ~/ W9 P7 H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) A, o7 d' R0 y# G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. o+ ~9 ^/ m; ]9 h+ e
  89.                 printf("Input MAC error\n");
    4 L% O3 W( ]0 c3 S$ a4 D, A
  90.                 return 1;# R4 Q9 |6 c3 q6 G7 Y: b
  91.         }; {8 }, r) n, S. p  l% r. b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 ?5 {7 h+ i4 v, f4 H) l
  93.         printf("\nPlease input new STBID: ");
    " ]- p. b7 w. N. x7 Z
  94.         scanf("%s", stbid);) ^: m, M# R4 p2 b: F+ V; @! E& e; N
  95.         if (strlen(stbid) != 18) {8 s: [: b# @( q5 P- L# q6 B! `, _' W
  96.                 printf("Invalid stbid\n");
    & C: f) y4 X9 N0 E# A. Q$ ]! \
  97.                 return 1;
    : O9 U& p$ k* X, Z4 d
  98.         }4 a+ J6 q5 n# z" w* z7 P
  99.         printf("\nNew parameters: \n");2 A- B; _1 _& s4 T; E8 z% v9 u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , D: R# b* r& e4 B% I: C' ]
  101.         printf("  STBID: %s\n", stbid);
    6 I; T) N  O8 e' }5 o" f" C# u6 K4 t

  102. 8 z( K' b) ~) A8 u1 e8 j! @) C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 f' m  H3 s6 t( Q' {
  104.         for (;;) {
    ; G/ l% f2 O# G8 z6 O9 e0 C
  105.                 c = getchar();$ s: O  h& w. C9 e& W- j+ k
  106.                 if (c == 'y' || c == 'Y')6 w/ {; o( m! z$ o! @3 J
  107.                         break;6 t3 l8 D/ B' F
  108.                 if (c == 'n' || c == 'N') {$ U: o1 l  \* ?( |# S) Y
  109.                         printf("\nAborted.\n");& X7 Q* p6 h# E1 x, l+ p
  110.                         return 1;& H' Q) ~2 K2 y( F
  111.                 }
    ) q1 J( d3 z+ I2 ?' D
  112.         }
    * @* q+ H4 j; U2 s: g1 O
  113.         if (writeparam(mac, stbid) == 0) / _3 u3 J7 f$ Z. ^) W5 h* A
  114.                 printf("Parameters changed.\n");# ~% B. i( Q$ K( @: p% A' D. m3 Y
  115.   C( E8 T+ G4 T7 L! F( O, i
  116.         return 0;
    " v9 |! P% ~! n5 `. J$ D
  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
, Z0 r$ ], n, _3 V# F- f: e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" a  z; f& |: X  W你用的编译命令行格式是什么?% A8 C: N1 n$ i  I' c( `
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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