找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15258|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# \- K7 K' b; j# I( K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 ?  c3 C0 c5 h: b! P" O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- Y4 E# m/ J2 k: g- j
usage: himr <address> <value>. sample: himr 0x80040000 0x04 F- F% \8 r; S3 _  r$ _
) i8 j, C; H! ~$ S; e

& O1 a! R1 T) w1 T不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 U0 X, U/ a1 \
3 N, x) `8 Y% _) g4 y
补充内容 (2012-3-8 09:42):* `/ h% u5 J8 [( I  T. g
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 k5 c- X7 @! ~+ Q
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 Q) v7 \: w" n5 t- K1 o3 S' s* U5 i3 |3 X% N5 p5 Y! f: x
himr <address> <value>. sample: himr 0x80040000 0x03 `  D$ g  X( E& o
2 V( j5 M! F$ [' O- }: T4 {- T
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 E7 I8 A6 f7 ]
himr 0x80040000 0x00
8 F& b2 V6 W* B! b! H7 Jhimr 0x80040001 0x11
) v* R0 M) Q% h- u$ Zhimr 0x80040002 0x22
, e9 A2 t; B; L5 z/ c- Zhimr 0x80040003 0x33
1 c4 e- Q& P# S* U9 r$ q) Chimr 0x80040004 0x44
$ @; F; W; U" h. k: ]himr 0x80040005 0x55$ {# H, m" g& z, l9 O
, ]" h. W1 O1 U" o
SN也是类似。
' r. s! B- G( m# n- l0 i
( z: ]  a. C5 v) b现在主要是,谁告诉我们MAC和SN的地址?5 c0 C* n- l2 O: o! d4 M5 ^
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 " @* Z4 n& p: J* A6 {. e
一直想找到运程修改MAC和SN的办法,苦于无解啊

1 M5 U/ t4 Y5 V3 W源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
6 P: @% A+ G- Q9 g% N
6 I* J0 O& |  v修改的代码早有了。到今天不会编译。/ }: o% _5 b6 `( p8 P6 X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 V  e+ u/ z: z5 X! p
  2. #include <malloc.h>( }5 v, R6 r8 H+ {! h4 @- u3 Z' I0 L5 a) H
  3. #include <sys/types.h>( R9 P8 s! h# b
  4. #include <sys/stat.h>
    6 h  I: S5 {$ q, b
  5. #include <sys/ioctl.h>
    & r  t, q. c1 Q* q. v
  6. #include <stdio.h>
    , f7 C8 G. c9 c5 }, [
  7. #include <string.h>
    & i0 Z+ z' f) r+ c; H

  8. / s, h0 ]5 J2 d- {& d5 M" y
  9. typedef struct {
      M( p' j9 Y. |: E0 v
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 [6 B8 n5 V  f4 p$ F0 {
  11.         unsigned int        sub_addr_count;
    8 @  k* c: h/ c/ ?& \2 Y
  12.         unsigned char*        e2prom_cmd_data;
    ) [* w: D2 Q) z6 y' o
  13.         unsigned int        data_count;" ?( U+ b2 y: ^$ T) o- d
  14. } e2prom_s_cmd;2 e7 g( I  }0 v4 }3 r$ v
  15. 3 Y. d# M- E5 r9 f. b( A
  16. #define E2PROM_CMD_READ 1
    ) T+ c9 w& V7 W9 U: I7 q  X
  17. #define E2PROM_CMD_WRITE 2& ?$ E1 H% T( D6 l( }2 c5 q8 l/ u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      I. \+ I3 e' x* S4 A

  19. 9 b+ a0 F2 _6 W, S0 o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ L3 I4 O9 w2 r# e2 {9 i
  21. {1 \3 R+ v% v+ ]0 H
  22.         int fd, ret;
    : u  v* ~5 D; F$ c
  23.         e2prom_s_cmd arg;
    # V9 L& d! q% p" p" ~6 b
  24.         unsigned char buf[0x18];( c' f1 Y0 I: |, y
  25. 4 l0 j2 o3 Z5 T" Z# Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    # B. I$ K" Q  i5 p$ S/ K
  27.         if (fd  < 0) {. T" Y* F/ Z6 O% o: d  P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 _; P- r5 @- @/ Q
  29.                 return -1;
    : f% {$ w' p; ~. B+ c7 R# Q
  30.         }* d7 r( y: l% ^" ^. ^: G
  31.         arg.sub_addr_count      = 2;7 ~7 {" t8 o; @. m9 I
  32.         arg.data_count          = 0x18;
    $ a* F+ j3 x9 |" @* b
  33.         arg.e2prom_cmd_sub_addr = 0x290;. \& m5 \) ?- J- y1 X% j
  34.         arg.e2prom_cmd_data     = buf;4 H5 g3 C9 D! a; |4 ]9 ]( m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' c4 L; s9 {+ k, V% {0 p
  36.         if (ret != 0) {
    ' d+ s" z  N2 l: J' Z- c0 C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 q8 }, T7 y+ X& P; `% E
  38.                 return -1;
    % Z4 i/ E. z/ Q3 b  E
  39.         }
    + n" ]5 K5 I/ l5 P5 o( E0 y
  40.         memcpy(mac, buf, 6);
    4 C: G: [' r1 s( Y
  41.         memcpy(stbid, &buf[6], 18);* j0 V4 {0 M8 l: I9 Q6 j
  42.         stbid[18] = '\0';6 V* K+ W- {0 X6 d. Q( `! ]+ Z

  43. 3 ]) {; j" A& Y+ L( a8 J
  44.         return 0;' S2 ?# N4 m* T; }& R) s( L
  45. }
    2 W7 Q0 y7 {* y" O7 G: L

  46. / {1 C: ]2 @) p! R$ H) K  l! b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( Y/ p8 @" H4 X$ R3 ]7 `2 m
  48. {$ L0 @: w' x% t. D
  49.         int fd, ret;
    5 W: r3 C# x1 }% t$ s
  50.         e2prom_s_cmd arg;
    : v6 d2 `1 G. |& O6 r) {+ d. }
  51.         unsigned char buf[0x18];0 }0 s1 o0 D- c% K- v6 F0 S: P, f

  52. 3 I2 L% t0 i6 b  |3 D; A, H
  53.         memcpy(buf, mac, 6);8 K& E' K+ y. P1 `
  54.         memcpy(&buf[6], stbid, 18);" o4 c/ J$ |4 p7 E: d' ]$ _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 ]" i  v* Y  ^& e9 y/ \- u
  56.         if (fd  < 0) {
    + Y2 F7 I6 R6 [+ e, P! u! w0 n5 N3 |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' v8 Z/ r  O: t$ A  E, }
  58.                 return -1;3 a! P; B  M) V& [
  59.         }
    & I3 m! t! w$ t5 A! t1 e8 {3 i
  60.         arg.sub_addr_count      = 2;7 K( {& F; ^+ ~; {. b+ S
  61.         arg.data_count          = 0x18;, F, b/ I! F& l4 Z7 f6 L
  62.         arg.e2prom_cmd_sub_addr = 0x290;. T- Y9 u4 r$ T" z& n$ {% B
  63.         arg.e2prom_cmd_data     = buf;( W+ e* C9 B8 G9 Z8 W/ I; {, L
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / ?+ z% D1 n: T7 L
  65.         if (ret != 0) {
    ! o; f5 n: J3 F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " Q; F* |  \; }. t
  67.                 return -1;1 `4 h) [5 W; L( x( \3 \
  68.         }  `: m! f) f1 J

  69. % C( |# \: F6 n! B+ V; K
  70.         return 0;
    & j1 d7 Q8 T, k% ^) q& O3 @
  71. }" a% t0 d2 Q# w. J' H
  72. 8 r+ V! E$ t) `& b( H2 w
  73. int main()
    ' P# Z- w# w3 Z4 h
  74. {& y! n# J" V* j
  75.         char c;
    0 Z1 k' _  l5 o: n
  76.         int i, macs[6];! L) \2 y: }5 |8 ]
  77.         unsigned char mac[6];+ H) d; \7 i4 G; l( g9 H
  78.         unsigned char stbid[256];/ O, _% _( y+ @8 N/ e5 t

  79.   |% q$ _) c( L5 R
  80.         if (readparam(mac, stbid) < 0)4 s% e- S: t: B& @7 B/ {: x1 j
  81.                 return 1;
    9 m7 o9 i2 b- Z1 ]! e
  82. - q1 u! G8 ?9 J5 q* d0 ~: V, b/ z5 }7 h
  83.         printf("Current parameters: \n");$ G; I; h  w/ X0 D! j+ f( H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# h& W; P) a7 O3 l
  85.         printf("  STBID: %s\n", stbid);5 M: T( @5 f2 {- \/ J8 B
  86.         " u+ V# Q# y" A. y! s1 D( ^; A; g/ q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 h+ h( f5 |0 S+ B& D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    # X( h2 s: _& c  ]
  89.                 printf("Input MAC error\n");
    / }/ Z  X6 @9 V+ b; p4 }
  90.                 return 1;
    3 b" L" D; a1 h0 \
  91.         }  M* A1 F. z, _8 k% Z8 s# f% Y$ |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * ]/ n) L; q/ D0 q& }! A; Y
  93.         printf("\nPlease input new STBID: ");7 O$ g- R; m5 X; B
  94.         scanf("%s", stbid);  D( ?" ^; u$ m" ]  j
  95.         if (strlen(stbid) != 18) {: D1 h$ f, W9 F
  96.                 printf("Invalid stbid\n");8 P$ I2 y* ]) W  Y
  97.                 return 1;
    % X8 U- U* n$ q  M5 i
  98.         }
    # V8 H$ [( y- c( Z
  99.         printf("\nNew parameters: \n");) M0 L3 @/ i% k! Y5 w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& Q* D+ w* y4 S$ ~6 X' x% F
  101.         printf("  STBID: %s\n", stbid);
    1 w" {" }6 M6 g: \' u7 Z5 a; P* M+ @& ~

  102. - s: ]  u, K2 V4 U0 Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ! G& O/ B  ^; s) P) u* @/ b# O
  104.         for (;;) {) U) e0 O$ }9 J$ L* X; o6 Y0 X' I; t
  105.                 c = getchar();% c+ n) w, K. y% v" `0 f
  106.                 if (c == 'y' || c == 'Y')
    % e$ s0 w! a% d+ D' B
  107.                         break;! i. Z) m: y" H7 i/ r
  108.                 if (c == 'n' || c == 'N') {1 N% H! R& p3 A* M
  109.                         printf("\nAborted.\n");+ R0 n8 `2 v) n( S' R
  110.                         return 1;
    : u! x+ `- e, Z& ^5 o( Y$ s
  111.                 }6 E$ [) l( \+ y- j
  112.         }* j. X  r1 x, o: t. g) x2 b
  113.         if (writeparam(mac, stbid) == 0)
    2 Z; O0 \, K4 h
  114.                 printf("Parameters changed.\n");
    ( ~/ v: W9 G8 f. ^7 [
  115. 5 |+ ~$ K' |4 K* G+ q. _. M' }* x
  116.         return 0;5 q# j8 O# C/ m9 b) g. _* 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 E0 M4 `( O: p9 j- n: i8 p; J  J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; h! B6 P& s/ |% i) A你用的编译命令行格式是什么?
0 R, [: r9 u# h" S. p7 M% z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-13 17:16 , Processed in 0.032525 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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