查看: 17307|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  @' u9 P' ~! z6 f1 E" `0 `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 M4 b. F1 O* ]9 S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' ^  o2 d1 R, x; Musage: himr <address> <value>. sample: himr 0x80040000 0x08 p! w8 j5 l7 @$ g5 O
7 f. l/ G- I* X5 Q' a+ p

( B% N8 H7 E$ r4 y: N5 o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* Y1 Z* T4 _' @. A1 w' {% J3 K" W
- o  |) {9 V' s5 h补充内容 (2012-3-8 09:42):
, s6 r- g) {: {; [1 P' G5 p7 Y/ Thttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 O4 V. z; d/ o) y7 ~
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
) ~5 X: S: A" S/ _3 k" q  A  ^# B9 x; ^3 _
himr <address> <value>. sample: himr 0x80040000 0x0
, q6 C5 r) b6 l  C4 O" x# I! O) R. I' }- V6 h; D4 I+ l% `
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
( E8 d! O9 z/ C/ B  Ihimr 0x80040000 0x00! B9 l6 G6 m* E. @$ w
himr 0x80040001 0x11( P0 n! m0 ~7 ~; c. o! }% J
himr 0x80040002 0x22
5 ]; ]; y7 X2 L6 C4 r( Nhimr 0x80040003 0x33
8 `7 B6 H; _7 v  ~7 L4 O, ~himr 0x80040004 0x44
! H& D8 y9 d0 L; mhimr 0x80040005 0x558 _- x9 }$ ]. h( N) J% y- K$ O

% u$ E. t; ~, i7 B. {SN也是类似。; W1 x1 L& S) ^; S

! t/ K& i. Y5 u" f' b& h现在主要是,谁告诉我们MAC和SN的地址?, Z1 _+ [. i$ j$ O* C2 I; v
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " @( C7 X. @' o) g/ n
一直想找到运程修改MAC和SN的办法,苦于无解啊
8 v9 S* J( {  z5 B8 X( u
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; C# `: p9 K- x  ^8 ~  o) P
# D- e' f3 H2 v4 p* k( a5 I. t/ X: @
修改的代码早有了。到今天不会编译。) p% W. G: |  ?% d$ G" u$ _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! z/ s$ y) V4 [- {
  2. #include <malloc.h>
    5 ~; H  S0 Z$ H7 h4 _4 Q/ a# X
  3. #include <sys/types.h>0 V; v8 T6 ~; m+ ]3 c! Q
  4. #include <sys/stat.h>
    7 T" {, c  G( ^2 R( _5 O2 ^. Z1 o
  5. #include <sys/ioctl.h>! K" [+ N9 |6 `9 D0 o8 u* i) B
  6. #include <stdio.h>
    1 f$ {) V( t- v1 k4 E
  7. #include <string.h>3 w, `% f* [4 M( \9 ~, T- {& s

  8. # H; o; @% Q6 G8 V  t
  9. typedef struct {6 v' C) K5 F% o3 v) h
  10.         unsigned int        e2prom_cmd_sub_addr;
      i* I+ O; q/ c: S2 Q/ H% v
  11.         unsigned int        sub_addr_count;: k7 O9 E% m9 R5 S$ N+ b, j) K, _
  12.         unsigned char*        e2prom_cmd_data;
    . `% B5 g6 y0 E8 b1 B% B
  13.         unsigned int        data_count;; \8 [3 _1 }9 c4 b4 R. a
  14. } e2prom_s_cmd;
    : `( t  I; B  k5 B/ m

  15. 8 M/ [5 u# C2 G, ^$ @4 |
  16. #define E2PROM_CMD_READ 1" w! \, c3 n, T2 \9 _
  17. #define E2PROM_CMD_WRITE 2' a! p# F; J7 t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 @0 ~. N3 O- O; Y. O
  19. ; ~4 U+ L6 k( f
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & b- W# w% B% e" S9 w1 {
  21. {
    . i+ n' L1 Y' {; y$ Z, d
  22.         int fd, ret;
    7 K! E- Z) Q" d% e5 L& P
  23.         e2prom_s_cmd arg;% w' F, T5 F, B! ]5 I
  24.         unsigned char buf[0x18];4 X) D& G8 G) k: i* V7 G- A" H3 \) z9 J

  25. 5 C! B) c+ l) {; L) `
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - S8 g3 B& `4 L! ]
  27.         if (fd  < 0) {
    9 G  M# K- h7 [+ r& q3 _
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# y5 ^: ^9 v8 z9 C0 T
  29.                 return -1;
      V$ }7 M; n' s) ~
  30.         }
    1 D  _! x6 r" B% H$ S
  31.         arg.sub_addr_count      = 2;
    * [2 `) `7 f& D7 k" c$ @" |4 Z. y: x+ o
  32.         arg.data_count          = 0x18;
    . Y' V# `- e% x8 w1 W
  33.         arg.e2prom_cmd_sub_addr = 0x290;: G( C' @5 p& H4 b/ L  V/ @
  34.         arg.e2prom_cmd_data     = buf;
    4 s0 z' D- F. G% U+ Y8 V8 m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 s+ }2 y* G! U/ p( Z% H
  36.         if (ret != 0) {+ x; G2 J( R) p. P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 D3 y2 x. s% H3 u( x- R1 n
  38.                 return -1;! O8 a+ H$ Z8 b* f4 h1 B
  39.         }
    ( |- k: [  @4 g; }8 f. M+ x% `
  40.         memcpy(mac, buf, 6);* y4 D7 e8 [7 g3 Z3 r/ n; e2 h
  41.         memcpy(stbid, &buf[6], 18);
    1 Q7 B2 K2 ^3 U$ r
  42.         stbid[18] = '\0';
    + a2 \8 b, U- {% q! I9 G# w, |

  43.   i# x/ p" ^# A# w. _5 q
  44.         return 0;
    # x; b% _0 T# W
  45. }) \$ h, X, m( g
  46. / H4 D0 F3 [- W/ Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * c6 k. w2 `! l+ v. ?
  48. {
    * r1 L7 A0 V7 P$ h8 ^
  49.         int fd, ret;* f3 S- N2 @0 F! t
  50.         e2prom_s_cmd arg;8 ^2 z: B% y% A& d: Z8 Y  _' Z  ~5 M
  51.         unsigned char buf[0x18];4 W4 E. d& V. a( ]. w2 U
  52. 0 E  D& K8 P" c- u7 t
  53.         memcpy(buf, mac, 6);
    ! L' L3 `' A* p4 a. c
  54.         memcpy(&buf[6], stbid, 18);2 |  n9 a: ]  u1 }7 W; A, h" p  T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- j- w; y3 Z1 {. K" a
  56.         if (fd  < 0) {, Z5 H0 y3 @; }7 C3 V% V7 d& G  C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / a/ t' E9 ]4 p
  58.                 return -1;$ t2 E" ]' c" j$ m, L+ {
  59.         }
    * v) l% w& C5 A7 w& ^& u
  60.         arg.sub_addr_count      = 2;
    6 p. E0 P3 r% M/ Q1 }0 V( ?
  61.         arg.data_count          = 0x18;
    . e7 n4 I# i, I, }! R; f8 i& m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " b- e& b6 X6 X( ]6 M4 [# q- ]
  63.         arg.e2prom_cmd_data     = buf;9 l/ Q* k' S# u5 n" ?9 q; |/ c% M1 z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - g, j' M* P& C" [2 v5 M
  65.         if (ret != 0) {  {2 G& o# F0 l/ j* Z, Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. n8 m/ z/ \& Q, ~9 O
  67.                 return -1;
    $ u9 Z! z+ Q' W% `; R& v1 `
  68.         }* M# ]- a! I. C2 s! }2 R
  69. 9 c2 U, I9 I2 U
  70.         return 0;6 F* n% [/ |. V$ p) C
  71. }- [$ N  C' S; h8 }6 @

  72. . H+ I8 v6 o$ t1 }5 I* F$ H
  73. int main()2 D8 _# l9 }4 }
  74. {1 ]8 ?. D! K; {
  75.         char c;; g# J" H, J$ ]# u# m, L+ B  ]6 Y
  76.         int i, macs[6];
    2 q+ ~3 C# m; M. H. \) P) l
  77.         unsigned char mac[6];! n8 M/ H- a8 H; r7 F8 B; g) k
  78.         unsigned char stbid[256];5 G) R  V6 ~2 B0 C- A

  79. 3 c- c) C! g, y
  80.         if (readparam(mac, stbid) < 0)/ f. B5 M1 k$ a" c) \" d. c
  81.                 return 1;
    / B! c4 F: ]9 }% }) @
  82. . z5 v1 \+ f- E) X6 m
  83.         printf("Current parameters: \n");, z) }+ M$ A6 n& V* R" s5 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; b0 u( h7 I8 |! e3 J$ J: l% O
  85.         printf("  STBID: %s\n", stbid);' \1 D+ t" ]+ ?6 J" m
  86.         2 B2 S, j1 Y9 t% K; t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ V) n( H1 O" ]; ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 m) {6 e. J8 B+ Q
  89.                 printf("Input MAC error\n");) S) N, \3 D6 i+ {
  90.                 return 1;
    4 ~, y; L- ^( M# B6 ], p
  91.         }
    9 @$ ~0 V4 @# r; j$ g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 f  `1 z# p& r( h( B! q2 I
  93.         printf("\nPlease input new STBID: ");
    " n7 M1 x- F, S/ T  T" O' F
  94.         scanf("%s", stbid);- D3 i. P9 ?/ w6 ?& u1 o
  95.         if (strlen(stbid) != 18) {, x  |7 Y. J9 R  [3 o
  96.                 printf("Invalid stbid\n");) L/ w* Z  B3 x8 I# i
  97.                 return 1;  R: c, y4 N1 x# I+ o  Q: m
  98.         }
    # a, F6 @& e, ^: Y
  99.         printf("\nNew parameters: \n");. ]: A8 ]! d. Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + X+ n' F" u9 q/ B& N4 ?6 ^
  101.         printf("  STBID: %s\n", stbid);
    , |! O5 k/ D: q/ \! ?, ~

  102. ( Y" l0 q9 B5 k) }; W, X
  103.         printf("\nDo you want to change paramemters? (y/N) ");" q' y8 T6 {! ~
  104.         for (;;) {* k2 t  B1 q0 G+ T9 c4 I
  105.                 c = getchar();
    - @1 J& |5 @: P( |, b
  106.                 if (c == 'y' || c == 'Y')
    8 G3 u/ g6 U( ^4 P+ m8 U( W1 d
  107.                         break;2 g) V" C; {' }3 S2 q9 D$ @3 K
  108.                 if (c == 'n' || c == 'N') {2 U  h( r* h4 X; L
  109.                         printf("\nAborted.\n");
    % @8 R( j9 l8 g
  110.                         return 1;
    8 @/ o+ {5 o" h# b, _
  111.                 }2 ^, x2 N4 V) f9 C
  112.         }8 R. i# c, e. b8 t2 E& q
  113.         if (writeparam(mac, stbid) == 0)
    $ u2 y( [2 b' y
  114.                 printf("Parameters changed.\n");" C) c' c0 |0 I; d. X% T

  115. , l2 i! }  A' z7 S1 D% H
  116.         return 0;
    ) F/ \( R/ E; ?8 z6 Z+ i+ X/ z3 J
  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 6 z1 @# b, a" Z5 U
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ C+ E! a7 s- N  H8 g
你用的编译命令行格式是什么?
- Y' [6 E! s9 l9 B) l
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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