查看: 16991|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ ^. W. c) e4 w! S) q5 U* Z) v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 q5 ~' R1 J# E* B6 \: y" R. Q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
9 ]6 h) T1 ?- T: Uusage: himr <address> <value>. sample: himr 0x80040000 0x0
5 i+ r) b8 }1 N9 L. @3 E/ T/ p4 P- H$ P* J8 O7 `8 V1 ?* h
9 y. J. X# Q0 ]6 k8 H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( t& M0 f( H  `, l" j  I3 X
2 e" v3 ?& ]" I. F) \7 C( J0 n3 m- D补充内容 (2012-3-8 09:42):/ P+ R! Z# u8 T& f
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ q* _- b! L8 j- ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 `3 L! |" G2 v+ X' ?  O
( T. r/ }" w4 P; E
himr <address> <value>. sample: himr 0x80040000 0x03 R. s% L5 R5 D; j5 M. r1 u

6 ^& s2 f% Y9 o* ^  k例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 |. y, m+ ]' W1 U, i* a
himr 0x80040000 0x00
  |8 K. y" e6 t! z, \himr 0x80040001 0x11
3 |6 Y& Z$ `5 S9 t/ A: ^  Thimr 0x80040002 0x22
; X0 }, I2 V# S+ z2 x, s4 e+ qhimr 0x80040003 0x33
/ S, ?) q+ m! z& T# u% e' Ghimr 0x80040004 0x44
. @& q% W: ]+ f" j1 mhimr 0x80040005 0x55
( I1 M% @# v4 Y7 G
+ y/ t* ^- I8 G8 Y' jSN也是类似。
$ D7 t; |! s/ Q) S
, a  b0 v9 s2 Q- N8 p现在主要是,谁告诉我们MAC和SN的地址?$ L7 w. K& _% U% i8 C: p0 f# z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ x, \- Y- u9 o" `; ]9 y& K一直想找到运程修改MAC和SN的办法,苦于无解啊
4 E  b  s; W  s+ D1 u5 h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + E/ j! A% x5 }5 x6 m% j

1 G+ X/ ?  Y% g+ Z5 f修改的代码早有了。到今天不会编译。+ _6 Q2 C& s: x1 {1 F, W$ M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 s* d& }$ r" N, v8 x* ?
  2. #include <malloc.h>4 ^7 M, Y; _9 V$ M7 ]
  3. #include <sys/types.h>" s; V% U& j5 E- o5 l) ~; M
  4. #include <sys/stat.h>
    ) H' E( V( ~2 X' y
  5. #include <sys/ioctl.h>
    * ^$ e! ^3 H( e  J+ v+ R8 s
  6. #include <stdio.h>
    0 x+ k$ x4 B8 V- W
  7. #include <string.h>( h( w, ]' B* c9 q/ [
  8. + a/ R" i- {! k, T" ~
  9. typedef struct {. Q% `; I; S( T" l
  10.         unsigned int        e2prom_cmd_sub_addr;3 e1 D  @; q9 a: S8 S
  11.         unsigned int        sub_addr_count;
    ' u8 N+ A5 i- D
  12.         unsigned char*        e2prom_cmd_data;0 J. [/ w* b6 B! c3 w: z
  13.         unsigned int        data_count;. ^% Q/ y2 @# T
  14. } e2prom_s_cmd;
    " S) G! Z! {$ h4 f4 Q2 s( E
  15. 5 ?/ T$ O5 [4 |4 v8 X
  16. #define E2PROM_CMD_READ 1. ]3 z" O1 _# x0 [, `0 K
  17. #define E2PROM_CMD_WRITE 2
    5 g6 e2 B7 @0 U9 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * A% _( t+ l* I' o1 }
  19. ; }0 `- e! \& R+ j4 W/ j/ a( E
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) p0 H8 p5 h) R
  21. {
    3 W, V8 Z: r  _4 q& S
  22.         int fd, ret;
    + z6 D" y& d4 j6 D+ `
  23.         e2prom_s_cmd arg;6 t$ K4 {* S, K( I9 K
  24.         unsigned char buf[0x18];
    / q6 D' x+ v- R/ h! Q# r
  25. 1 y0 _/ Q6 X! B( L2 J1 z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 Q6 F, t8 n. r7 E1 Y' d
  27.         if (fd  < 0) {
    + `- z4 L6 v! Y% y& D0 Z6 K9 i  n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 q! I% `2 z. C# V( t6 g
  29.                 return -1;
    / {9 L  m4 t; q4 t
  30.         }
    ' V, [; U% U0 {7 I% M8 W0 q1 w6 B
  31.         arg.sub_addr_count      = 2;
    & {* u- k3 o1 P0 z2 I
  32.         arg.data_count          = 0x18;- _" K: q$ W6 c) J/ u' N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 u; T: z+ _1 ?$ w
  34.         arg.e2prom_cmd_data     = buf;
    9 m+ e% a: t; F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 k6 k2 W# L' L
  36.         if (ret != 0) {
    0 L: k. q- r0 a& w- D6 i
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. [7 @5 E& K) B6 @. i, t* l6 L
  38.                 return -1;  n, x" D; Z5 k: K$ q! t7 H) Q: B
  39.         }( }& x' T$ K( k, m# `" t; x
  40.         memcpy(mac, buf, 6);$ e$ H  F9 ?1 {" |$ ?" w
  41.         memcpy(stbid, &buf[6], 18);0 l* e; e) {0 \7 A6 ?
  42.         stbid[18] = '\0';
    7 l4 i( i8 _' ~9 R8 k
  43. 8 ~7 p9 p' \9 w+ e" h1 ^4 ]/ f
  44.         return 0;
      @6 @9 L2 ~% E/ C
  45. }! L1 T( F- @8 g& c
  46. ) F& \* T8 Y: q  J
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 J2 W0 K& O9 u+ t( h
  48. {
    3 n, J, [5 h7 g& F. w
  49.         int fd, ret;
    . W3 _8 J, v2 C. ^1 _& E( n
  50.         e2prom_s_cmd arg;" L: s1 N( p5 v' h0 _" O8 Y
  51.         unsigned char buf[0x18];* w, D9 y& ~9 i! t- w

  52.   X$ ^5 P. M0 C+ [
  53.         memcpy(buf, mac, 6);
    7 L) R' r- Z2 E6 M1 `
  54.         memcpy(&buf[6], stbid, 18);; x1 p1 L! I7 H7 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);* H0 b9 O% D. F# R
  56.         if (fd  < 0) {1 m; n) U3 r! U) R0 |9 M8 P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. S, j4 \1 X0 A4 ~  k
  58.                 return -1;0 j  D2 \- m. `8 k7 l9 w9 m+ n
  59.         }$ w$ _8 |2 O5 D$ u+ `% Y0 K7 b
  60.         arg.sub_addr_count      = 2;7 p: d) k/ i0 G. K0 o) p& R% H
  61.         arg.data_count          = 0x18;/ [4 v  }: R4 ^( G( J% ?# q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! b: T$ r0 W3 D# P6 t+ T8 @
  63.         arg.e2prom_cmd_data     = buf;
    5 X3 R' C& R! o, n: _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: c& C- d/ Z) \: E% f
  65.         if (ret != 0) {. l- {# S9 Z4 @, E5 j
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 c6 P" [7 q# l
  67.                 return -1;
    0 F1 T+ E0 E3 v
  68.         }: W. E3 d0 V7 S

  69. + N$ ~- k2 m9 x2 |  H4 @6 N' p/ P0 r
  70.         return 0;  z/ G8 [, U! F- G# n& w
  71. }
    9 \5 B: Q9 p% h" F9 [' V

  72. ! u& E9 ~+ \3 q) T1 P
  73. int main()0 k/ r& l7 x$ P$ G
  74. {6 a9 `5 p4 x9 V2 n
  75.         char c;
    9 S" U1 w, q$ z' N6 n8 e7 N# o, c
  76.         int i, macs[6];
    ( v! T& }6 o; [0 b2 v  A
  77.         unsigned char mac[6];) l, ~9 M/ z9 y! I" ]  c
  78.         unsigned char stbid[256];
    & k; g3 p& a2 k0 p9 T. P: p. s

  79. 0 f5 f9 D# V! r/ D4 {
  80.         if (readparam(mac, stbid) < 0)3 X) N" p, j/ h" Z: ?
  81.                 return 1;
    / C; b% c' {) I" D" a

  82.   ?0 h% k  N3 V1 F* K( O4 Z
  83.         printf("Current parameters: \n");
    8 `+ {* O+ {  P: ?! n3 }
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 T) g# N# M! g2 S
  85.         printf("  STBID: %s\n", stbid);
    * `- x" e  I/ P  r- F
  86.        
    9 Z: W* g8 \6 K) C4 k- \) c# B9 ]
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% Z- Z: |* k' t8 ]- [, S0 s" r& ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 g2 E4 `8 Y+ k5 [
  89.                 printf("Input MAC error\n");
    4 E2 H6 P1 \3 s( A' W* f: z- V
  90.                 return 1;9 k& H: V5 c: r- l2 D5 J* Y
  91.         }
    % l! r. G4 J/ P) ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 b) d' @+ @5 U* @. S
  93.         printf("\nPlease input new STBID: ");
    " r5 m( }; X0 E3 `5 G$ m4 r& V* |
  94.         scanf("%s", stbid);/ ^& c2 S0 p4 M0 ~/ Y
  95.         if (strlen(stbid) != 18) {
    9 r0 b, ^0 h: S! \0 Y5 H" ^
  96.                 printf("Invalid stbid\n");
    5 D8 l  j$ m% q2 r! F9 @! |" U
  97.                 return 1;
    8 S* ^% j. [3 Y/ Z
  98.         }: R2 Z( M. n+ {) U6 l5 S
  99.         printf("\nNew parameters: \n");% J: R. J/ F: U5 h
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : K( w) H- A2 w. q% D' K* K
  101.         printf("  STBID: %s\n", stbid);8 T& X- V0 b/ e) l

  102. ; L+ N7 T; g9 ], D6 h
  103.         printf("\nDo you want to change paramemters? (y/N) ");- y& r- E% d) w. D" n4 T1 Y
  104.         for (;;) {+ O1 I8 l. M6 ~+ D* \/ o/ I0 |
  105.                 c = getchar();5 \: r" s1 ?( i8 E9 R5 e
  106.                 if (c == 'y' || c == 'Y')
    & t9 U: u9 _; h  D3 k3 Y
  107.                         break;
    ' z- i8 K: ~7 J* H* i' ]% [
  108.                 if (c == 'n' || c == 'N') {; A9 j" ]3 h" h, f" }0 H+ I
  109.                         printf("\nAborted.\n");
    ( k8 n# {6 I6 C7 |$ g
  110.                         return 1;
    7 n, ^  n/ H3 v/ y% ?0 g
  111.                 }# e5 q: I8 x+ o  c0 J
  112.         }
    6 Q4 j/ o# k4 j- \
  113.         if (writeparam(mac, stbid) == 0) , R) J$ Q' y* u: J3 ^0 r
  114.                 printf("Parameters changed.\n");3 l" b  D1 e8 s0 S7 v9 F7 C$ H

  115. 8 u, @8 E* m, o
  116.         return 0;+ n- q" g0 p$ I( S( {; n
  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
) _5 c1 W( A, h) i" _* S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) X2 I. f' E% I6 p" W
你用的编译命令行格式是什么?
) U5 {" H1 \9 k6 w' t/ V
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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