找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15696|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr8 f: o; B8 A. v  a3 q3 R6 }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 ~. o5 ^1 _' B: X3 W  R$ n
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; y' |$ K9 `7 r' @# B! a: ?9 ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  x& |( b2 M) Q# {7 c
: t9 L/ k4 I9 @& l! F: D
0 W8 H- {  D' g6 T1 b7 d" P+ q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( _7 }# z' H- ?
+ p0 f' R2 S. t4 X* |补充内容 (2012-3-8 09:42):
; A. \! k: t" C5 D7 Nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ |5 C7 |0 m) X. @9 Y+ v7 h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 N, R1 L. d7 h7 T" Q
; U) A0 d- z0 g2 w, i+ p$ H. J" Ehimr <address> <value>. sample: himr 0x80040000 0x08 p/ q- l% H! M/ i

* R+ u. ]3 a  V2 q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
0 g3 W/ F; x8 n& F/ |himr 0x80040000 0x00
* v1 M; p3 D  k) N, Ahimr 0x80040001 0x11; `3 ^9 P" `5 b8 F4 B+ \
himr 0x80040002 0x22
( l; q& b  ^2 ^# \7 _5 Vhimr 0x80040003 0x33% y$ o9 g1 ?  Z+ @  L; U) l
himr 0x80040004 0x44
5 D6 X9 D, G: y, u* y0 ^$ D2 hhimr 0x80040005 0x55
6 ]  N) d% j& Z( @* `7 B( d
( B0 e; {/ `! B3 D0 \! g; WSN也是类似。
- a& q3 q4 M* Z  u3 e0 G3 K
  T) r! p# a) ^现在主要是,谁告诉我们MAC和SN的地址?
7 y2 ]' `4 v( `4 @3 y7 _0 k9 I7 F
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) J; z% j! d, I0 H3 A- @一直想找到运程修改MAC和SN的办法,苦于无解啊

3 C7 x2 O4 l; i源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( @! V$ x7 Z8 L6 I& }
: m4 A& m  o: ~" p  r9 ?: z
修改的代码早有了。到今天不会编译。
" N. j; X6 z+ ?8 l/ N- D+ z2 I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: l6 r/ C  n7 _$ N- C1 `! u' X
  2. #include <malloc.h>6 S( E7 K7 S$ [) s; F$ o
  3. #include <sys/types.h>+ r$ }: l, B3 C( d1 `* ^6 x
  4. #include <sys/stat.h>
    6 d( k1 G- E3 v4 u$ Z. R) B
  5. #include <sys/ioctl.h>
    : V) W) ~$ _6 {- b7 k# s3 C9 E
  6. #include <stdio.h>( U* {, @5 z! Z! P
  7. #include <string.h>
    ! p6 f" C4 v& p+ O) K9 }& y+ ]

  8. + J' r" D/ @! c# _. ?# I- i: I
  9. typedef struct {; L; m% a: T# F: P8 c( d" h! L
  10.         unsigned int        e2prom_cmd_sub_addr;
    ! {! k- O8 G! e) Y2 i
  11.         unsigned int        sub_addr_count;. |$ ^; a! J$ l0 r# t4 |$ l( G9 W
  12.         unsigned char*        e2prom_cmd_data;, M: p1 j( M) Y# u( K
  13.         unsigned int        data_count;% e5 ~) }, n7 l& c; C. n) w
  14. } e2prom_s_cmd;
    : s. `: a4 {. U0 s4 G  ?% H1 @: r3 T
  15. 3 E1 {& [" \" N1 S9 ^) D
  16. #define E2PROM_CMD_READ 1
    " D! x& r5 j1 T# k% ^# e' p2 Z9 t
  17. #define E2PROM_CMD_WRITE 2/ V' O7 z3 E% {. a8 K; Q2 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": ?# H% v0 S, v& a, j( o+ x2 q6 a

  19. 6 J, x  }& [/ ^7 G4 k& x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 A* }6 R! ?; X) x9 j% K9 P0 A
  21. {0 M: r& |! Q6 B3 y( T
  22.         int fd, ret;( @. T) [3 B$ h  L1 T% D; N
  23.         e2prom_s_cmd arg;4 L- b  d# l8 i) [/ b4 W
  24.         unsigned char buf[0x18];3 |! g+ E! j6 w. U8 j

  25. 1 ~2 u0 B4 I) T
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: a- l: {5 E8 T2 b  Y5 ^& V
  27.         if (fd  < 0) {
    * y8 y$ m  N5 Z7 \# f5 B0 J' z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 r% ^/ z  q& F( }9 t- O( j6 H
  29.                 return -1;2 z, l/ U/ W7 }! U
  30.         }8 j5 m' e0 }  q+ `; S+ w
  31.         arg.sub_addr_count      = 2;
    3 @. z! P- D8 O/ U3 b
  32.         arg.data_count          = 0x18;3 @9 |4 W$ c* b: S# [/ `7 J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    , P  N0 c+ F" {# L, h
  34.         arg.e2prom_cmd_data     = buf;
    * J9 K9 c5 f! ^$ j0 V6 m
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 t! W  f5 v# N& Q( f7 p+ {! J
  36.         if (ret != 0) {
    4 {5 e; l& ?& V- J5 H! J/ }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' X& z" ?9 v( u
  38.                 return -1;
    0 T9 K+ z7 C: n# S. k
  39.         }
    ! S* `8 K) e" F
  40.         memcpy(mac, buf, 6);5 A9 c+ m. u6 a. b1 U3 K6 E; A
  41.         memcpy(stbid, &buf[6], 18);# E* ~7 q5 }) I4 R5 r- J, ?* ~# g
  42.         stbid[18] = '\0';
    9 `8 X, M. M9 e% q. L% K
  43. 9 \( i/ B/ \* I9 z( V3 g4 d- C
  44.         return 0;- e% I" j! M* i  G9 G: q, c
  45. }
    . W) L3 l% P  Q8 q
  46. 3 ^* K: U. [; K$ P( @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 o0 y7 H* p, ?" A- M' b! |- v
  48. {
    , X: k1 u8 q3 K, B4 l. ]# g
  49.         int fd, ret;
    $ A: h! P. I5 u: B4 @2 ^1 L
  50.         e2prom_s_cmd arg;( U- V* E1 L, w! _
  51.         unsigned char buf[0x18];& i4 r7 }( J& q& w4 v

  52. ) o$ Z- i7 l  A% g0 g2 r+ R
  53.         memcpy(buf, mac, 6);
    # @. o! b8 T& T
  54.         memcpy(&buf[6], stbid, 18);
    ' n1 O2 _1 y$ a% n& [5 Q' J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / J. O. J9 M- e/ s5 R7 X
  56.         if (fd  < 0) {
    ) g% l$ [" d( s6 m( @! U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : h' m* k9 L3 S- p) {
  58.                 return -1;
    5 M5 `; Q6 ?6 Y' _* C0 l5 E) e
  59.         }+ G: l4 G2 A3 d( `( Q0 m; D
  60.         arg.sub_addr_count      = 2;1 R1 C; C  I9 W
  61.         arg.data_count          = 0x18;* z) H0 W$ q0 k; _# v+ Q- `7 w
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 q+ B; V! E* J) K0 Q
  63.         arg.e2prom_cmd_data     = buf;
    7 O6 R5 \4 Q1 k; L1 D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 x" Y& m( M" m! E, o3 k4 a
  65.         if (ret != 0) {
    / p: F+ i8 |7 e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* a, g& V( Z. Y  Q6 g
  67.                 return -1;
    7 K1 [: X3 [* q- s9 p  G
  68.         }
    + {1 `7 ^7 W1 B2 n$ s
  69. / ~( m. Z2 F( m, t7 G& d
  70.         return 0;# k+ K9 \0 l+ x
  71. }
    / x- A6 w& H1 y7 Z

  72. : j3 p- {0 G+ G/ S9 t# ^
  73. int main()7 u; p. [# O; n; u6 \9 V5 j
  74. {
    9 ^4 E2 d$ b! R* ?& h( H2 [
  75.         char c;
    ( {4 Q6 [* g+ _0 P( t9 G
  76.         int i, macs[6];
    ; G" W: J3 y! `% g& i/ [/ ~+ |
  77.         unsigned char mac[6];0 t$ @- N! q8 h1 w: f1 |& Y
  78.         unsigned char stbid[256];7 K5 ]% d  n$ c, X5 P* b
  79. : `. ^3 G4 ?: g5 W
  80.         if (readparam(mac, stbid) < 0)1 w0 Z( z3 B, j9 G* {
  81.                 return 1;
    - W% Z9 n2 t2 N/ u  t% E8 z& A6 u1 y

  82. / v9 y( t# K' G0 y3 h: {: W5 j1 b
  83.         printf("Current parameters: \n");
    ( G9 i$ z; I  ?9 c; `2 e( ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* q5 b" e/ \- \2 C! M' h4 R
  85.         printf("  STBID: %s\n", stbid);0 Z9 }# u! R; n3 r9 _
  86.         : A' `  ?# p7 V* u
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& j* U" A$ N$ \8 u3 i8 ?: S
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * o1 Q; P! L5 q) I2 y" P3 }& P! K
  89.                 printf("Input MAC error\n");- w) ~5 u: y+ ^: a
  90.                 return 1;( m" }4 e' S3 J( P6 u
  91.         }
    : u  C0 F5 k0 L) G2 n6 i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 S+ P* Z, P7 b$ t7 F: C
  93.         printf("\nPlease input new STBID: ");5 L4 z4 U5 ]9 ^' A7 Q
  94.         scanf("%s", stbid);
    # G; K; a" X- w1 D% B5 F
  95.         if (strlen(stbid) != 18) {
    7 Z  U' Q* {& K: w2 }  o% v, U/ P
  96.                 printf("Invalid stbid\n");6 K2 `' c" F, C  ]$ P, M
  97.                 return 1;* m( m: D7 c0 A9 m
  98.         }
    & k* B7 u/ J; ]: t% z
  99.         printf("\nNew parameters: \n");2 b' N+ e! {2 _! p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 |# U# Z* l$ D% ?. ~3 T
  101.         printf("  STBID: %s\n", stbid);0 H+ x$ }1 r) R5 d! }5 N
  102. ; K) `" G# a7 v8 P* E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 L7 N/ d+ z6 x1 u1 K0 s6 J
  104.         for (;;) {
    - H- @' w2 \* Z! Q
  105.                 c = getchar();
    3 a/ n: z7 h: ^% Z4 E: Q2 }
  106.                 if (c == 'y' || c == 'Y')4 C- G6 z/ n) x
  107.                         break;
    * ^- d( Q. w3 F. l; ?
  108.                 if (c == 'n' || c == 'N') {
    6 J6 o; S1 ~5 p' C" X" g1 V
  109.                         printf("\nAborted.\n");
    / k4 N; q$ B8 a: L' B* ^1 R
  110.                         return 1;0 d4 K: Y: v$ ]5 F5 _& L: U
  111.                 }
    6 @0 A6 ~% x* X* a8 S) d
  112.         }
    6 i* }/ |* o# `. p$ r* w9 O
  113.         if (writeparam(mac, stbid) == 0) 3 k; s6 }3 I% u( z) i3 _
  114.                 printf("Parameters changed.\n");6 V3 e. g8 a/ B) e: l3 H
  115. & e( i+ x) T, j
  116.         return 0;! \; B. R& n# P: T1 J
  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
( m0 W; n% D3 n7 a8 H% U2 c在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* [9 G1 k+ Y' S你用的编译命令行格式是什么?
# b1 D) G) n2 {# `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-28 14:52 , Processed in 0.024548 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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