查看: 17712|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 ^# h: L3 S( T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! ~( R4 g0 ]4 e" }7 L2 f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) @" @" _/ c6 Gusage: himr <address> <value>. sample: himr 0x80040000 0x0
& i0 s8 i1 H& g3 d6 s3 I( @+ G! T
( |2 @! P& s% N, Q9 s0 m: e' {+ r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 v: D/ i2 ^2 R, t, F$ ]8 f  J; L/ ?5 r$ _7 T  p
补充内容 (2012-3-8 09:42):2 q! w2 C# B  `+ P' _/ P4 c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 L! e5 ^+ a' E" ~+ C3 Y& B; M这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, R) i! }) e* J* H
6 U3 K" Z' |. K' L) k) r! zhimr <address> <value>. sample: himr 0x80040000 0x0- B4 v6 o+ L; Y, r

) i4 I* k6 M5 I; w8 K3 v# a" h例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, \8 O7 m! m9 z8 T/ t' Thimr 0x80040000 0x00
  J1 r8 m# @  x$ t6 P5 R  k6 yhimr 0x80040001 0x11
6 ~  }- p- \' P5 B0 E2 n% d7 chimr 0x80040002 0x22
% l% X' O4 X; a( [$ s/ a% N# A  {himr 0x80040003 0x33
, g# t# ~5 ^* J8 Fhimr 0x80040004 0x447 h! z  p/ b5 F( L: w6 ]# C
himr 0x80040005 0x55: f7 ~" C. p* w( Y$ f
$ x8 C  c+ }; t7 H
SN也是类似。
/ m. k! \3 @' F  `  y, m4 ]* O
0 |  X& t) L" s0 o3 V% G, e现在主要是,谁告诉我们MAC和SN的地址?' j, F4 y6 m& o8 S: m+ G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 B0 [1 s7 c- o0 ?# k& Y# N6 N一直想找到运程修改MAC和SN的办法,苦于无解啊
- g# C0 U8 B- [1 |8 b, ^. X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ A4 i. T7 }- ?
, L& y& Y7 B/ s; F
修改的代码早有了。到今天不会编译。
+ M* g$ ?8 t: n2 q# l0 @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( Q! _6 [$ `' [! |! }& ]2 d
  2. #include <malloc.h>
    5 L* O8 T4 X0 W4 V5 O
  3. #include <sys/types.h>. ^3 i% P( r  u; `: l) j: @1 e. j  v
  4. #include <sys/stat.h>  S' i+ n' h' Y
  5. #include <sys/ioctl.h>
    + |, U2 H0 L7 s" G4 k8 i
  6. #include <stdio.h>5 P1 _9 {3 S  d
  7. #include <string.h>
    / m. G6 q$ g0 ]) c5 ?

  8. . B5 G) b7 |' w  `- T, q
  9. typedef struct {- O$ I* ~  }# K' g3 P9 y
  10.         unsigned int        e2prom_cmd_sub_addr;0 t* }4 m) t1 v) s- S
  11.         unsigned int        sub_addr_count;  H; M) y+ t, [7 W' z
  12.         unsigned char*        e2prom_cmd_data;
    . \( }4 D. ^: u& f! w& w1 v: E* L% A
  13.         unsigned int        data_count;
    / @: z6 W" ]$ t' m$ ~
  14. } e2prom_s_cmd;
    6 |5 u: K* _1 q: O2 s' |

  15. * ^! q$ l3 a: U0 J6 Q1 Y* ~3 n
  16. #define E2PROM_CMD_READ 1* S0 V% n' E8 p& w& A/ h
  17. #define E2PROM_CMD_WRITE 2
    + d9 N" ^! k  h1 o! ?7 B# |, e& x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # s& }( n3 g$ @0 ?9 q1 c0 Q/ c

  19. ; `1 c5 y9 s! U: d& V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 T$ A$ \& E, H, s  h0 x% R6 \5 l1 J
  21. {
    ) Y2 Q& ]; h: f4 f9 N
  22.         int fd, ret;
    ! |3 P1 K0 Z+ X
  23.         e2prom_s_cmd arg;% R8 J. [. f  z! h6 N$ M' _
  24.         unsigned char buf[0x18];) ^3 v, b" ~( T/ N& }9 }+ Y

  25. / W, E* E# n( r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  ^. f$ n* g' j7 O* h
  27.         if (fd  < 0) {
    2 U0 r9 y- U! L3 a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 k, A8 D* a( j7 _) ^: f
  29.                 return -1;
    6 |8 h/ R: [. H7 \; D
  30.         }
    ) j3 u) J3 T0 N7 b) }0 M
  31.         arg.sub_addr_count      = 2;
    ( n, g. b* ^; S+ Q8 Z2 j8 P# k
  32.         arg.data_count          = 0x18;
    7 [% d! K  ?5 }
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - k; J' y5 y' a. \
  34.         arg.e2prom_cmd_data     = buf;( I- t  ^+ Q) ~, A* Z" c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + m/ ?* |2 U1 [' A+ t) k  s( s
  36.         if (ret != 0) {0 R" u& g) Q1 f9 T' M) z4 }' X% }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( H" G' e2 y7 ^7 q* a# m
  38.                 return -1;
    2 u* f& }/ o- A/ h, ]
  39.         }% Z' }. {, K  ^% {
  40.         memcpy(mac, buf, 6);& y9 q  Y3 U& v, ?
  41.         memcpy(stbid, &buf[6], 18);. R. C) \% I- a) S
  42.         stbid[18] = '\0';% M9 i. y* c1 K6 A) b
  43. % g) }4 n6 G" v4 [6 E7 _! P
  44.         return 0;
    2 e! ]8 ^; X3 k$ B3 o
  45. }* j1 A' ^$ s* o# W
  46. $ t$ [) M7 V5 x* N. U; d1 ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' ?" P7 K, G: d. L1 R
  48. {
    # i* V& E* X$ G
  49.         int fd, ret;
    4 \$ \# i( D* \3 _% J8 k
  50.         e2prom_s_cmd arg;( a+ k/ M: E) o' R  U5 v
  51.         unsigned char buf[0x18];3 V  `( e8 j3 j( r0 X! h' m

  52. $ [6 H4 [9 D. \; _* n2 t2 V1 F
  53.         memcpy(buf, mac, 6);& f. O; ~% s8 G  V
  54.         memcpy(&buf[6], stbid, 18);! v% h: [  B3 D1 N& x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);. W  e( j8 ~4 y. z2 `) c! r
  56.         if (fd  < 0) {
    + ]2 E) R; U# \2 {) u3 V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , Y% `( r6 Z7 g) {; v4 a; Q  n" G" Z+ p
  58.                 return -1;
    * r3 `: a( I. R4 B* `' y
  59.         }
    ' ^! Y5 j# v' y1 y, w+ [+ i: H; G/ P& B
  60.         arg.sub_addr_count      = 2;, d9 ~% O6 o6 T6 c5 j
  61.         arg.data_count          = 0x18;
    ' M( m$ Y0 u. G2 }. d9 E
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 K, N1 s8 W/ A; d7 k0 v
  63.         arg.e2prom_cmd_data     = buf;
    : ~/ V/ C" t2 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 }$ U2 H2 {" K6 b7 w7 K5 o" T
  65.         if (ret != 0) {8 I  x0 F. x4 C! I" ?* d8 N
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 d9 s% I, @, y
  67.                 return -1;( E3 B% P4 A! ^% s  P, g5 r0 c7 G
  68.         }
    & K' S/ E' z6 p

  69. 5 p: b/ u6 M, Y  G6 H5 G, v
  70.         return 0;
    : U% m3 X2 c3 ^: R& U* r
  71. }# v: a) h2 C/ A% e
  72. + b$ F! @5 e+ A
  73. int main()0 l8 N6 Q; s1 m% I7 L
  74. {
    8 f4 F4 R, I8 ~. F: s
  75.         char c;
    7 P, i/ j9 Y* o) t, O) {
  76.         int i, macs[6];8 P0 ^: E: B2 ^7 z) M6 f
  77.         unsigned char mac[6];- I" p: `' ~; C+ i, u4 h$ s
  78.         unsigned char stbid[256];
    ; x7 M: e5 a! v; G' X0 E+ d( S' ?

  79. 2 {4 r6 L% l* @( f2 \# {, E
  80.         if (readparam(mac, stbid) < 0)8 ]) s# f+ D. y' \( F( F. `, r
  81.                 return 1;2 H$ u* a5 L5 t1 b( p" i2 k2 @
  82. $ ?, h( `- ^: O5 f! z
  83.         printf("Current parameters: \n");( B8 {. Z& c' Y9 |: \
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  M5 x3 e, P( ?4 C2 M2 F5 Z% l
  85.         printf("  STBID: %s\n", stbid);, K$ \0 b4 j9 w7 I3 ]- P
  86.         1 _+ d& {9 K+ d4 A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , l; K$ }- Y( `! \3 c* c! \/ {: l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 A" I" M0 Z+ P  q# a/ H
  89.                 printf("Input MAC error\n");4 d& G2 Q: F! B) }3 c5 @
  90.                 return 1;6 Z" ~' I% U4 {: b, n# |& y- D
  91.         }+ o" S% D1 C  _* W; Q( @! H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . i9 I) H1 l5 A; A) @5 V
  93.         printf("\nPlease input new STBID: ");
    5 @# [# ]( F: k9 u4 V% Z
  94.         scanf("%s", stbid);5 u6 v; _: e2 Y3 E9 ]" u
  95.         if (strlen(stbid) != 18) {+ [3 u0 P' \# Q6 F4 V
  96.                 printf("Invalid stbid\n");
    - _3 D% a% ?; `
  97.                 return 1;
    , f/ S' l* Z5 ^, Y9 @  }: n6 t
  98.         }
    / n+ c- Z: s- E+ p
  99.         printf("\nNew parameters: \n");
    4 J4 F0 a- j) n4 R2 ^
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 _$ |! l& k9 F) O/ G" o6 I# N
  101.         printf("  STBID: %s\n", stbid);1 z/ j) k+ w2 b0 c9 p

  102. : X* a& T6 H) S5 |, o4 b5 X
  103.         printf("\nDo you want to change paramemters? (y/N) ");' Q" v: X+ e, u3 Z" ^, R$ _
  104.         for (;;) {
    3 a8 o! w2 G- N) P0 @9 S
  105.                 c = getchar();% b% x) w1 q8 I& }4 l$ m1 M( j
  106.                 if (c == 'y' || c == 'Y')
    7 [. l! V# v% _0 J- }" m5 D4 {2 G1 g9 i
  107.                         break;
    4 H1 F/ W6 a3 X) P6 ?; y/ T9 v
  108.                 if (c == 'n' || c == 'N') {- _5 y+ n* Q3 |
  109.                         printf("\nAborted.\n");$ q5 D* w  h& w2 S. h
  110.                         return 1;5 [# d1 {% C4 u6 S
  111.                 }
    ( O1 v/ R5 z. A0 U
  112.         }$ V/ w. U  S) Y9 y
  113.         if (writeparam(mac, stbid) == 0)
    ! y5 j, \! F9 n' ^/ D9 p" C
  114.                 printf("Parameters changed.\n");
    ' y2 A( D( F- I. \
  115. ( M) ], S3 j* v. d+ O
  116.         return 0;% j2 Q0 F" r1 ^9 \
  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
3 ~; e# r$ L) x& Z' e* [; y在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: S: S- L  `; `9 x* H" H
你用的编译命令行格式是什么?
* C1 d4 C' Z: M* Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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