查看: 17273|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr+ {0 I5 W: x& L' d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & Y: ]  J. l. s7 J$ Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:7 j: S7 v! f* l+ O1 G  x# ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0* N( N7 c% q5 j2 b: n1 ^# M
& e" W0 Y! m7 I: S
5 C' ~% J4 c( o/ t6 V
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. _" M- M6 X8 R# p: w
; o$ W# M# ~& m& y- r; T7 S! l补充内容 (2012-3-8 09:42):
) j7 {: n; f* x4 E2 W, B- lhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% B  C0 v3 O- |/ I& j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
. y9 a/ C& w2 A* l% f* u9 M  b  @+ t
himr <address> <value>. sample: himr 0x80040000 0x0
  T+ \+ g. e$ E6 H$ h( R) A
* a+ i% j% G) q; z. M5 ?例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% N. ?' X9 Z9 [
himr 0x80040000 0x00
7 o6 @% \( h3 Z( yhimr 0x80040001 0x11
" A2 R0 P# `3 }4 c9 |himr 0x80040002 0x228 w, `7 B* G, H5 M/ ]1 B9 {+ M
himr 0x80040003 0x335 O$ m6 @; P6 K! ~- Y  W6 G9 x
himr 0x80040004 0x44. U  z7 Q3 {' s3 K1 o, {9 J1 J
himr 0x80040005 0x55
8 ^: q2 Q# @# [& ^0 X0 P7 G1 w  R7 i8 l; w" k7 M) G4 ~% z5 U: D
SN也是类似。' R2 h0 C/ X- x

( Y2 q( T8 M5 ^+ {( t现在主要是,谁告诉我们MAC和SN的地址?
% H+ [5 i3 H) _* z( e3 W1 f
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; Y9 v( L. O& t. t. O$ r0 H一直想找到运程修改MAC和SN的办法,苦于无解啊

3 n4 Z9 l3 V5 I! a# q4 u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. G! }1 \0 ~6 ~0 S1 `, n* ?) g3 T3 i3 w0 c3 X9 e
修改的代码早有了。到今天不会编译。
' @* }6 v5 l6 e& J; r- V2 [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ J" b$ o1 C* z' p* K% K7 y
  2. #include <malloc.h>5 }4 i2 @- {# [2 \% ~5 M6 S2 J
  3. #include <sys/types.h>" f" f, h) b% Q
  4. #include <sys/stat.h>
    9 [3 d: d* c6 K5 V" k! o2 v
  5. #include <sys/ioctl.h>
    ' x5 J* S( f* D, |5 m7 r! k7 Q) J
  6. #include <stdio.h>
    9 h/ ^9 n  H! G' I' ?6 a
  7. #include <string.h>- i, t- R3 `& `5 O
  8. - c2 I* o( I8 P$ E. |
  9. typedef struct {
    . o6 z& {3 c1 p9 [$ A2 j2 b
  10.         unsigned int        e2prom_cmd_sub_addr;
    . z2 O  T! [# y0 E. D2 Q
  11.         unsigned int        sub_addr_count;
      ?+ Q( A5 N0 Y/ x3 O
  12.         unsigned char*        e2prom_cmd_data;
    , C1 {+ Q5 g: R3 D' J! @& n
  13.         unsigned int        data_count;4 `  v9 ^' C0 b" C& w; v5 Y
  14. } e2prom_s_cmd;
    ) L" i' _: ], O

  15. 6 E% t8 q9 Y# k4 P& o
  16. #define E2PROM_CMD_READ 11 D( x8 f3 |; M" h
  17. #define E2PROM_CMD_WRITE 2
    1 z# R4 [6 E* f' S$ M6 n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . |" H" V) C! t& \/ L& }

  19. ( q) s' w# R; D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)% `* f& Z8 e5 z! \' u
  21. {
    1 x0 h0 y) G5 c! y
  22.         int fd, ret;4 |& l0 T5 Y( a7 B  I, i, Z
  23.         e2prom_s_cmd arg;5 M) Z- U5 e7 f
  24.         unsigned char buf[0x18];
    $ n5 w9 u) z- M4 ~9 p$ K+ Z( t) k
  25. 9 }. I5 V/ z" H, x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 D6 Y/ J- t6 V
  27.         if (fd  < 0) {
    1 W9 x7 n# \3 m# Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, i: Y+ w5 q' T; `% C
  29.                 return -1;4 K6 t+ g3 v& E; e8 c
  30.         }
    # ~/ S0 M% u( f
  31.         arg.sub_addr_count      = 2;. J) m. z0 i0 r& u/ @* o; J
  32.         arg.data_count          = 0x18;" l$ m* m: w, f  C0 v* Z( E+ \
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 L# K: y8 I$ W! y8 G; G
  34.         arg.e2prom_cmd_data     = buf;
    - j; R( p3 l& j; d9 L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& ?4 S) I) Q  H4 ]. ?
  36.         if (ret != 0) {
    5 `/ K5 w0 i( p; G, h% ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 C( Q. s1 g. d
  38.                 return -1;6 G8 e9 Z% p; b7 q
  39.         }, B/ G0 X" W, G+ d( ?
  40.         memcpy(mac, buf, 6);" _7 ~$ i* n$ [
  41.         memcpy(stbid, &buf[6], 18);
    ( }6 G$ l$ [6 [4 S
  42.         stbid[18] = '\0';5 |( ]8 g2 v' E% X# V

  43. , g, w4 z, D! h! u2 s
  44.         return 0;
    & F% G# h, n1 y# V8 ~' z$ b
  45. }
    8 _% _; C% _2 X) p
  46. 2 ~. _4 q  L' [1 s& }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ U/ J9 W/ T: u+ [- c3 r
  48. {7 A2 w+ R" _  p6 m2 A
  49.         int fd, ret;
    " |1 O4 q- y- x5 \" B/ Q
  50.         e2prom_s_cmd arg;
    , a  `8 L) J. F8 ?. t/ m1 f- ~$ F8 R
  51.         unsigned char buf[0x18];4 m0 M+ @; ~& n

  52. 8 p  O) h6 ?' T& g
  53.         memcpy(buf, mac, 6);% f! k+ [, e2 G' C7 d
  54.         memcpy(&buf[6], stbid, 18);
    ' j. H8 E1 \/ f& U' H* K: p# n& M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# e7 G$ U, }; w2 M4 l3 w" i; E# t
  56.         if (fd  < 0) {  h. n8 b6 G: n- s1 ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 ^! I* c6 n+ J1 r7 H& E7 K
  58.                 return -1;& }7 v" e) y3 j" H- v, S$ a5 L# O
  59.         }
    " Q1 X1 E$ ]0 p# Z: D
  60.         arg.sub_addr_count      = 2;. s% ~# B2 n" _% }
  61.         arg.data_count          = 0x18;
    5 M% L9 C! C. y- n+ e# l+ ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & G. p1 ]  _. s9 _
  63.         arg.e2prom_cmd_data     = buf;
    2 w( `" c8 g; f5 N0 I# C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , \8 k  J# w" N5 `
  65.         if (ret != 0) {8 r; s  X# u/ E7 f0 g7 K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . Q2 s  o3 c. S9 u* T
  67.                 return -1;. U4 f3 m- r. ?! M/ F
  68.         }  t3 z4 u: u# x7 `) t1 g8 z0 E% ~& R- }8 h
  69. , p2 R$ G" N$ T
  70.         return 0;7 ^2 }5 ~& X2 I
  71. }2 M, h& ^6 F, B* c7 t' e

  72. . p+ D& A! }& s- G2 e2 W8 b
  73. int main()# h, `' n0 A7 X8 n! r( j2 e  \" ?& q
  74. {9 B0 d* C. W: _; d1 h: ^
  75.         char c;
    - p, u5 x# u7 a& `2 J! h* \
  76.         int i, macs[6];) B; {: u! m5 _
  77.         unsigned char mac[6];
    1 ~/ @  j3 c* I' W+ E
  78.         unsigned char stbid[256];
    $ y' Q# ]6 \# z- d

  79. 3 ^" g+ q4 w* z* A( v0 d, D, u, ~) t
  80.         if (readparam(mac, stbid) < 0). W- |% u2 `% g3 p5 B. |' J4 Z
  81.                 return 1;
    * z: g# n- E, ^, o% g4 @1 @

  82. : D& ^; R  p  q/ w0 Y, V
  83.         printf("Current parameters: \n");
    7 w% u& j3 j- l2 [7 Z. n, c) d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ \1 H* W( V2 L2 M% n
  85.         printf("  STBID: %s\n", stbid);
    : z8 M  T  p7 s
  86.         ( [2 J" V/ ]+ @& x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* {* g. Z8 ?# X  Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    " l: U3 @# J" h
  89.                 printf("Input MAC error\n");
    8 f( L% F, O0 s6 l
  90.                 return 1;
    ! |0 T. B9 l/ G" @+ X
  91.         }1 B4 I( p( g9 O/ k! D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 C7 r& H! U$ G, n: k  `3 ^; {, w
  93.         printf("\nPlease input new STBID: ");
      X8 c# L8 k" \  o3 K: N7 Y' a* }
  94.         scanf("%s", stbid);
    - t5 G- z& Z  N) j
  95.         if (strlen(stbid) != 18) {
    - w* j  B% v# L, F
  96.                 printf("Invalid stbid\n");
    - K# c9 B( I2 k  A% ?* w
  97.                 return 1;
    / L$ b: M  A# M& Y/ l  G; N6 l8 f
  98.         }" G( W1 l& A9 |0 D9 G# |+ G8 j
  99.         printf("\nNew parameters: \n");
    ( B' ?0 W. r0 c2 z8 G5 b( K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 T' Z+ a$ K" g: q
  101.         printf("  STBID: %s\n", stbid);
    7 s4 z0 H3 n: e2 f9 r& M2 k
  102. : Y7 i. z+ F3 d/ R* ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - j. S7 J+ G. e( z: i, h
  104.         for (;;) {
    & A8 t0 e2 t$ e
  105.                 c = getchar();- W, _4 t+ M$ U
  106.                 if (c == 'y' || c == 'Y')
    6 S5 D% c* Y& Q8 n
  107.                         break;' ^, ?; w0 ]# t& s# n! x
  108.                 if (c == 'n' || c == 'N') {/ I  G8 k- K: S- y
  109.                         printf("\nAborted.\n");4 F, ?1 y9 [4 s" u
  110.                         return 1;
    , g* g% x9 c1 V2 `( @' Z
  111.                 }
    % L2 v! M6 H3 V0 z9 V; a. l
  112.         }
    % f  b: r  d$ V8 E
  113.         if (writeparam(mac, stbid) == 0) . v9 }6 }: c% I* \# f* B0 ^6 H5 I
  114.                 printf("Parameters changed.\n");
    # a" m- f2 k- j% j5 M2 y9 ?* L
  115. * i% o1 X  `8 Z( u
  116.         return 0;
    . N# `  ]4 ?: F! ?
  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 / U6 ~& @, V2 j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: ?- g2 |1 B8 u1 J3 j你用的编译命令行格式是什么?
& R% J  F1 V! x' v* E/ @) X: j
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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