找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15731|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 L" |- r2 C( Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! j, v0 ]1 x$ a: }6 w: \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 N% s0 i& [2 \! G& V' H$ Zusage: himr <address> <value>. sample: himr 0x80040000 0x08 |1 w; T( I3 {+ z: J
7 f7 u; t3 J6 u+ |& ]" E5 r6 L
6 Q* v0 O& b4 X+ Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?( g5 W$ X9 A* }8 O  T

: i3 P) K+ l) E) [补充内容 (2012-3-8 09:42):
+ E$ V: g1 n( X- Ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 {4 S# ^5 w2 p+ K: j- J2 |1 B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, z+ e8 m' ]' k! Z( L8 `+ ~
1 v# X. W1 |6 j/ [" v* f" q% C0 rhimr <address> <value>. sample: himr 0x80040000 0x0) E4 R5 F$ w; D2 L* w6 r" i0 o
- q; o6 F9 M$ O8 t: ~7 V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' R2 s4 e. X  h1 _( v3 Chimr 0x80040000 0x00/ j8 Y6 ?) q: X- @2 v: e) M) l* U
himr 0x80040001 0x11
, Y  j0 w1 w- g! }( }1 ]himr 0x80040002 0x229 Z$ g8 s' f5 Q: X' x0 A
himr 0x80040003 0x334 M' |. t! z  N7 E7 E, Y7 G
himr 0x80040004 0x44! S" Y  l6 s- A
himr 0x80040005 0x55
! ?) }- G8 }! u( o* P' }" u# J* ?2 }
) x. ]& ~! c& ]7 J  A/ K/ {7 iSN也是类似。
  h% M" J* l( X9 i- x& p+ W* C! s9 y2 e# B# N  g
现在主要是,谁告诉我们MAC和SN的地址?
1 N) O6 T2 x4 z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / K: b8 h) _0 r) X/ F/ F
一直想找到运程修改MAC和SN的办法,苦于无解啊
! K& g5 d) L& ?. a+ G5 W" x2 z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 O0 m: i, o! Z, p/ U  z

- n0 w# P! T% h" Y2 P, |% c修改的代码早有了。到今天不会编译。# v7 Z8 k$ u& G, r6 N$ X2 O4 i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ N" e9 p  W( B! F5 u
  2. #include <malloc.h>  V  ^; u  v& z3 B
  3. #include <sys/types.h>( \8 R1 U2 E& I' O. ^1 X4 Q/ ?
  4. #include <sys/stat.h>- A  q1 h7 T1 Y  p' u
  5. #include <sys/ioctl.h>
    . `! Q1 \' S& [( p( s* Q- ]7 |
  6. #include <stdio.h>
    . U- i& X* E$ T6 Q4 t! Q
  7. #include <string.h>
    ' g' G6 `8 A. _: U0 R5 p9 z

  8. 9 u, i6 t1 f5 b9 C/ g# v
  9. typedef struct {
    ; W  x+ p* V# K: g6 }, L
  10.         unsigned int        e2prom_cmd_sub_addr;& j  K0 F3 U7 y! p5 K) T4 n
  11.         unsigned int        sub_addr_count;
    : {- X0 V' V) {$ ^' ~9 K* d
  12.         unsigned char*        e2prom_cmd_data;
    ) h2 V/ t: I$ Q5 a4 |
  13.         unsigned int        data_count;- K  f( e6 ?5 C/ ?9 \  @
  14. } e2prom_s_cmd;
      h' k$ y' j- a% H" \

  15. % f* N( W' d8 b% P
  16. #define E2PROM_CMD_READ 1* S  D9 i( T8 w( Z# T
  17. #define E2PROM_CMD_WRITE 2
    1 M3 ]. ?& ?* F& Y8 z! h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    6 {" ~# h, R/ ^$ [
  19. % u* n( {0 ~3 {! ~( O9 Y* k% D1 Q: ^
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    3 A7 b5 c+ y- a. N5 O9 V  q
  21. {
    / u# R: a  ?: v% a: o
  22.         int fd, ret;
    . Y2 U! K, N! q
  23.         e2prom_s_cmd arg;# f" J. Y. ?& R
  24.         unsigned char buf[0x18];8 @1 s- n: m- i+ O

  25.   c) n3 `  m5 r2 p; r
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* y+ ~, W" M. B) s: u
  27.         if (fd  < 0) {
    2 j7 i7 k' o8 l/ B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);: h% Y. ]+ U5 d/ a. |4 t4 ?; Z
  29.                 return -1;
      o# q: i6 H# u% e" E% F8 a# N
  30.         }
    6 d3 \2 @- Q& p/ R/ e
  31.         arg.sub_addr_count      = 2;& B. {( b1 x* R, l" g" O& N9 K# P
  32.         arg.data_count          = 0x18;$ g) B: a6 J4 A9 R6 _! x& J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ; I7 I3 @1 u1 ]9 o
  34.         arg.e2prom_cmd_data     = buf;
    % V9 A# ~2 Z& U/ r/ k* q
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 I: H5 U( {" p1 ~' w7 a# ]0 c
  36.         if (ret != 0) {
    8 Z+ v( p0 g0 I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! f8 a  Q! W* n: o
  38.                 return -1;
    # ], M  g% N! ?/ |7 A9 k$ K
  39.         }
    , p5 k& q6 \7 Z' q' A$ A: Q% q% Y
  40.         memcpy(mac, buf, 6);2 u4 l/ X" E5 C
  41.         memcpy(stbid, &buf[6], 18);& T4 C! f; }; Y' Q; g  |2 Z
  42.         stbid[18] = '\0';3 L2 O, o2 s& Y; O. }; J- L

  43. 6 h& r, Z+ Q8 [& w
  44.         return 0;
    8 S5 N4 B2 L! ~5 F
  45. }0 `& r5 p1 Y% e

  46. & T, o& z( ~# J, ]  C" y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 T5 W( e6 I- J. }8 U
  48. {1 ]6 Y3 B) t9 m6 L
  49.         int fd, ret;' h) m/ f* M0 ]/ X
  50.         e2prom_s_cmd arg;7 s% A! E3 O4 y3 Y% j% \& q
  51.         unsigned char buf[0x18];, n8 h3 ]' t) N/ E) U" |
  52. - V0 Y7 U4 u& ]8 }6 U
  53.         memcpy(buf, mac, 6);
    : a  c) G/ p3 D4 q
  54.         memcpy(&buf[6], stbid, 18);* E8 ?' m5 q& f) t9 M4 d7 r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 ?* g- N$ h; B+ k: w9 m
  56.         if (fd  < 0) {
    4 I  h! n+ J; c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: M9 t4 M9 `. S; b7 b
  58.                 return -1;
    ' Q: _. @; n; O' r6 P' Z% O
  59.         }
    6 i) |" Y5 t+ s' s$ ^$ F
  60.         arg.sub_addr_count      = 2;
    . z/ n' y! T$ f9 k) L( d5 {( F* Z
  61.         arg.data_count          = 0x18;* S! t( X* a& s, X7 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 ~5 {; ~9 c+ `
  63.         arg.e2prom_cmd_data     = buf;
    7 N" E, a( c) \  B) @+ s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' ]/ `) L$ t& O! D
  65.         if (ret != 0) {
    . T& k2 Y. G7 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - ]' D. z+ P  t
  67.                 return -1;
    ! {/ E8 Y. e3 @% v, D: p  ]  Y
  68.         }
    2 p" z4 W$ b/ I# b0 K1 ^- w+ f, |
  69. & Y5 F+ K& F* P
  70.         return 0;) {/ Z- a, r9 Y5 `- t9 t6 X
  71. }
    % o" A3 g9 ?: t. W  P

  72. - T: X# v1 o% m& z, H5 H
  73. int main()) O2 y8 H' U: K
  74. {
    - T; }% e3 u- V; w) w
  75.         char c;+ _9 M0 y! D) [
  76.         int i, macs[6];& w) d; J- E8 J  C* e) \' y' h: w
  77.         unsigned char mac[6];
    " e) L8 |# ~" P1 j4 L
  78.         unsigned char stbid[256];% r  m% z! ?7 Q% |
  79. 3 G! X5 X# Z+ s. \) m( j
  80.         if (readparam(mac, stbid) < 0)0 L/ e1 v7 w( @( H; w
  81.                 return 1;& g6 [: B5 P8 V, P6 l' ^6 e$ q8 W

  82. ' J7 O: ^; b! u8 T) \0 l& r3 {
  83.         printf("Current parameters: \n");
    ) b: N$ a+ Y- W' A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# K' o. q* S( u6 T7 U; [
  85.         printf("  STBID: %s\n", stbid);, ?: I2 t/ X5 u. {. h
  86.        
    / Q4 c' A6 @" m3 P' Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    8 P1 L. R; Z' _% r) F% x: u7 {8 \
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. F7 O2 W1 O/ y. D  U/ ^
  89.                 printf("Input MAC error\n");5 T: z; r( C6 |9 S& [
  90.                 return 1;" C. l/ r" Z1 U8 s
  91.         }# @# q, P1 T0 h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 T/ `: F) i: S% D% t# {
  93.         printf("\nPlease input new STBID: ");* N  c! I' X/ H/ l4 K$ K: C
  94.         scanf("%s", stbid);
    ' l1 c7 a3 a- P# j+ n( r' x% J
  95.         if (strlen(stbid) != 18) {& k2 }) I* X8 r. [
  96.                 printf("Invalid stbid\n");0 ]+ J  p- a4 H0 [) z0 W/ x5 u: ?( j
  97.                 return 1;0 k$ s4 v3 d+ ~3 C
  98.         }- K% E0 c$ a" M4 l* a
  99.         printf("\nNew parameters: \n");+ N. J. n1 _: o: x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 j$ a& v$ W) w3 E) i
  101.         printf("  STBID: %s\n", stbid);
    : m! S3 f! j, B
  102. ; B- `% K- k% \/ i: X/ v
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - S- y6 h- i  v3 T8 e, f. A8 G
  104.         for (;;) {
    4 R, T. ~, }+ c0 |4 x
  105.                 c = getchar();4 A: C! D% \$ Y; u) E5 p3 x
  106.                 if (c == 'y' || c == 'Y')0 Q2 x' y# t: W7 Q- t6 D
  107.                         break;
    , K$ {. j, J( Z! I5 a* G
  108.                 if (c == 'n' || c == 'N') {
    / ^! |- A$ b- s3 N! I( T! N
  109.                         printf("\nAborted.\n");/ `. H. L4 V/ n# M
  110.                         return 1;
    / K9 e* N5 v) r* q9 G$ O
  111.                 }
    # s& Y0 ]. p, O
  112.         }; G, W8 x) Z, Y: }7 R5 w' }+ M
  113.         if (writeparam(mac, stbid) == 0)
    3 g2 l8 W3 w) Y0 i  {8 |
  114.                 printf("Parameters changed.\n");
    3 f: W6 m+ E0 Q( t0 Y
  115.   z7 @* [% \8 f- Z
  116.         return 0;
    2 I. C! t% [$ E% ?5 m* L. d! a
  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 * t8 [! O& S3 F1 Q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 I- Y; y. _$ c  @5 }
你用的编译命令行格式是什么?
; p$ w' m6 F* d* u$ |- T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-6 16:18 , Processed in 0.028061 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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