找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15467|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 ]" ^' |2 ^4 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- @5 Z( y3 A9 I+ G- v. y) ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# `$ V/ `. ?/ N5 Husage: himr <address> <value>. sample: himr 0x80040000 0x0
5 r' j' Y8 s4 D' F* D3 H* U
- }. C. W- R  S( |  y; E
: S( r  @: Y# C" \; q! R/ j7 ]6 P不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: x0 y( ^: T9 b
# ]# H1 K$ H% \  m补充内容 (2012-3-8 09:42):( L" o8 x; F% {+ s2 }* x, Y) o) C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. Y& q5 q3 r3 s3 k" v4 d6 i0 ~
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 i: a4 k0 g- o& r7 X6 s4 O, B& u8 [, c4 J9 f& ]) e
himr <address> <value>. sample: himr 0x80040000 0x0
/ r2 h6 w9 Y+ ]+ Q: p" I7 j3 Y$ v
7 F  Y' q5 R' k- e4 C6 M! ~5 F; I例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* [* ~. y* A! P3 b/ @* _. chimr 0x80040000 0x00/ f8 A& t: L+ ~2 a8 r& b4 M
himr 0x80040001 0x113 S( [6 t2 g& @. f% `  P4 s
himr 0x80040002 0x22
6 T$ e5 H. v2 Nhimr 0x80040003 0x33
6 o  o" O9 U  j; g6 W, ehimr 0x80040004 0x44
" L, ~( s. N/ E' yhimr 0x80040005 0x55
% t. V, I* m6 d& ^. C' `' [# r3 a, S% D, l
SN也是类似。. N) R1 N$ e# A: n4 V* J' ^  K

. H5 P/ y; j7 }% \* o" w2 w现在主要是,谁告诉我们MAC和SN的地址?
: j: e# H! v; p  o7 T- S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 3 K" ~$ q& T( j  H3 G4 b1 D1 _* i
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 U1 E% B' d2 M& i+ I) K$ M2 F. H
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) L& J% a  Q! O8 S# N$ Y$ r  C5 w" _0 {
修改的代码早有了。到今天不会编译。
$ F9 S( D6 B" P- `' r, _* Q3 s  A需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 T6 y9 U; n0 `$ e2 c% [' a
  2. #include <malloc.h>6 U8 Q/ @. }0 O# J
  3. #include <sys/types.h>
    3 E! q6 O  y# O1 v! U+ g  j! |3 e
  4. #include <sys/stat.h>
    1 L9 P6 E) j2 Z4 g; l
  5. #include <sys/ioctl.h>7 z' ^1 @) S$ ?6 K) |" `4 E
  6. #include <stdio.h>0 F- [+ L4 i0 ^: j* y) t9 e
  7. #include <string.h>+ Z$ F( i3 Z3 `: v; l$ k
  8. ; d* x4 B: J: U2 G( Y3 S* F; h
  9. typedef struct {
    * n2 A1 [; W/ K6 V  Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( n- D0 y! X3 D0 ]/ j) D0 ]* D) Z
  11.         unsigned int        sub_addr_count;
    - j7 p$ r' Z8 O% X7 z7 F  j6 K' H
  12.         unsigned char*        e2prom_cmd_data;
    0 \9 h/ r+ j. j- e8 N
  13.         unsigned int        data_count;
    / x- t' [7 j( Q6 W7 m& }5 b7 @9 m, b8 Y
  14. } e2prom_s_cmd;2 z. X8 A% u& G
  15. & z% ?  R$ T, t! Y. N+ j1 ~- ]
  16. #define E2PROM_CMD_READ 1
    % G5 [+ p0 E; k: g$ y
  17. #define E2PROM_CMD_WRITE 2
    ' k0 J+ N* z1 g, ~3 @9 R2 g( }
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"/ u# z+ |. \! y; e) t. J
  19. . j5 j6 \/ |9 r! E8 ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : T. l  ], L# N, l0 w* P: m
  21. {5 f; ^0 V3 _/ \  o4 p) Z- Y
  22.         int fd, ret;6 N. o1 [* X1 q0 `( E4 @
  23.         e2prom_s_cmd arg;
    ! Z. F8 `3 Z* h
  24.         unsigned char buf[0x18];& Y" o! o  I8 C8 X

  25. 3 B3 X6 E) q( J. u. k6 X% S/ B& E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% b# }1 g9 T0 m2 }8 d
  27.         if (fd  < 0) {
    " U3 K1 d5 X& t6 E) _1 [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 a+ R' Y6 l0 ^1 h
  29.                 return -1;* G! T$ u  M" c0 j/ Y6 h# J8 u, `9 `
  30.         }
    / ]+ J6 X' V% ?9 u
  31.         arg.sub_addr_count      = 2;$ |& V/ P! A( D7 I2 v
  32.         arg.data_count          = 0x18;
    4 I9 E+ v1 I( E
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & q) f2 V$ M2 D+ p. y1 e
  34.         arg.e2prom_cmd_data     = buf;) L, [# E/ {) F5 N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ H  s- _  f$ B9 c0 M
  36.         if (ret != 0) {* x( R$ a( }/ f0 W; Q6 d( w3 U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' h1 E' s& X1 G7 [+ i+ ^- s
  38.                 return -1;
    5 c& D% Z; Q5 w% K% ~
  39.         }. `  R+ @( Y% K4 p( ^* b, a6 o
  40.         memcpy(mac, buf, 6);, ~6 {$ w: {% h9 J" D/ _: |
  41.         memcpy(stbid, &buf[6], 18);
    - _- u% N  u6 \4 O
  42.         stbid[18] = '\0';
    ( o6 I  I* w1 R

  43. $ z7 M( E1 w3 i6 q" {8 j! T4 I& V5 s
  44.         return 0;' p* X9 n, I) _. \4 j2 P, i
  45. }8 X/ ^) m7 y: E. _% T, b

  46. " }2 M1 x) e* e+ g4 S! E8 ]4 Q8 S$ E. W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 R6 L. K7 b& i3 }& {+ @
  48. {
      o% P4 H0 q' {8 j
  49.         int fd, ret;
    ( ~; f7 w# H/ ~% o
  50.         e2prom_s_cmd arg;
    ( w4 o) ^2 X0 _8 d3 t2 v
  51.         unsigned char buf[0x18];, V+ c$ {3 W" E

  52. * v% J3 G& c- B$ p8 F7 N- j
  53.         memcpy(buf, mac, 6);, [- |6 _5 K$ w
  54.         memcpy(&buf[6], stbid, 18);
    3 B( V; n/ K4 o4 h, s# t5 |  g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 r+ c3 ~$ c* d% ?
  56.         if (fd  < 0) {: }( }) U6 n2 {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . E- ^3 z0 z9 }( F, A3 J
  58.                 return -1;( v9 T- t7 e6 v& j2 T
  59.         }& H. G" s- M7 m  V/ Y' j" c
  60.         arg.sub_addr_count      = 2;
    2 ?% z# i& e- t% Q  C
  61.         arg.data_count          = 0x18;
    # h! Z7 I9 A/ J" O7 R/ K  f  s/ k
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      v) Q+ x" X% Y* s5 E1 P! m
  63.         arg.e2prom_cmd_data     = buf;
    8 F/ t8 J6 `+ g( Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! {$ @0 [2 N8 m2 ]8 j
  65.         if (ret != 0) {3 `2 \7 @) z* F2 o1 F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * p7 }7 V* \+ x" n: T
  67.                 return -1;
    + w: m0 E+ j* K+ V
  68.         }
    - [( h7 ~- G" ^. \6 k1 C

  69. 2 c6 E$ S) h; A5 ~( c
  70.         return 0;
    5 J  b3 J+ b3 V, t
  71. }* p2 w( p0 ^4 i4 ~8 ]: G" ~
  72. 3 ^4 `* Y2 P3 g" `
  73. int main()
    ; ]2 a3 Z! |8 m& h5 T, u" a8 _
  74. {9 d7 t4 J5 g  h. @% ?: h
  75.         char c;6 ]- D: I+ g" t' m$ u3 v
  76.         int i, macs[6];
    & C' I' j, s( ^4 v  I' `- l; I
  77.         unsigned char mac[6];
    1 [: `. k6 {* P8 r
  78.         unsigned char stbid[256];
    & \% B1 h+ A+ d+ C, l2 C- T  K

  79. 0 J  [2 p% o; b5 y, b
  80.         if (readparam(mac, stbid) < 0)
      U8 N8 r6 z' d2 I# F/ a
  81.                 return 1;
    + r& x! E1 r# Q6 W) x* B. k) j& P
  82. , d3 _  e4 X, R5 j1 ]9 I
  83.         printf("Current parameters: \n");
    ( m1 @- N. j4 `9 S+ j9 h0 X$ C7 G
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) `: q( V5 I# x' a1 |9 W, p8 ~" a& O9 ^5 a
  85.         printf("  STBID: %s\n", stbid);& I6 ]( W3 x. Y" V: a
  86.        
    ( I! D7 t0 E- ]8 Q) ?7 Y1 f- R/ `. P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 A) v+ o+ d- ~0 |5 x% ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ J  o  }* M6 A) U1 ]4 `
  89.                 printf("Input MAC error\n");2 X4 r/ M* w( M, h+ c  G
  90.                 return 1;' H2 v6 c0 {% n9 M( Q
  91.         }1 h: b5 A7 a3 W6 n" k0 K' a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " t- ?0 [( F* R8 e/ h; S& [5 F
  93.         printf("\nPlease input new STBID: ");
    1 G  b# l. i) e) d1 A) }3 \
  94.         scanf("%s", stbid);
    7 o+ s; R4 t. J  {1 {$ i  o9 v# {; N
  95.         if (strlen(stbid) != 18) {
    0 \* p: z: _: [' F: ~% r% Y6 S
  96.                 printf("Invalid stbid\n");
    $ `: y" I% b4 V- V  G8 l
  97.                 return 1;
    : Y5 U# {7 Q& X; ]  E* g% n$ U0 C; ?
  98.         }
    ' C( g& f9 w$ d5 C: z* d
  99.         printf("\nNew parameters: \n");
    # ~  ~& X, \% R7 }4 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' K+ ]  F% @& G9 J
  101.         printf("  STBID: %s\n", stbid);
    3 n4 Y+ [; Z* r3 E8 d# ~

  102. - J% g* d% F$ T% A5 X" d1 W
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 `( J$ G4 t  }: p6 Y5 k: J$ i# f+ p
  104.         for (;;) {& d$ k+ K8 b/ K/ d) D
  105.                 c = getchar();7 Q( c9 y! `4 H* h, i) q; W, B; p4 V
  106.                 if (c == 'y' || c == 'Y')1 X9 x2 d; L6 Z4 _6 J
  107.                         break;
    1 K$ ^; i. G- K/ A/ [
  108.                 if (c == 'n' || c == 'N') {/ U' [4 \* K; w/ h( ]4 S
  109.                         printf("\nAborted.\n");
    4 ^% ^: v8 U+ L% T3 d
  110.                         return 1;, f+ v' r( z1 u7 Q- V# w; e
  111.                 }
    4 I! u) }7 P3 \% X9 t8 h
  112.         }
    " R  z2 ]$ C7 c3 P5 q
  113.         if (writeparam(mac, stbid) == 0) 4 d. w/ b; m% G+ _, p5 U' U3 M
  114.                 printf("Parameters changed.\n");
    9 d+ J5 s0 D6 B8 H
  115. . Q6 ]+ O. l; n' Z! h9 a' W9 t: g
  116.         return 0;# [& _0 {6 G9 }+ b4 g
  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
9 ?0 z. I  R3 \在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" ^* q1 u+ M' E5 q4 o) b. O你用的编译命令行格式是什么?
' w- a5 r/ L, _5 N) r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-8 21:54 , Processed in 0.024026 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表