找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15751|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : L. y4 t( B2 {" i* h7 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ j1 I+ ?2 U, G, }$ j( a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ `, U) V/ g, o/ u0 R$ c5 p
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 s/ K3 ]* C5 S: ~" P
" ?; ~" _& S" d5 W
5 H& ~& R" |! U+ z- f不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" B$ ^: D" Z# y2 I4 m; |+ H, d! h' Q$ f1 p
补充内容 (2012-3-8 09:42):' Z4 q5 N# a5 Z& T/ E
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' g# T6 y, R# W, o" B1 p4 ^7 v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( v, ^3 z+ t0 o4 k% g
# Q- }& F5 Y9 P. Y" d( E, N6 ?
himr <address> <value>. sample: himr 0x80040000 0x0) K% b/ e/ a6 v
" d) B0 x% G! J8 B5 u
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 N; G+ H0 d3 i4 X, ~5 Nhimr 0x80040000 0x00% M$ n1 T/ L9 n; k
himr 0x80040001 0x11
8 q$ {: P" N7 F* V- \$ L) Q% fhimr 0x80040002 0x22
) I0 [) [& v( ]; S1 ]  A5 V5 P. {himr 0x80040003 0x33
$ m/ |' e( n# `: f- Hhimr 0x80040004 0x44  I+ U1 Z( l1 p# H( ~) b: W1 @  s
himr 0x80040005 0x55( x8 S9 E- ?! p- u

+ P' R5 s( ^5 i1 t- A" u6 D% dSN也是类似。# D6 e4 d4 B4 ^- [& V" P+ Z6 s! C

( s$ w$ s% x( V8 g现在主要是,谁告诉我们MAC和SN的地址?9 R+ |# r2 ^! M$ D& p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& O* A. d8 s/ F7 R" {3 L8 O  I% g一直想找到运程修改MAC和SN的办法,苦于无解啊

+ w+ h& X, H5 @  J# o: d; u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: ?. E: @6 f- y7 F+ z* C) A3 Z) z3 b7 v8 f# r
修改的代码早有了。到今天不会编译。; J0 g# n, ^! {0 r$ g# i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 m* U2 e+ N8 f  T
  2. #include <malloc.h>
    . z2 q, Z- Y) H% |9 f3 H
  3. #include <sys/types.h>
    6 T) k* t( D- f; \
  4. #include <sys/stat.h>
    3 Y* A- @4 }1 k# }
  5. #include <sys/ioctl.h>: o* D3 s# |0 K1 `) y% N3 }& o" x2 B
  6. #include <stdio.h>% d6 O8 \4 R  T3 i6 g
  7. #include <string.h>
    & {# \/ k9 O# l8 ]& R

  8. ( D$ q5 w9 v! O" d# `
  9. typedef struct {
    / `. I9 w0 j2 u
  10.         unsigned int        e2prom_cmd_sub_addr;
    . j% @( }. H$ A: S" d
  11.         unsigned int        sub_addr_count;* }( C! V/ O$ ^: n# t2 k: g
  12.         unsigned char*        e2prom_cmd_data;6 o1 `# H- Q' \
  13.         unsigned int        data_count;" n9 W& a, U* ~+ B, ?
  14. } e2prom_s_cmd;
    & E, W3 |/ u* _" ]* R

  15. 4 j* I! N; M# K& U
  16. #define E2PROM_CMD_READ 15 v) Z6 k# v( l
  17. #define E2PROM_CMD_WRITE 2
    - H. |/ G7 C1 Q3 D( m5 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- R0 b5 ^$ M: K* B
  19. ' {  n) E2 x0 T- t# |  ^; Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& \/ R9 V# w! b* q6 T/ W4 N$ R$ a
  21. {/ O0 J# K1 d3 S# R2 x# f* \
  22.         int fd, ret;) Y1 t1 ?: r7 @# }4 \' N
  23.         e2prom_s_cmd arg;2 ~; a, s! A- @( K% J( u5 |
  24.         unsigned char buf[0x18];) ~$ E! V2 A$ t! m: M

  25. ( y4 F( O6 c# G, `# a  ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# u  \) y, k$ E
  27.         if (fd  < 0) {) L% C) \+ k+ D  }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & B' r- I2 K- `. G$ W
  29.                 return -1;
    & c9 e, `1 B$ |! D% H( W
  30.         }4 ?7 ~: f% `9 ~7 H
  31.         arg.sub_addr_count      = 2;2 t; t  ?$ R8 t# y
  32.         arg.data_count          = 0x18;9 \" l6 P# g- v& ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 N' N2 m8 I0 o4 a
  34.         arg.e2prom_cmd_data     = buf;# u4 L4 _& `; b3 A* s) F  ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 q4 d# m+ E/ V1 Y& l4 }( I9 `
  36.         if (ret != 0) {8 ~# j" @# N, Q2 B- @! ?; K- ?$ P9 L1 y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 q2 ^. R& M4 i' ]
  38.                 return -1;
    1 h: \% S  d4 S3 `1 a5 t  N
  39.         }3 i4 @! Z7 N) z: H4 R
  40.         memcpy(mac, buf, 6);5 A& w" p- F6 R0 q+ Z# w# F# U- q
  41.         memcpy(stbid, &buf[6], 18);
    7 z& ^, O' W' r: q$ s
  42.         stbid[18] = '\0';
    7 |1 j2 y  i) L5 U# R: \9 ?' R

  43. % U! G! F  q6 W0 H. \3 H" D, e
  44.         return 0;6 B3 H3 [" K9 |" n
  45. }' k. `3 H: u; X) h5 w% L- \: E& ?3 s
  46. ) X+ L. ?$ T, y; H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' E/ S5 d7 h+ ]+ ]
  48. {
    , l7 |1 ^$ N9 t# r
  49.         int fd, ret;
    , h( n' f( `# P! v, K2 g, F; W
  50.         e2prom_s_cmd arg;
    8 O  h( a$ Q8 f1 v6 d% k
  51.         unsigned char buf[0x18];3 X4 \8 ^5 d8 E
  52. - ?* z9 |4 f8 @) o
  53.         memcpy(buf, mac, 6);  Z! i2 v5 w5 P: A" k
  54.         memcpy(&buf[6], stbid, 18);
    ) n: o/ `) i5 k% s- @1 Z, Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 p, F' T& D: M1 ^
  56.         if (fd  < 0) {. z& F% G, X2 g0 G6 Y$ F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * |$ ^, X# B5 `' J( f& e
  58.                 return -1;8 b# ]$ v( B# [- Q1 }' [5 Q7 e
  59.         }' B/ {/ l0 U* }+ u- v- `' U% H
  60.         arg.sub_addr_count      = 2;
    + m! E. D2 }1 E# {/ Y2 ~) m: q
  61.         arg.data_count          = 0x18;- l9 ~1 T9 y9 E2 R3 |9 V$ ]% N
  62.         arg.e2prom_cmd_sub_addr = 0x290;* Q8 v/ A& o; J" \6 c5 u( {/ u6 L
  63.         arg.e2prom_cmd_data     = buf;
    % ?( s0 f; A4 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 f( v- e# B8 G! Y# }( ^$ G3 @
  65.         if (ret != 0) {! H/ w/ s6 y6 T- d! s( U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    , W! g! `0 Q+ A, @9 h
  67.                 return -1;
    & _8 w; s6 q7 A2 B# O
  68.         }
    ; U% j4 K4 ]/ s& _9 `" _/ b
  69. / q( r( @, x, }7 u1 Z
  70.         return 0;* }+ T. w" k1 ?
  71. }4 F- s" y! ~2 e' E$ u
  72. ; k% x; L7 p( C" l3 G" |
  73. int main()8 x. L2 u2 W5 w! ]) y; Q/ o2 w
  74. {
    ( t/ u+ i  ?& h& t- |, o5 W# K
  75.         char c;
    . H4 t  Y+ [8 A, K9 i
  76.         int i, macs[6];- y( q. P- s1 D
  77.         unsigned char mac[6];
    7 z9 V3 D2 d& [1 g) V; X# q# v
  78.         unsigned char stbid[256];# C0 y, k- ]6 l, [9 R/ ?
  79. , _; F/ E7 q  D5 @
  80.         if (readparam(mac, stbid) < 0)7 P% K  b1 X; W/ C) u' n
  81.                 return 1;
    5 C8 W" w9 o" O

  82. ! d" R5 W) |) A* E6 J# T4 j
  83.         printf("Current parameters: \n");+ Z1 x! h$ P, z3 Q, W! P
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' R+ f# H6 }4 Z
  85.         printf("  STBID: %s\n", stbid);# e& X5 U1 N# L2 T
  86.         ! f' o/ ]( O3 l) X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. Q' `8 K5 w( n8 t7 h, h  ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( [. |. Z" k) B* v. F! x- k
  89.                 printf("Input MAC error\n");
    ! C6 Y( q8 p6 o& q1 P
  90.                 return 1;
    ) K9 i7 {1 A+ j3 R
  91.         }
    ! w6 s" o% ~3 e/ E% A7 F9 t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];: ]$ T! ?* ]+ p( L, z2 ?6 r
  93.         printf("\nPlease input new STBID: ");2 \& a4 n% |% c# f% G2 w* i
  94.         scanf("%s", stbid);
    . {0 ?9 u9 X. B3 O5 ?7 n2 F
  95.         if (strlen(stbid) != 18) {2 f+ @' L, o* s& a# j0 \8 w. X9 |
  96.                 printf("Invalid stbid\n");
    $ n4 z. X$ L- v
  97.                 return 1;
    ! n/ M$ `" y# B5 Y( p3 n" ^+ m" V
  98.         }" E. V/ w$ K: f: E8 p4 m
  99.         printf("\nNew parameters: \n");
    1 T  s4 f, c& i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; ]/ @1 g0 s7 M  F- ~! l( B  V9 q
  101.         printf("  STBID: %s\n", stbid);+ j# f, ~: R: z& ~" T
  102. 0 A" m+ G# c3 P! t5 ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 @7 q2 R5 _. M1 N! h
  104.         for (;;) {* F* F" E4 ~2 e& e+ f7 a* {
  105.                 c = getchar();# T- M& Y+ u0 Y, L/ t$ o
  106.                 if (c == 'y' || c == 'Y')
    9 l- q/ J/ l! t& V! c
  107.                         break;
    ) ~  Q6 q& v. G
  108.                 if (c == 'n' || c == 'N') {
    - i$ u7 E  q; J! w4 ^
  109.                         printf("\nAborted.\n");. U5 z+ p4 O$ K2 K
  110.                         return 1;
    0 Q( d! F& c5 q! c+ S& |
  111.                 }
    1 W4 q2 L1 ?8 p1 K8 |) C+ l. |
  112.         }
    2 a" P# t. m/ `- h! B7 F/ N, E  j! m
  113.         if (writeparam(mac, stbid) == 0) ! G" m: n% e& A2 }8 A- V% U9 A3 a
  114.                 printf("Parameters changed.\n");
    7 x3 x0 t+ ~$ l  O# }5 Q* F
  115. ) o$ M- [0 B7 E5 M
  116.         return 0;
    : k6 F5 G0 W; t9 f0 h4 Q
  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 S3 }- M' E4 s, C9 y* s在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 F/ U! _- ?( X. C9 U7 i! n, X( b
你用的编译命令行格式是什么?
6 g" L' v) F% O$ Z- C
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-9 10:39 , Processed in 0.089863 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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