查看: 17556|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 s/ E8 e. _  x8 r5 a; [" `; ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / Z, `+ w9 t0 |1 X, L# I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' k9 \; @# Z: C9 @' rusage: himr <address> <value>. sample: himr 0x80040000 0x0* ~6 K* R  y$ j+ h) A9 ?
5 v1 f# v- e( M. l+ ^2 O

2 o4 J0 l1 {0 ?/ l; G- _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 X4 v9 `) B$ T9 }& ]  [

1 [' Z2 Y6 O* ?7 O补充内容 (2012-3-8 09:42):
4 L: S# \6 l( r+ B3 Whttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 N: c  i" j' h+ L3 A+ I
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
) M+ d+ g1 e0 q. |; y; ?' [( W5 D7 W7 |' C# H- A5 O$ Z2 E8 `! S
himr <address> <value>. sample: himr 0x80040000 0x0
2 h# P$ ~( b. ?4 v- B' g
' h/ D( Z8 e- _" ~# @例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( I) _: k4 A9 X$ U, A
himr 0x80040000 0x006 f+ W+ A6 A: }( x  R0 |, g9 O6 x
himr 0x80040001 0x11
( T* m" m8 l; l8 |himr 0x80040002 0x22
( Y, b1 G6 u! i1 |3 vhimr 0x80040003 0x33
& U7 g. ]* E2 Xhimr 0x80040004 0x44
3 [  E* ~1 C4 n/ o/ N2 vhimr 0x80040005 0x55
4 C5 J* `' [- Z) n+ m- U$ B) a/ O( F8 z- q2 s$ Y( p
SN也是类似。6 p: {, v3 B! C# |9 n# f, U

- s: |! q$ \* j0 u; `, B现在主要是,谁告诉我们MAC和SN的地址?: J6 k, }: ^& b  l" k
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 P* y0 S5 G# C3 q& O& t
一直想找到运程修改MAC和SN的办法,苦于无解啊
. `/ K2 j. P) a8 r9 ~; q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , l* b* s6 k- d% X: R/ C3 X  w

0 ~0 U( \9 t% z2 ^6 ^修改的代码早有了。到今天不会编译。
0 j. c  O6 X( l3 U/ H& k需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ b/ r* v5 p2 r3 n
  2. #include <malloc.h>3 q; ]6 _3 D8 i# J3 w
  3. #include <sys/types.h>6 y5 K# l9 z4 [% |5 J
  4. #include <sys/stat.h>
    ) a) A4 Y: R; z8 A1 k, A% U
  5. #include <sys/ioctl.h>
    % I1 S6 E0 w2 O1 l: \& k
  6. #include <stdio.h>' T/ B& R! J8 T$ w
  7. #include <string.h>
    , h7 L: ~8 B' B2 F

  8. ( K8 a1 n* ], @3 F& c
  9. typedef struct {
    $ y7 L; ^$ O2 g2 ]% i1 |+ k
  10.         unsigned int        e2prom_cmd_sub_addr;
    / \! D  Y, W/ m1 I+ y
  11.         unsigned int        sub_addr_count;
    7 O: n! p3 d  r9 i
  12.         unsigned char*        e2prom_cmd_data;
    4 h9 B7 \# x4 q
  13.         unsigned int        data_count;1 z* s. C" B5 S1 Y5 C$ Z
  14. } e2prom_s_cmd;
    & L4 o% Q; P; R& {0 l
  15. 9 S5 d1 |% S/ M; M
  16. #define E2PROM_CMD_READ 1. _! q- p( X, [0 Z- x# P
  17. #define E2PROM_CMD_WRITE 2
      v. Z- b0 a& g0 `0 e& z1 A* @+ z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 k, x- r1 R0 d) n# b* o, P
  19. & o. i1 P# A  {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ W, m! |$ P9 o
  21. {
    ) ^( H, k- g( p2 X; a/ U
  22.         int fd, ret;
      E, w* h8 r' D( Y
  23.         e2prom_s_cmd arg;  U+ n' B" v% N5 r7 @& m
  24.         unsigned char buf[0x18];% Q, k- i* S0 o
  25. " i8 H9 W$ J- N  s  _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) B' q3 V2 j. ~5 [* g- ~3 e5 F* f) O
  27.         if (fd  < 0) {
    3 n9 n& Z% i2 T2 b* t
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      `& N& s( b& X6 B- o! h5 j* C+ e
  29.                 return -1;
    & A. `( g7 w8 C+ F! n- O0 L7 p
  30.         }
    ; X6 ]2 @! F' b+ ]- E0 V9 Z4 U
  31.         arg.sub_addr_count      = 2;
    $ {1 F- G2 ]) ~. k# _
  32.         arg.data_count          = 0x18;
    ! A8 O" H6 P# v7 J8 R; v' o  `
  33.         arg.e2prom_cmd_sub_addr = 0x290;) n. B+ b0 }8 W
  34.         arg.e2prom_cmd_data     = buf;
    ( n! S* f8 j8 M5 c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    3 r9 r2 z! H3 P) U8 T5 G
  36.         if (ret != 0) {& N- \' w( q& \0 c% S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . p. Y  Q5 z! M7 g- a5 s: j* X
  38.                 return -1;7 G5 @) l: |: N4 L
  39.         }
    5 w. R7 j/ N; `2 P: K* o, ^0 U
  40.         memcpy(mac, buf, 6);
    - }$ U/ R$ i4 Z/ `9 V3 t2 G
  41.         memcpy(stbid, &buf[6], 18);
    9 q. @4 ?. V9 Z5 y$ v
  42.         stbid[18] = '\0';2 m, f: G. C/ \

  43. & W% n) O( T2 f9 S$ w
  44.         return 0;
    ' i! g& n2 F. g" w0 y, u# s) e, p
  45. }
    3 ]. P6 P$ k. A! x% q

  46. ! L8 {8 j: I  i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 A3 N4 i: N/ c5 b# A& j
  48. {
    & U6 W( ?9 s4 [5 |0 @
  49.         int fd, ret;
    ! B. M0 E# b1 S9 W$ `, l. z6 i
  50.         e2prom_s_cmd arg;
    4 W3 m& Y, M9 w+ p( H+ N4 W* @% a! u
  51.         unsigned char buf[0x18];4 _. G$ E& P- z' a; a8 S& j! ^

  52. / [0 r; W. j- d
  53.         memcpy(buf, mac, 6);
    + @& C9 y1 L# T: S
  54.         memcpy(&buf[6], stbid, 18);
      y; G1 v1 n8 W/ U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! ]4 a. j, A8 c2 Z% [0 k
  56.         if (fd  < 0) {1 h5 Y3 J' ^! J) E- S1 B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , L% ^% ]: ^0 H* {: x, Q( Y% c: t
  58.                 return -1;
    / R& G0 x5 p8 j6 K6 ]% j% |% D( M4 w
  59.         }" Y( T' Y6 Q, q/ H1 f$ v( b  l6 @) R
  60.         arg.sub_addr_count      = 2;$ k4 E) L' R! i/ f' _4 i/ y$ _: m
  61.         arg.data_count          = 0x18;8 N6 l  f+ ]" O. [
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! m" ~5 d$ r# W8 Q) y  e
  63.         arg.e2prom_cmd_data     = buf;, o2 C5 I9 ~8 e0 \/ P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& `  L. i8 G8 C! _. J, f
  65.         if (ret != 0) {3 k& M: m& l* v: z. M: l# k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    + @' A- ], g7 W0 y1 o
  67.                 return -1;9 r+ x3 a$ w5 {& f( [' f# v! P
  68.         }
    $ V8 A! I  N! @7 n+ `9 t# L

  69. / {6 h* E5 W! k
  70.         return 0;
    , X: E, Z/ U; |+ _+ O' @
  71. }; j6 p8 b0 f# ]; y
  72. ) O9 g, b" |( `$ r4 L% z/ @5 E  g% p
  73. int main()" z6 |! O- h- }. }( u+ U7 |- h
  74. {
    ) d8 p5 }( W$ ]$ z
  75.         char c;- c, v) W, j) Q- a
  76.         int i, macs[6];8 a  w4 x( g, @1 h* b8 o8 p' t  D
  77.         unsigned char mac[6];
    8 X/ \* {# U* O4 [, H! n
  78.         unsigned char stbid[256];9 b; v# v* _& l! K

  79. * G2 [- P8 b8 R2 A
  80.         if (readparam(mac, stbid) < 0)6 J% W* [% Q  z+ \& H
  81.                 return 1;
    9 M! a' e. K! g, F" h) X+ Z' r9 C
  82. : M: K# I2 Y8 ~7 T# q0 z
  83.         printf("Current parameters: \n");
    + |$ v, U, U7 R# @' }, ~
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    $ V. c/ j: e2 j3 E9 c1 E' Z
  85.         printf("  STBID: %s\n", stbid);
    $ O) J$ K# e7 U4 F
  86.        
    / g- Z! F  \3 _! I8 X# P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) F' Y( S4 S: Y. A, G) p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 A3 J! p- v+ v9 M$ M5 [
  89.                 printf("Input MAC error\n");# Q0 `  J. N8 O4 t+ T5 {  [
  90.                 return 1;" l2 R2 y+ @! ]& w! k8 Z5 ~: H
  91.         }
    0 f6 v! P* E- |( t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 U7 {' e1 j1 l# }$ b
  93.         printf("\nPlease input new STBID: ");0 Y2 C9 q% d* Y+ B
  94.         scanf("%s", stbid);
    / E; X+ m& @3 E( U1 ?: s" O* V
  95.         if (strlen(stbid) != 18) {0 E. I* i" ^" K! W2 O
  96.                 printf("Invalid stbid\n");
    5 ^1 y5 k! P  O: W5 ~4 n
  97.                 return 1;) y' Z1 }5 l6 l8 p1 x# Z: x
  98.         }
    & o- l2 ]: U; h( z
  99.         printf("\nNew parameters: \n");+ o* c; N& L- c5 V
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: b/ J( N3 u, x* g% m
  101.         printf("  STBID: %s\n", stbid);
      l5 U0 K) ^5 o: V
  102. ( R+ c+ K: x0 m# B# [7 K
  103.         printf("\nDo you want to change paramemters? (y/N) ");" E0 e$ u3 h4 ^, ]5 j7 ^+ Q
  104.         for (;;) {
      e% n4 a! E! m1 O0 l: X, \; Z
  105.                 c = getchar();7 k+ {7 _' L. l; X
  106.                 if (c == 'y' || c == 'Y')
    ; J* M' i' f% J7 k0 I5 `( e' k
  107.                         break;
    0 g2 e! y& q+ J/ R( u+ Z& Q7 ?" C
  108.                 if (c == 'n' || c == 'N') {) j9 B) Y5 B6 I) B  Z$ N) s
  109.                         printf("\nAborted.\n");
    8 d+ B4 E: W' a7 }# U9 R/ i" }
  110.                         return 1;
    & s# a0 c- q' h
  111.                 }% w) p0 s* d- {: W# D5 J  E" b
  112.         }
    - T) E& ]+ u  ~* T3 g
  113.         if (writeparam(mac, stbid) == 0)
    3 B: g# w- D: J) [
  114.                 printf("Parameters changed.\n");
    ) i. K: A  s/ }- c# O. F2 W

  115. 0 Y: [- ]- v! k, \1 ]  D; E0 X# p
  116.         return 0;
    : Y% }# V; o  q' p5 }" C5 G" g# r5 O
  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 ' a  |1 I; v5 i: u1 e
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 z3 v6 v. Z5 a) {) [你用的编译命令行格式是什么?
9 r) i0 x* g: }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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