查看: 17186|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , p0 x5 L8 }/ d* T- T- r# e, Q& F
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
      i2 u% S' h5 X, `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. R, r8 S( n, m- C1 z' vusage: himr <address> <value>. sample: himr 0x80040000 0x0# {( Q' q$ }4 e" E0 q

. e; p# Z' D" N6 m: K7 J0 ]5 `9 @7 p. l9 @1 ~. }' n
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# }! n' q  F) ]6 I
9 J/ z3 r2 V  D8 p2 Z
补充内容 (2012-3-8 09:42):% A3 i! b& g6 N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  z& `7 l8 ^7 w+ d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, G: o0 g- t6 `5 [8 W+ ]2 U
% S0 g' V. s; ]7 Nhimr <address> <value>. sample: himr 0x80040000 0x0
3 ]9 c8 P$ `% W( S. ~, M
+ r% o! Z! _# r* O例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: {) k6 U0 V' [! \# U. P9 n2 N& n9 zhimr 0x80040000 0x00" I1 _! m( m+ O: F7 X5 Q# a( O
himr 0x80040001 0x11
" v) P5 ^3 n+ V4 j6 zhimr 0x80040002 0x22
- L% N) b+ j  Vhimr 0x80040003 0x33* |3 r6 l% l$ y5 Z0 U- e
himr 0x80040004 0x44
( `0 l5 r# X- ?2 a5 n: phimr 0x80040005 0x55# W; ^' b2 e3 p8 P3 ]7 f

4 S1 B6 o7 w. y- ~SN也是类似。( X/ a1 W, ^0 Y3 J" y' F

- t' {1 Q% U; J; I现在主要是,谁告诉我们MAC和SN的地址?
( e  U- _" W6 {" o
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 ]+ ~( ^; o5 g
一直想找到运程修改MAC和SN的办法,苦于无解啊
7 ^& S  e/ Z( j, V6 q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
3 {, ^" G, P1 s! t" B) ]' o- Y( Z8 D: m, I5 P' M. D; t$ m/ X
修改的代码早有了。到今天不会编译。, |9 [# `4 r( O  h( ^0 a; ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 P! M, f: c9 _3 v9 b% o
  2. #include <malloc.h>3 [% B$ }) @5 i! B. [& I) L0 [
  3. #include <sys/types.h>1 b3 Z) o3 w3 J6 ?& @
  4. #include <sys/stat.h>; `" t; I+ \" }4 @
  5. #include <sys/ioctl.h>4 Y# Y% w1 i% [9 `
  6. #include <stdio.h>) d3 P% a0 \9 Q
  7. #include <string.h>- r' N0 C& t  d, l. Z) T6 O
  8. 6 G2 d0 N# y  `1 `
  9. typedef struct {0 A7 P! G  q6 ^" j) v9 |2 I
  10.         unsigned int        e2prom_cmd_sub_addr;7 |. g8 {$ B/ M2 A
  11.         unsigned int        sub_addr_count;1 i( o+ u- d0 v7 {% `" g) E
  12.         unsigned char*        e2prom_cmd_data;
    $ r9 @6 \8 c8 [  F/ W1 L" w+ F
  13.         unsigned int        data_count;6 T# X& ~4 @# A; U0 [
  14. } e2prom_s_cmd;6 J- J  A) S8 W6 V# h: u& V

  15.   c( j/ o; m3 |; @, e' [3 l
  16. #define E2PROM_CMD_READ 1' a, b) m+ B2 b/ v! y) w+ a6 y
  17. #define E2PROM_CMD_WRITE 2
    ' M# F# w" k$ @+ }: z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", N3 ^6 y. v/ h7 ^* p8 Q

  19. ) \8 r( F+ p' `1 L4 T5 D5 I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) T# f% f' K2 \+ M
  21. {
      h3 E# m2 v% C9 c1 C+ V
  22.         int fd, ret;$ P$ a+ m, Z+ B9 p; a
  23.         e2prom_s_cmd arg;- J- _$ j5 h% W; [3 {
  24.         unsigned char buf[0x18];7 S: t! c! o/ \6 G
  25. ( V  i, j. Q$ V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * f  x8 k: l6 J
  27.         if (fd  < 0) {- G0 e; @; @6 G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 x& w1 @+ q; i& ^6 [* \' V$ x4 @
  29.                 return -1;. f  D. B1 k: ?$ E$ a7 a* T% T
  30.         }
    5 A" e6 R% Z" j# S' L$ p
  31.         arg.sub_addr_count      = 2;2 Q% }- R) P9 _- L: w
  32.         arg.data_count          = 0x18;
    : m( j. K3 c* h8 b5 y' L0 H
  33.         arg.e2prom_cmd_sub_addr = 0x290;) j, |% z9 ]6 o% h4 N+ F6 ~
  34.         arg.e2prom_cmd_data     = buf;' A( @6 j+ S, X6 \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 Q+ t$ a$ l. e1 x, C: r' e  Z" Y
  36.         if (ret != 0) {
    0 d, c% g: H( J5 R, ]( V" j9 y/ m  \
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 t* k3 X' T, |9 I2 z: a
  38.                 return -1;
    ' C) D8 @5 }* Q7 Z" T4 K
  39.         }
    ( m1 L9 Q! k7 P2 c2 C. u
  40.         memcpy(mac, buf, 6);) L0 n. `4 {7 ?# Z8 q, }
  41.         memcpy(stbid, &buf[6], 18);/ l8 l; j& }: U9 c4 Z5 r
  42.         stbid[18] = '\0';
    3 p  j5 a+ n7 ^9 t
  43. 9 O/ u0 x% w2 `. y8 w# C
  44.         return 0;3 g( w5 a$ @( @
  45. }
    5 y& \. j8 ~4 E) G

  46. 3 u5 K4 f, X2 w7 G$ I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * _8 y" r2 g4 m
  48. {" }7 l" i% j$ ^: u0 l1 X/ a
  49.         int fd, ret;
    ) G" [7 O& l) H# ]
  50.         e2prom_s_cmd arg;
    % M- E+ U% _; a: C9 y& t+ b" |( {
  51.         unsigned char buf[0x18];8 t- a. R. b+ ~# X
  52. - t$ p& j# ]7 H$ n+ O! V
  53.         memcpy(buf, mac, 6);% X9 f) j4 F- A; o$ `* M9 k2 u
  54.         memcpy(&buf[6], stbid, 18);
    : ^# F* p" j% f/ p- R( ^% [9 p' L  C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , i1 G/ c# x" X: K, |  |- q! N
  56.         if (fd  < 0) {
    2 a2 U& N* ]5 G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; [3 @; U' q9 f# p* R6 J' g* F6 l
  58.                 return -1;* C/ Z$ V' i' K1 a
  59.         }$ e$ f6 ?# I4 z; h
  60.         arg.sub_addr_count      = 2;2 H+ F4 q  A$ ~5 d" t+ s. T+ U2 g
  61.         arg.data_count          = 0x18;5 v2 M4 p7 t: `$ s1 e0 `! q8 |# U
  62.         arg.e2prom_cmd_sub_addr = 0x290;; C) k2 ?" B2 M7 W9 J1 J  o
  63.         arg.e2prom_cmd_data     = buf;! D8 j) A7 g- n& x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 \( }3 {/ C4 ]& `) T' r7 d
  65.         if (ret != 0) {
    9 X1 v0 L& I9 \0 n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      F* ^, o$ Z9 }/ k( I* R7 ]
  67.                 return -1;
    5 {& h0 |: F) V
  68.         }& A$ Z$ E$ _# [; v. y- m" g

  69. 7 r: u; y! Y9 e) t* W6 o
  70.         return 0;
    % O6 o* b0 m/ `: F
  71. }
    1 m' N+ U9 I3 z) u) I( X
  72. ; r( C( A2 [1 D' K" `, J
  73. int main()
    : \: v6 }( G" m
  74. {
    1 n+ T1 \" F" u9 g: d
  75.         char c;
    3 K. \- f+ `  U! B9 N: K& i; K- j
  76.         int i, macs[6];
    + x) A/ F2 p6 f7 E
  77.         unsigned char mac[6];* P4 q, a+ D: g% a& v
  78.         unsigned char stbid[256];6 o% o0 j( y5 S8 R

  79. * X- I/ z9 u3 q
  80.         if (readparam(mac, stbid) < 0)# E! V; \* D9 Z' r
  81.                 return 1;
    ) n8 H9 q5 T# W

  82. - M8 q. w6 D# j7 q5 M
  83.         printf("Current parameters: \n");
    : f) N, H* P/ R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 ~/ Q* m, M) l2 t4 Q" [' z
  85.         printf("  STBID: %s\n", stbid);0 g; }" q4 X/ ?8 N7 L  t* j
  86.         ) y0 z4 _! \7 t9 t# Y/ \" {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; b1 X7 }* \" |5 k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 {* S  [3 r. ^4 o3 H. c( V
  89.                 printf("Input MAC error\n");
    # m+ F0 M& t) z1 A+ o8 J1 O
  90.                 return 1;& H+ O7 }- g% p, C8 S5 g7 W
  91.         }
    2 F8 V% F" S1 Z, h% Z* t, o& I
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 R  S, l7 M& k0 t
  93.         printf("\nPlease input new STBID: ");  M( `4 j0 Z4 l- o8 `' r: T
  94.         scanf("%s", stbid);; Y/ z" `# M8 i" P( S. ?
  95.         if (strlen(stbid) != 18) {6 t3 Y9 b" s/ D* W6 {( _" d0 U
  96.                 printf("Invalid stbid\n");
    . o) w) i4 }7 \
  97.                 return 1;5 @. z- u& S4 H: l
  98.         }- k# k: `* t  d& n
  99.         printf("\nNew parameters: \n");
    / `3 d4 M# o1 R/ `# N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# ]1 b" L# q0 w/ E# i# @6 b
  101.         printf("  STBID: %s\n", stbid);, i7 p/ O7 u- _/ X! `: F, v$ ~+ h
  102. . e3 Z/ P0 N. e( j
  103.         printf("\nDo you want to change paramemters? (y/N) ");' t5 B7 C) Z- a5 ~5 u5 J+ j
  104.         for (;;) {
    + A" b/ c% g6 c4 A# |+ O
  105.                 c = getchar();, m' d6 P8 }  R( d9 K6 K5 G3 }2 j! U- H
  106.                 if (c == 'y' || c == 'Y')* n, T5 T* [' U0 H4 K
  107.                         break;( i. R* `0 y: K( H  |
  108.                 if (c == 'n' || c == 'N') {
    2 S9 ?6 m2 S! c$ |
  109.                         printf("\nAborted.\n");; l3 z: n5 a: Y7 u* k
  110.                         return 1;
    1 A/ f) B2 |; ^
  111.                 }- E; Z5 R8 g7 `! O: e
  112.         }& m) _( D9 p8 \* a6 V
  113.         if (writeparam(mac, stbid) == 0) 8 j6 b! u2 H# C7 X  ]% @$ R  Z+ M
  114.                 printf("Parameters changed.\n");
    ( x1 @% ]0 r( l* a; X, @
  115. ) [; h2 X' t$ d
  116.         return 0;
    7 l8 g5 ?& x( s
  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 |- k- a( }- Z) r$ ~1 {4 ]) }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 X3 s! r" z: E你用的编译命令行格式是什么?
& ^- a& ~2 r8 r* C3 h* F
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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