找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15735|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 w7 x9 x  z; D, W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) e) l7 F3 I* i2 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) d) d: I2 b0 _
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 j- \% l6 t4 `* p+ X- _& N& [- C2 `  z- G* c

0 I5 \$ Q# [9 N1 I# T$ x不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 d* b% J7 |' n0 D( Z( A# \! ~9 o
1 z) ?( ]( C0 C
补充内容 (2012-3-8 09:42):
2 z& X) O% z& A5 f2 M4 N. e0 p% \http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 K+ [; o) d# U9 R$ A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" ?+ E6 ?2 f2 \# T
3 ]; G* x) P6 [& d
himr <address> <value>. sample: himr 0x80040000 0x0
. c7 c" h/ L# s" I4 x
+ O" k" A6 y8 b& d% l/ x" I7 i+ i例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ x# J. P# e5 r( P$ q6 q  ohimr 0x80040000 0x00: S# Y' F5 a- R( A; r
himr 0x80040001 0x11
: ~' R; b4 t! K5 Fhimr 0x80040002 0x22: g$ y/ s6 W* W% x: O& I( o) b
himr 0x80040003 0x33
8 @: d+ l. `% z8 L- @( u$ R% ?himr 0x80040004 0x44% D6 j7 p  ?' P) e) _
himr 0x80040005 0x55& J* t; C) P9 c  n  ~' q
4 D3 h2 r& `" G9 {4 ~
SN也是类似。
; @/ d- ?7 u" K2 E2 U6 R/ b  E6 B- _- I! j3 O$ |9 u
现在主要是,谁告诉我们MAC和SN的地址?3 r5 d# n, ^: d# }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . [9 K! ~7 z. T$ o
一直想找到运程修改MAC和SN的办法,苦于无解啊

  `/ W' ]: I* z: x' R" C源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / ~( O) L  ^4 O

6 d! ^$ C) f! I. a) k修改的代码早有了。到今天不会编译。
. G) T9 R$ c( n1 ~; i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * c' T( N. E1 c* O3 P
  2. #include <malloc.h>" G' s! v, w" ?& C2 r& ~: a( w
  3. #include <sys/types.h>9 Q( r6 e* U  }0 C
  4. #include <sys/stat.h>, n  p2 @8 z0 ]8 [( `& C. ?
  5. #include <sys/ioctl.h># T0 U5 f, ]4 U. x
  6. #include <stdio.h>" z! _/ O' D2 L7 e' U
  7. #include <string.h>3 f) X% n. ]/ E
  8. 8 S4 u& z  O! C; x: T- ?0 ^. E
  9. typedef struct {3 _% W7 s7 y* |) E7 Q8 A
  10.         unsigned int        e2prom_cmd_sub_addr;5 Z0 d" Y* U1 y/ n/ I/ i; u
  11.         unsigned int        sub_addr_count;
    , E: p0 m$ i# }$ P1 I. D; k
  12.         unsigned char*        e2prom_cmd_data;
    , F& B# ~, T6 W8 d4 P
  13.         unsigned int        data_count;8 _2 w+ t" K5 `# n2 Y
  14. } e2prom_s_cmd;; Z$ U) E( ]' D5 X6 k
  15. : C* W/ X- [% x$ H7 s8 @& K6 V# K/ q
  16. #define E2PROM_CMD_READ 1
    " q. j+ R6 k8 e2 M  ]+ [
  17. #define E2PROM_CMD_WRITE 2
    , H9 Y/ v8 U, F. l9 C$ b: `  J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% U4 W& X5 V( L7 K. ~* i: v- b
  19. + ?7 ^5 ]  |! \! }2 Z5 h
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - R. F8 k& d3 G& B
  21. {
    " A$ E) d( U, x0 u5 W3 K
  22.         int fd, ret;
      g3 D+ H( r4 v2 J: ?
  23.         e2prom_s_cmd arg;
    , S0 w7 T5 G# f& N4 Y7 e- V
  24.         unsigned char buf[0x18];
    + i$ [) h9 \( `5 y( N. W

  25. + _2 j1 F. r2 d9 ]; _/ f; b+ y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  I& \! n) ~0 ?- O0 n% G
  27.         if (fd  < 0) {- M# J) [! y0 w8 ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 t: b$ G: D7 q
  29.                 return -1;
    ( b; }! H( T" w  H5 Q
  30.         }
    4 i2 h( ]3 [. f4 G: h3 ^/ F  n7 M
  31.         arg.sub_addr_count      = 2;
    , s* P" k8 ?+ H. T
  32.         arg.data_count          = 0x18;
    8 I. p5 F+ F* O  u7 d* I1 U
  33.         arg.e2prom_cmd_sub_addr = 0x290;1 p/ m% |, G7 }3 X
  34.         arg.e2prom_cmd_data     = buf;
    9 n3 `0 `' ]! j# @$ a( i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ g, z' B; V/ ]: _# g% g
  36.         if (ret != 0) {2 V8 x; N( ^1 d6 `2 N. o* m, e2 ^* o9 f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! h1 P; s7 ?- d9 k. K
  38.                 return -1;
      l; u+ ?: V# L7 L0 U, ?1 l( {
  39.         }
    : l1 W; y6 z) M& G
  40.         memcpy(mac, buf, 6);
    * Q7 z6 P: z6 x+ n2 ]# D' D- k9 \
  41.         memcpy(stbid, &buf[6], 18);
    5 |6 l, _: s& y: B- h6 P
  42.         stbid[18] = '\0';4 q, J! f! c: O

  43. 8 F. S: R/ \0 G$ v0 }
  44.         return 0;+ \7 z0 p1 I. c, s9 X. ?" \
  45. }& {# h$ c' w2 f( v5 O; N( q5 K; ?
  46. ( ?+ A. b7 p9 Z% a9 P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 B( N. x3 R! T: r7 R) P, |
  48. {: ]) i* _/ q- f! ]; {
  49.         int fd, ret;
    " [5 X& k; d$ D5 j2 j: w" K  Q
  50.         e2prom_s_cmd arg;) h! M% ~! D" h
  51.         unsigned char buf[0x18];
    % `& u. G& r: u4 G! K4 L' u

  52. ! [6 e% M# J+ n  s
  53.         memcpy(buf, mac, 6);
    9 T0 f  J  S, b  n1 r1 ?$ A5 |& j( p
  54.         memcpy(&buf[6], stbid, 18);
    3 _$ H  Y# k! J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) x, T5 r! |& s3 Y% L* M+ C
  56.         if (fd  < 0) {
    / N5 B9 D0 Q# N2 i3 b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ |8 U  b& G* S& d; I1 l8 d, g1 ]
  58.                 return -1;3 [$ A( t8 A. v# y9 w; B5 V- y6 M  I
  59.         }; k! R! k  w. N8 M  Q
  60.         arg.sub_addr_count      = 2;3 v) C) c2 G  [! F# Q) `
  61.         arg.data_count          = 0x18;
    ; r' e" [6 w7 _8 k# [7 A
  62.         arg.e2prom_cmd_sub_addr = 0x290;8 Y8 Y3 M. ~2 r2 q
  63.         arg.e2prom_cmd_data     = buf;
      b- m9 E% Q& I. ?/ t- o' j+ p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " I* d/ Z! r; ^5 A0 x, S" a: }
  65.         if (ret != 0) {" I' T$ K$ K% ?' z/ t. [! G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 |9 u# o& F  |# N1 T% h2 E: S
  67.                 return -1;
      B3 n. H. x* g" c1 C4 g: w+ x
  68.         }7 V+ S) t, Q, _: U: E- K
  69. " o* y$ h1 }5 E7 U4 h
  70.         return 0;
    9 E, b( M/ v$ w1 P  F  a
  71. }: q0 ~1 q6 [' `; M2 d
  72. * f, p" [: _5 w
  73. int main()
    0 m. \: ?8 {  i- X1 y
  74. {5 M6 b6 b7 J  _# {6 J9 m
  75.         char c;
    8 q7 ?+ l9 {4 z+ v/ Q  }8 U2 l
  76.         int i, macs[6];
    ; f0 y) i, [1 |& m
  77.         unsigned char mac[6];  r6 R9 e! I0 A' a/ a: X
  78.         unsigned char stbid[256];% |* ~. m6 {- X% [* @' P/ l. \! r5 w
  79. 4 o, t/ r& I. R9 S! d
  80.         if (readparam(mac, stbid) < 0)
    # y4 F/ H( P! s
  81.                 return 1;; |/ r3 q' w4 k+ f
  82. " S" k- L) u5 D0 t
  83.         printf("Current parameters: \n");
    6 r+ y7 r# w3 ?* `9 j8 X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 ^# @( K. r* D
  85.         printf("  STBID: %s\n", stbid);  t5 Q/ m7 `) G& W* T
  86.         3 Q# k  f' r  e+ i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 r/ o3 r7 J$ R2 n/ ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / S  Z, m& d# z6 @
  89.                 printf("Input MAC error\n");
    " J  t, Z1 j/ i' w, W
  90.                 return 1;
    5 b9 d8 k( b9 _$ c; E  w. F' Y% _
  91.         }, \8 q& \; u5 e% T/ s: Y& l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - d4 f/ A: O# {1 C. t5 W
  93.         printf("\nPlease input new STBID: ");( V' O+ \2 L; y
  94.         scanf("%s", stbid);* [, U0 a* m7 C9 ?+ q" E
  95.         if (strlen(stbid) != 18) {, n) A7 C% J6 P# r+ i' W
  96.                 printf("Invalid stbid\n");
    9 c6 \5 b+ Z; X8 f. g
  97.                 return 1;
    3 N' g# x1 e1 ^5 x* O& N0 Q) k
  98.         }, U; U  Q/ @1 w7 Q0 v( t
  99.         printf("\nNew parameters: \n");
    / f: E- Y6 k; n; k
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + Q3 Y8 c. Z2 F8 P" F- B" g
  101.         printf("  STBID: %s\n", stbid);
    * b0 p5 L' V6 b' ^4 Y

  102. 5 A, `6 l! a$ f) i! g0 }
  103.         printf("\nDo you want to change paramemters? (y/N) ");* G& d/ J, b5 a0 z( R
  104.         for (;;) {
    : l5 H5 S2 Y( [' e
  105.                 c = getchar();
      M1 S$ L0 y- G  c, g  R
  106.                 if (c == 'y' || c == 'Y')! l/ @; [( E2 S; `2 W
  107.                         break;
    / ^9 S, J1 j( ]- p" E
  108.                 if (c == 'n' || c == 'N') {
    ; _0 W2 L+ o& d5 @) a$ X
  109.                         printf("\nAborted.\n");$ w& o6 E' e* ^1 n+ w5 F
  110.                         return 1;9 P+ J2 _1 h" n' F( j
  111.                 }
    - B- n" ~* X6 i3 I# \
  112.         }2 D% B' @; N6 A: z) ~) |
  113.         if (writeparam(mac, stbid) == 0) 5 H) B5 A$ M6 A& Y. l9 R
  114.                 printf("Parameters changed.\n");) k) q- I' w( c$ |) l9 L& I0 |: Z0 U; a

  115. 8 v3 X; b2 }0 J' `' m5 c
  116.         return 0;
    - L. e0 ]( B3 {7 }: Y6 t
  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 _- V( ?0 A8 M- n9 B6 U' o
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ j: Q2 G( V* J0 l! Q$ n6 \你用的编译命令行格式是什么?! S6 ^6 Q6 l9 q" Q- Y& I
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-7 05:40 , Processed in 0.031503 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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