查看: 16866|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' i1 w% j4 X6 d3 v, H& Z# e- \$ k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  S3 U/ q! _6 Y* B. G6 W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 _6 F- q6 w3 N6 d, ^; U
usage: himr <address> <value>. sample: himr 0x80040000 0x0% a  I* g/ H- P9 @# F

, O7 q/ ]2 y, D% K( o
9 b3 n" ^3 Y0 D" W不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 ]  R, F% {. C; p
) T" c0 C/ |/ o2 y补充内容 (2012-3-8 09:42):/ v! F: d1 c* [) X. W
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 b& E8 R; l0 p$ _4 Y# r* b
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ K2 y" O& Z7 {. z
, U  d( u8 Z5 ?, y( \& e( ehimr <address> <value>. sample: himr 0x80040000 0x0
# {3 j; A, {0 N  `1 z& a" z( h( h! ~  [; I1 a8 `1 R% Z( z
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- B) f3 g; q" d5 n9 g1 z" i$ ^2 Thimr 0x80040000 0x00
7 O( @! r: e  {& qhimr 0x80040001 0x11
1 S- a% G. c% P# o/ `himr 0x80040002 0x22
5 _  o/ E  `: ?% X+ Rhimr 0x80040003 0x338 {% ^( B4 d6 |1 a+ Q
himr 0x80040004 0x44) p3 ~8 A) j( J( ~! l8 e
himr 0x80040005 0x55
: ?7 ~( U8 p6 R$ y: `8 v$ x4 N; |6 w6 K% o, r
SN也是类似。, \/ q6 T) O# Y: m* s; a: s$ s0 ~
% w' \& P' p4 r7 x5 n, {( S
现在主要是,谁告诉我们MAC和SN的地址?8 O$ b2 h) T/ z5 V1 p* m) U
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 X* P* S" `* J  e一直想找到运程修改MAC和SN的办法,苦于无解啊

: A* R( z% M9 t+ [( M5 }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 z* j: S  S# D. G3 Q9 ^) n

7 \+ Y) \) u8 R修改的代码早有了。到今天不会编译。" D- F5 M/ @2 v% n( G) @. ?. W7 z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " F) U% x0 E: c/ b# ^" Z4 z& h
  2. #include <malloc.h>
    ' e' @% C% w8 x8 z, `
  3. #include <sys/types.h>
    , q( q8 Z$ j+ a4 M6 t
  4. #include <sys/stat.h>0 p. n1 p$ I, a* v
  5. #include <sys/ioctl.h>" s2 @9 y. {/ H2 N2 Z
  6. #include <stdio.h>
    5 b8 N  u9 a, K) b3 N/ g' F$ `
  7. #include <string.h># I* X( `9 y1 X( ]
  8. ; l/ q2 X7 Y% M3 g1 C
  9. typedef struct {
    $ P5 L7 F: N2 o* l/ U0 c! F4 C, d" O
  10.         unsigned int        e2prom_cmd_sub_addr;* S4 a& h8 t; E
  11.         unsigned int        sub_addr_count;5 v3 R, a9 {0 j' p. y
  12.         unsigned char*        e2prom_cmd_data;
    / H0 J1 `4 R, B8 F
  13.         unsigned int        data_count;
    8 i+ k" W" G8 N5 T
  14. } e2prom_s_cmd;9 t2 I: ?  h# B2 g9 x) B! f

  15. 4 j/ q, a: ~0 a0 a
  16. #define E2PROM_CMD_READ 1
    2 S1 o( D0 f7 d+ ^1 t
  17. #define E2PROM_CMD_WRITE 2
    - H3 r( h$ N% R: Q! O$ E; s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 d. @3 _4 ^- A# G

  19. 1 i5 y6 T* R( f& W- L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + d: N1 I- |+ H$ L
  21. {3 C, R) O2 E0 N$ i7 r  V
  22.         int fd, ret;
    , ?" u+ S, `7 ]. Z$ K/ R
  23.         e2prom_s_cmd arg;1 H! @' O7 A1 ?( |( ^
  24.         unsigned char buf[0x18];
    : {; H/ v. e; Z. A, x

  25. 0 r' B' p  J- m/ @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " n' g" H8 Q5 y
  27.         if (fd  < 0) {
    + \/ Z# G. ?" W. M% z0 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - l5 ^: e2 I6 Z
  29.                 return -1;
    8 K3 K7 D+ c3 \* i2 T  F" D
  30.         }5 X; w- U8 f  ]+ K, t4 ^1 I# x
  31.         arg.sub_addr_count      = 2;
    - a+ m9 H% l) S) O6 N
  32.         arg.data_count          = 0x18;
    & T$ x- k' i) i
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 @% n2 i7 L4 |) g
  34.         arg.e2prom_cmd_data     = buf;" ]$ o; G4 V% b* }* D9 I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% A9 J" ?* g+ q3 j$ L
  36.         if (ret != 0) {  G7 h( b4 o* C' z1 H1 g- p1 n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & ]" T# c2 [/ Y; n: h" r
  38.                 return -1;
    3 |) N- A  X! p& a. R
  39.         }5 R9 y1 l8 f2 V2 \- ]1 o7 N
  40.         memcpy(mac, buf, 6);
    & c% A- g$ o7 j/ F6 k6 x$ M' S
  41.         memcpy(stbid, &buf[6], 18);& y! Q( j8 Z; E
  42.         stbid[18] = '\0';
    ' I* D" d! u& s$ i$ h: O3 b
  43. , E! Q! S; E7 \& B* @, p# t) \
  44.         return 0;0 a! ]" @" q1 `% b- d% W; P$ z
  45. }- E/ a3 J- F. I+ U' v0 J6 B% Q

  46. : r" |% v+ v- [* q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ z/ t; A8 i$ H" r* h% o# e
  48. {4 K& G: M/ q% T5 W5 [4 i
  49.         int fd, ret;- y  }7 F+ o6 F; O0 g0 ]2 ]! y, ^
  50.         e2prom_s_cmd arg;, x' C- M" c) c4 K9 z0 A
  51.         unsigned char buf[0x18];7 M4 s* Y. X3 \* z) e$ h- t0 ^( l
  52. 3 B" y, o+ \6 K& A' d, m. y
  53.         memcpy(buf, mac, 6);& R, v5 ]4 ~+ Z9 Q1 _
  54.         memcpy(&buf[6], stbid, 18);
    : V0 f6 L8 Z5 H' x# W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 P- D( }5 H1 ?. _' C! A
  56.         if (fd  < 0) {- ~. m1 E) s, S6 h( O( z% B: t: F2 ^  y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( c( q  A% F1 H4 {; @0 |
  58.                 return -1;
    . `9 h  r7 G3 x% s
  59.         }% y( y3 X2 j  ^' h2 d8 e5 U  V
  60.         arg.sub_addr_count      = 2;
    , Q: ^0 f1 t$ H) ~$ U) K; z5 m
  61.         arg.data_count          = 0x18;( S8 H1 z0 O' h! s0 R
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 C$ j, [# K. B7 b% Y; q
  63.         arg.e2prom_cmd_data     = buf;
    % x6 W) k% |0 ~7 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' X+ Y- l) ~- e" P& L. ?( ~
  65.         if (ret != 0) {
    , L# A) n5 p/ F2 Z7 g  F, w* s0 T7 g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " g. X) Z! E! ?4 V
  67.                 return -1;
    ; J0 v+ e% T7 m/ y0 g& z8 Q7 @
  68.         }& |( z! G# c" H0 C9 a

  69. 4 D* z4 ^( H" W5 `' a! e6 g
  70.         return 0;
    / z# O, J8 w$ @. N* L: J
  71. }
    & ?: ?9 O1 Z4 @) I% q( f

  72. * u, ], V! a4 H2 R# e, @! b( S
  73. int main()
    ) p6 A6 C3 Z6 q7 r4 m
  74. {
    ' b3 n" |& s  x0 f
  75.         char c;5 v; W! a7 k* @' S& q& t; ~# o
  76.         int i, macs[6];
    ; M1 C8 U( Q+ l* v; |
  77.         unsigned char mac[6];4 P6 x( [. N' t
  78.         unsigned char stbid[256];
    1 W/ R7 ?' h( h, T

  79. 8 `2 U  V. E# b4 Q/ A8 k" A
  80.         if (readparam(mac, stbid) < 0)
    ; R& V- A* L, ^, y( a. \
  81.                 return 1;
    ) l! }/ Q; b" B9 [6 j) l; Y. P
  82. 0 P/ @" @9 {) U! h5 R. ]
  83.         printf("Current parameters: \n");
    - `; \# J  e( x- y4 ^0 G
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);1 X- A* Q& R5 U! M" e& S
  85.         printf("  STBID: %s\n", stbid);! D1 A" `% v& x
  86.         ) a( s1 P1 L# ^9 Y9 j% ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , H8 ~+ \6 U  d+ L" m' s, z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ d7 l: z. m( P) R$ w* S% W+ Q# S
  89.                 printf("Input MAC error\n");8 }( _4 F/ f( L7 [- ?+ {
  90.                 return 1;
    ( y  \. ?! k$ l  j
  91.         }" Z! `, A  r' T/ l! V/ ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( N0 P4 M. Z3 s6 B' ?
  93.         printf("\nPlease input new STBID: ");* @% ?4 I1 L' h- ?- t; i4 h
  94.         scanf("%s", stbid);
    ; k7 \3 h' i% O) k4 s# k
  95.         if (strlen(stbid) != 18) {# Q/ c6 a0 }* L
  96.                 printf("Invalid stbid\n");3 R7 I% l! x' c! \: V! X
  97.                 return 1;
    - U2 l) |3 e7 x$ U. A
  98.         }
    0 E/ c7 k' Z) @
  99.         printf("\nNew parameters: \n");+ t" p! \# k0 ?- Q9 p5 s/ z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; c7 I0 b7 r5 ]  g
  101.         printf("  STBID: %s\n", stbid);% T3 {, D5 K! K, ]% j
  102. % w7 O( Z8 u9 E* Y% J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 a, n! j# d. K, O
  104.         for (;;) {
    : e, l. D7 j2 L% m. \
  105.                 c = getchar();+ G; W% t/ F- K, N, u
  106.                 if (c == 'y' || c == 'Y')
    % X- S( P/ x7 W9 q
  107.                         break;
    1 N: x8 M$ S. p# J9 Q
  108.                 if (c == 'n' || c == 'N') {
    0 F2 R' a3 n& \+ l! H* v
  109.                         printf("\nAborted.\n");/ @5 @+ l( K1 k$ b" w9 b
  110.                         return 1;, t7 D8 D7 J6 U  X
  111.                 }& f% T  K" m+ b4 b, X
  112.         }$ v! h. F/ c/ k# o
  113.         if (writeparam(mac, stbid) == 0) ( B- |; G2 X6 {6 g" b8 S/ h
  114.                 printf("Parameters changed.\n");
    . C2 @. _% m& G

  115. 2 I7 j/ D/ C! N
  116.         return 0;
    # O3 V; k2 B9 w, \9 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 " b  f# z: r2 t8 z' Q7 p
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
! o% Y% x, d4 ~. K5 c; m' p( I% [
你用的编译命令行格式是什么?7 M4 V- D! V# _; P
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部