查看: 16546|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 y9 o1 G  Z/ V  a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # @) N0 N4 s% W) I, H
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; A6 N3 i! x# F/ D5 U; G1 D
usage: himr <address> <value>. sample: himr 0x80040000 0x0
6 ^2 L1 u' y9 {" o3 W' f
$ P( E, |. e1 F$ N; N# x4 ^  U$ i
+ @( C% u; D# A( F; w1 w不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 ?( L& ?9 K9 m3 S0 L6 r+ M' d- }- x* g
补充内容 (2012-3-8 09:42):
0 o/ v% e% A- b. R) `0 {http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- ?  C7 F  z' |  a" k( t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 N) a& P2 J) M
7 ]  N7 x& |6 f8 ghimr <address> <value>. sample: himr 0x80040000 0x0
5 W" _0 [6 o3 c8 J
+ O# N8 T' \+ A- t! H/ _% j# J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 D# T. z+ w- a3 w7 W  f# ~himr 0x80040000 0x00
3 M$ P8 A4 z$ z5 Whimr 0x80040001 0x116 B; N6 ~& a0 T  x7 R7 h
himr 0x80040002 0x22
( z6 o; j' M% b' _4 ohimr 0x80040003 0x33
7 ^- Q4 z/ P3 j4 s: Ahimr 0x80040004 0x44
0 a! m. p% P; A' O: Q" h% Qhimr 0x80040005 0x55
5 H9 v; X0 }8 j/ x; W0 {* c
) B6 U4 n6 |* hSN也是类似。( l" O/ ], X& `+ a! J2 b
/ h/ A: k9 O7 u1 Y6 c- G
现在主要是,谁告诉我们MAC和SN的地址?! F) I! b& q6 H) W1 w5 V
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 ?) c5 Z; e" v  l( [
一直想找到运程修改MAC和SN的办法,苦于无解啊
2 r/ m, k+ q8 H  k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - j3 Q0 N* X# b9 _1 J6 R

& u7 ^& w) C& C0 j! N9 E8 y5 ~. X修改的代码早有了。到今天不会编译。7 k- e- A4 K0 z2 Z1 a
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># M5 v4 X; f* {; i6 j0 K
  2. #include <malloc.h>) I9 F2 A7 i0 B$ ^; ~! A
  3. #include <sys/types.h>1 P; X2 G# o* R& Y! \. D$ F
  4. #include <sys/stat.h># P  w9 W' _' T5 ~, m
  5. #include <sys/ioctl.h>) N/ l  _- W+ X
  6. #include <stdio.h>/ x- u. t, ?8 n# K
  7. #include <string.h>
    - F! i, E' A6 N, I# @

  8. 5 w0 u; S# N0 X+ |2 T8 e- y- K. r  K
  9. typedef struct {4 m! f5 ^/ s8 s$ M6 k# s
  10.         unsigned int        e2prom_cmd_sub_addr;
    - \  |$ f: Q1 B; J" g! k
  11.         unsigned int        sub_addr_count;
    3 e$ V: ?1 ~6 }# ^
  12.         unsigned char*        e2prom_cmd_data;
    / o" }0 j' u: w1 t2 y# Y- V
  13.         unsigned int        data_count;
    9 F4 l6 I+ P' B) `- N4 _4 E1 ?! z
  14. } e2prom_s_cmd;: h/ X& I) a! C1 P% ?

  15. 9 S% H0 I" u7 h- L7 M) `- I! a6 s) x
  16. #define E2PROM_CMD_READ 18 q$ }5 R$ u, M% k" v
  17. #define E2PROM_CMD_WRITE 2& E  g. U* P4 X2 S. l: d. R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; F: d+ x6 i1 e0 d  F: n
  19. 1 G9 H) W3 ]- H) Q- U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 O- Y% O: Q; @" g+ Z, T5 x
  21. {
    2 y- G" O! W: p7 X
  22.         int fd, ret;3 \% A: ]- H9 \5 V2 u4 l
  23.         e2prom_s_cmd arg;! J( E% n: h& h5 w/ e# d
  24.         unsigned char buf[0x18];$ B6 s, C. O2 X4 G6 w

  25. 8 P1 J& h# r6 ?5 h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 E# Z% Y. Z- Y" c
  27.         if (fd  < 0) {
    ! M/ |' N& O, u: K" D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' C- S- m& g* e8 B2 l4 |
  29.                 return -1;) L" V; J5 f1 W$ o$ A7 U
  30.         }
    - G% W) e# P, W- e* \4 W
  31.         arg.sub_addr_count      = 2;1 O4 W7 r4 g" L' s
  32.         arg.data_count          = 0x18;
    9 T# B8 i5 I3 `8 H; O, `; E
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 J* l- }9 E' D
  34.         arg.e2prom_cmd_data     = buf;/ {8 a- x6 l, Y6 K1 A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);/ \( }* D* A8 g( K; w. F8 M
  36.         if (ret != 0) {
    2 D6 v+ l$ v) D* c% }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 _' z# I+ M, I! z: x
  38.                 return -1;
    ( o$ }  X( P3 s. w
  39.         }+ r: a- B* y- U5 z# y/ K
  40.         memcpy(mac, buf, 6);
    4 L) P( j1 J" R* b# B, N' ^
  41.         memcpy(stbid, &buf[6], 18);* b3 L! Y5 E) V. k9 z! S; b
  42.         stbid[18] = '\0';
      Z' x, X' r/ U9 x: _* V$ _
  43. 7 J" F# ^- \5 ^
  44.         return 0;6 ~' m- r) Q# G' v% D2 d
  45. }
    " T" U3 |& u: G; I. k& H4 e& I
  46. , B7 O% b' P$ ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ Q: l. Y7 u& r' H8 l; [
  48. {: R8 b! v% ?2 z
  49.         int fd, ret;' }- h! D% K( r8 u
  50.         e2prom_s_cmd arg;0 r+ d' z. b+ `, w% T" G- Y% z
  51.         unsigned char buf[0x18];
    * J/ W2 D, ]0 O4 Q1 b6 j2 n! O8 i
  52. & V- r- Y. p+ v, y; [3 Q
  53.         memcpy(buf, mac, 6);* i, v: h3 e2 U* ~0 z% j0 c
  54.         memcpy(&buf[6], stbid, 18);% i3 S- d7 e( M2 i7 A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);  h# f6 O2 l2 D# m& P3 t+ y
  56.         if (fd  < 0) {
    % \# z6 [& Q+ a; Z# \( b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . \0 C  W  b7 X4 l: X7 L% n
  58.                 return -1;
    8 ^/ o  m9 s8 G: v1 Z
  59.         }
    . L+ ?' M' I# x$ e3 U! J1 G
  60.         arg.sub_addr_count      = 2;3 Y4 x9 j) r5 x" u" X2 H8 I
  61.         arg.data_count          = 0x18;9 m) c, o6 O" y) j4 j/ j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 _( V. v- p6 r6 L2 A% s
  63.         arg.e2prom_cmd_data     = buf;
    & [& O9 m* Q# U8 ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / Q0 z! V% m/ b* W) r
  65.         if (ret != 0) {
    $ ?- O' W3 m  _: i7 Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( F1 _8 z4 Z! c1 W
  67.                 return -1;% b6 `* N2 T% L8 W0 g" C9 e
  68.         }/ o8 B" f! ~5 y( m4 C
  69. ) K2 @7 D* C( l0 u9 k6 x5 ^
  70.         return 0;, V5 z  N# v$ K! p# U: i/ R6 V% h
  71. }4 ?- n$ m  i/ b* X6 \  b

  72. 3 G" O# n* P3 `/ O9 S
  73. int main()
    ) n( {8 n6 j5 o; I( a( M. G( [+ A
  74. {
    6 x6 ]+ R3 y7 C. W4 w; `# r
  75.         char c;; }7 Y3 R0 I7 W- k! f. l! {
  76.         int i, macs[6];8 T  E3 Q" R1 U
  77.         unsigned char mac[6];
    ; \7 ?4 q; k: o; y
  78.         unsigned char stbid[256];
    ' P8 |3 u5 o" i7 J3 s. ?
  79. 4 B* F4 M9 [1 |$ k# o# u" Q
  80.         if (readparam(mac, stbid) < 0)
      W6 j# m% m3 Y2 h, A) W, t( n5 q) b8 V
  81.                 return 1;) {- A8 |* |# ]& ]& c
  82. 8 o# f% L- N' C, z2 ~
  83.         printf("Current parameters: \n");: \9 J9 J0 p: P: ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 n# W" G4 f8 D
  85.         printf("  STBID: %s\n", stbid);
    ( a9 D3 C+ M5 Z9 G8 }* \
  86.         2 H3 h" A# |% d- d( r6 w1 n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( A$ A0 W* B5 @4 J7 B6 w) x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- R4 V; P7 O4 s8 d
  89.                 printf("Input MAC error\n");/ K+ P% A% F9 Q- W3 F" G
  90.                 return 1;9 `1 e+ b- W# }2 N# U$ r
  91.         }
    & Y: P) z  y, n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 ?( O9 W& ~) E0 t. \
  93.         printf("\nPlease input new STBID: ");! X! A6 F$ o5 D* B
  94.         scanf("%s", stbid);0 K( ]! E  h# e4 {$ j( |
  95.         if (strlen(stbid) != 18) {) K* }, U# I3 Q7 J
  96.                 printf("Invalid stbid\n");) y: O7 e3 O6 z+ x# x. b6 b
  97.                 return 1;. \: T5 _. S; D
  98.         }* J' o/ @, V2 f& j& [) \& R
  99.         printf("\nNew parameters: \n");
    : Y5 n4 c. A/ [, u% z1 m' b
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, ^) u8 v* I2 G8 }
  101.         printf("  STBID: %s\n", stbid);5 D/ X; Z2 t# X. p# [" s6 f

  102. 0 o* N- b( x6 x9 d6 q" I- f! ^5 h+ {
  103.         printf("\nDo you want to change paramemters? (y/N) ");; w$ c/ E+ C9 K" W/ U
  104.         for (;;) {7 q  \1 K  ?: q/ z# F
  105.                 c = getchar();
    4 y8 d- c  y( o9 R4 b, n/ q
  106.                 if (c == 'y' || c == 'Y')# E7 N9 m7 [3 e: a9 v( O( e
  107.                         break;
    $ c  ~8 i: M) J$ [$ y! ]5 u
  108.                 if (c == 'n' || c == 'N') {
    6 g( O; O# x  X; E  {; a$ ^
  109.                         printf("\nAborted.\n");) A1 P; u: g% t+ v" Z; i- G$ X# x
  110.                         return 1;
    : P$ Q9 m" Z9 C: Y6 B# Q
  111.                 }
    ' S6 X( q" b- V, A. ^/ |
  112.         }
    2 D- H+ s! `  C: n
  113.         if (writeparam(mac, stbid) == 0) + W3 @& R. D! _: O1 x% G
  114.                 printf("Parameters changed.\n");) `6 s  A; U3 @' A
  115. ) K4 ]4 _3 V+ ?+ c0 d
  116.         return 0;
    # W$ `9 G, l( K1 Y! T9 G1 w7 Y
  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
1 \1 g! k! h/ b' L  {6 }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ b* l% H1 X+ l1 r( F+ E你用的编译命令行格式是什么?9 k( h9 \! Z/ W! ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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