查看: 17378|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 a$ e) G# i& u' m6 Q  M
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 x: s- q# V' o# o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% J* b% R9 L! Q
usage: himr <address> <value>. sample: himr 0x80040000 0x0' V# a6 e) u5 l! O$ I$ t

) x' x) a2 h8 C$ j8 ~) h4 P1 |. W. a; r5 p! E6 b  B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 O; l3 P& y0 o. B9 z. k, n* {
0 R% \5 z6 p5 [, b" R/ h3 ^  [- h# ?补充内容 (2012-3-8 09:42):4 K5 w% R9 y0 m& h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数) X& F, m4 W8 F
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, G: ?3 k3 _+ |. w& r
: m2 H7 [  P0 h0 n! o1 Uhimr <address> <value>. sample: himr 0x80040000 0x0
* b  j  f0 o  Q  ]4 ?1 O
$ O. S5 [% l& q+ J5 R, P/ U0 i例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: C; H" Z" `8 Lhimr 0x80040000 0x00
; B& J- d: A" j3 Z2 }himr 0x80040001 0x11
8 ~& W2 o0 \+ w1 s- B; chimr 0x80040002 0x22, b- v7 H3 o/ F6 t2 F
himr 0x80040003 0x33  D) s9 t* F3 S; j8 o: a$ K
himr 0x80040004 0x44! r) P3 h! X3 n: m+ b; I
himr 0x80040005 0x55' V( `' K4 o9 F4 @

5 ~' e+ F+ `. t5 NSN也是类似。$ |' R* D; A& m( A1 t, I7 A% M

" U% F) o2 T/ W现在主要是,谁告诉我们MAC和SN的地址?
  [! ]# e3 w+ `6 ~5 [6 K* q) I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  N( q0 ~, `5 g0 i一直想找到运程修改MAC和SN的办法,苦于无解啊

( z) A& s0 ~% L" A, t, c) h: j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" b' g- N* G; `: P
* R8 k" ], z8 \/ l8 ^4 T/ N修改的代码早有了。到今天不会编译。- }0 k2 x. m4 Q6 g$ s% o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" t" u1 C0 f* d. A7 n
  2. #include <malloc.h>" B+ A' H  R) {6 [! a( Z5 Z
  3. #include <sys/types.h>. ~9 s3 m5 f! V6 ]! l/ F* d
  4. #include <sys/stat.h>
    + b; z, C1 ^" H5 G: {
  5. #include <sys/ioctl.h>
    * N9 ?0 `6 x' I& ^5 V9 a, v2 `6 c8 |# d
  6. #include <stdio.h>/ H; i! a; l% D5 r! n" ?9 O2 e
  7. #include <string.h>
    ( A# G7 P2 X" Q3 d
  8. , C0 y' ?% `- e5 J& I
  9. typedef struct {" O7 H% ?- h" ~7 Y# l
  10.         unsigned int        e2prom_cmd_sub_addr;/ j$ r0 J% ^& t2 E1 d. r7 w; e
  11.         unsigned int        sub_addr_count;& X( S0 f4 i! Z: F
  12.         unsigned char*        e2prom_cmd_data;
    ' E( A2 a5 W, Z2 c0 F; v3 B& v" b- o
  13.         unsigned int        data_count;% E  A7 u7 Z. E2 }! ?8 |$ O
  14. } e2prom_s_cmd;8 i0 k2 U9 h5 R

  15. : @% v  ?7 ?4 ?2 U4 }9 ?
  16. #define E2PROM_CMD_READ 1
    4 r, A  e1 t; @8 x# K
  17. #define E2PROM_CMD_WRITE 2
    7 l  N. w$ v# f0 g- y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 p$ n: m, k& l, ?

  19. 7 B6 q( ^. B6 u" D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 K8 V5 a7 I7 c: n
  21. {
    $ M5 @+ R1 w- m8 i
  22.         int fd, ret;  k1 v; E% |7 E; o
  23.         e2prom_s_cmd arg;& w: }8 D; d' u7 e# C3 V
  24.         unsigned char buf[0x18];$ u, p: i0 K) `- C* n8 M" y' I

  25. + G( I$ h! b/ H3 o5 e3 N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' p% [! _# t6 I- S: c* d
  27.         if (fd  < 0) {/ z2 c/ b: E" l+ q# `/ J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* L& {- K/ ]6 o, }: n' J; \3 {
  29.                 return -1;
    : I% B7 y0 O5 m3 q
  30.         }- @3 P  j1 G# A: z9 N( P, Q
  31.         arg.sub_addr_count      = 2;* H# a) k4 U; c( P, p
  32.         arg.data_count          = 0x18;
    & `- ^: m' F  n* a# w' e
  33.         arg.e2prom_cmd_sub_addr = 0x290;# J2 A1 M' C, b; j
  34.         arg.e2prom_cmd_data     = buf;
    5 T% l  T6 ~' m. v# |
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* s% G6 X' Z6 p% \2 Y4 a4 w/ f
  36.         if (ret != 0) {/ c6 L2 r: p6 k+ G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 I3 C& @8 \8 x, A' A: u+ m6 {
  38.                 return -1;
      _. s7 e0 S7 a" S
  39.         }
    1 H: t+ P3 @% B) {, ^
  40.         memcpy(mac, buf, 6);
    + Y) B9 |) ^  W% U
  41.         memcpy(stbid, &buf[6], 18);0 e% f* |. X0 Y
  42.         stbid[18] = '\0';
    ' B) q& ^: ]& `. g: M3 [/ ?" ^

  43. 3 p; ~" K, A) t6 S! g* f
  44.         return 0;& d9 z# B$ x4 D- |) Y
  45. }
    6 v7 t: Z8 \  L9 N1 H- C7 p7 Z# A

  46. $ b! \! k! b( y0 z5 R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 n& ]" u- H" |  r% e' V
  48. {2 w, W( u8 ~5 h  h( G
  49.         int fd, ret;) t# x$ O0 [1 Z6 S7 c
  50.         e2prom_s_cmd arg;5 O% s( x9 v. \1 Q! M. Q2 v
  51.         unsigned char buf[0x18];6 e$ A& ]' G6 ~: I; J

  52. + g. V* P6 o0 N& ?& R
  53.         memcpy(buf, mac, 6);
    9 W+ U1 H+ }4 r1 D
  54.         memcpy(&buf[6], stbid, 18);/ ~; I9 g1 M! g: ]6 T+ C3 W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" p/ _/ s3 r6 q( |3 }$ A8 j* v
  56.         if (fd  < 0) {; W9 I1 |" m5 C# o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , k( L0 @1 `) e$ k: U
  58.                 return -1;
    7 ]0 X3 D8 \* G0 z  y. i8 g  R
  59.         }" O' b" @9 N% M3 F
  60.         arg.sub_addr_count      = 2;6 q8 f: l6 m; [
  61.         arg.data_count          = 0x18;
    $ S( P+ v. g' h
  62.         arg.e2prom_cmd_sub_addr = 0x290;& {+ v2 I7 m! B9 r# W
  63.         arg.e2prom_cmd_data     = buf;, ?( Z1 X3 M  _  V8 e5 M, ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + g2 e- ~9 L! v% w3 {* B! P9 w. c; S
  65.         if (ret != 0) {
    $ b" j2 [0 D- C  N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& c/ b; h# V! J% o, q) T
  67.                 return -1;% M- q# b( m. R: @" w
  68.         }
    ' W4 U3 r: c' E& H

  69. ; A. w7 k. E+ u6 {/ _3 D8 W
  70.         return 0;
    ; j  C/ p- A% [3 [2 R' Q
  71. }8 H9 z" v. q- x  u
  72. 5 v/ j, v# a  ~) j0 C  N
  73. int main()% H0 O( B5 U0 n/ C8 t+ |4 N' Z  p
  74. {- @; n6 j$ K0 c
  75.         char c;
    * T: }1 ^- }$ h: G5 h
  76.         int i, macs[6];
    : _/ m) {8 G# {1 S" v, @
  77.         unsigned char mac[6];
    9 ~5 P; w& v; i' S
  78.         unsigned char stbid[256];1 F3 _# v. C! U6 P2 ?% s& b$ W
  79. " O: {0 s# X7 Y
  80.         if (readparam(mac, stbid) < 0)
    / H0 T, m, n6 P7 }
  81.                 return 1;/ g% B9 y" h! C. y6 V, C# k3 H

  82. + }' s7 o; u  Q/ w5 r( l
  83.         printf("Current parameters: \n");' N) t8 q8 C) ]# W6 M1 ]% l3 p( Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, {) l- K) j/ l8 M4 N
  85.         printf("  STBID: %s\n", stbid);
    0 B1 n8 I% |; Z. Z) F
  86.        
    5 ~( o) w) v0 D0 F/ x4 A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) `2 N% e$ s3 F  `7 T- E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    9 ]8 H* s5 M$ n, o0 Y* }
  89.                 printf("Input MAC error\n");
    4 j( B. h* w# H2 r8 C% _
  90.                 return 1;& f! V5 g4 f, B0 i7 ?7 a
  91.         }( U1 S5 r; A5 F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 j: U5 |5 e3 u; j( U$ ^+ x
  93.         printf("\nPlease input new STBID: ");
    3 P* @- o* q0 }8 ~
  94.         scanf("%s", stbid);% s4 {4 |9 P% V4 ^6 c. O! J
  95.         if (strlen(stbid) != 18) {7 {: h4 P7 h  l. p$ ^) D
  96.                 printf("Invalid stbid\n");8 m, W, Y4 A. }9 N6 w  ~, i" R
  97.                 return 1;9 K  Y0 i% ~, Z$ Y
  98.         }
    . k( [7 a7 Z/ X( H
  99.         printf("\nNew parameters: \n");
    4 W+ u% `+ ]! v$ N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% L( c3 ~/ n, U8 x
  101.         printf("  STBID: %s\n", stbid);5 A, `4 K8 R5 r5 A8 U
  102. / e6 D. ~4 ?3 \/ `1 a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 X& Y# a. u# E" q" a3 c' M
  104.         for (;;) {/ b+ w  T( ~  S7 e
  105.                 c = getchar();: e4 \* Q% f# M: ]
  106.                 if (c == 'y' || c == 'Y')
    ( P1 N9 y$ |: X) _/ j, Y  c- @
  107.                         break;- |3 e& o" D. \$ R" r0 u3 R# T
  108.                 if (c == 'n' || c == 'N') {
    ; f8 q4 w+ Z7 `5 w" u
  109.                         printf("\nAborted.\n");
    : T* ~8 m8 B8 Y1 j
  110.                         return 1;' u5 t7 A% S* E6 N. v6 x0 Z( h6 y
  111.                 }9 [" g( V5 ~2 R+ w, f
  112.         }
    . ~  g* V1 C5 Z1 y+ {+ \
  113.         if (writeparam(mac, stbid) == 0)
    2 l8 Q& h4 Z: t- P( x) _: W" Z& i
  114.                 printf("Parameters changed.\n");) K% N" u. B9 h' q' Y

  115. ! v' t( `$ T( g' C8 M$ _# k
  116.         return 0;
    # j. ?; p% |& ~4 A; z
  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 5 |; h9 d; j1 v. h
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, l5 G% a* M& j* w% i: R你用的编译命令行格式是什么?0 p( v9 W; `& I" y0 z  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客服返回顶部