找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14997|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : q" k1 b# ]* T: m. }1 g2 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig% ^# c+ l. Y/ {1 m) c% |7 ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
6 E/ B+ F9 `& h. H& ousage: himr <address> <value>. sample: himr 0x80040000 0x0* L3 R5 G4 G3 r3 |5 z2 c" [

" b7 R5 K) n* U+ T( h
3 O( L+ p. |. M3 P* p" P# W2 l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, {7 Q2 q" J; N/ P. o9 [/ n6 k6 o
# `  U) \  S! G- j
补充内容 (2012-3-8 09:42):3 [; j; ^( k% V4 ~# N
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. x2 @) r/ q4 T7 V  R
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) [! u0 I7 n$ p6 x

% P8 d/ F* R, H/ s- q8 whimr <address> <value>. sample: himr 0x80040000 0x09 H, r& b0 Z" N/ S
. g, I6 {, q" ]1 ~9 f
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! s  b( }. j+ w. qhimr 0x80040000 0x007 v& g: M& `; L5 i/ G1 g
himr 0x80040001 0x110 i! Z3 O2 p4 s/ y$ E  M% X
himr 0x80040002 0x22/ Z$ v% J; w, g
himr 0x80040003 0x33  S# x! k4 `5 {$ z& N3 E. L
himr 0x80040004 0x441 n4 l# x8 B: g
himr 0x80040005 0x55
, r% {. t- l# r' p# H8 G6 {/ c$ ?9 ]3 H
SN也是类似。
8 I4 Y; S& [8 {8 N4 x8 J$ u- S) t# y' G' C
现在主要是,谁告诉我们MAC和SN的地址?
9 n; |( ~9 M! f; e+ q5 C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . ]; s) H- |" A/ T9 }
一直想找到运程修改MAC和SN的办法,苦于无解啊
0 }6 W* r* B; @3 N/ ]
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' ^9 B) P5 b. M& i  N% S4 x5 y. C  C3 ^  q6 o$ d
修改的代码早有了。到今天不会编译。: _" C7 L4 t# W
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 m* c  P$ l, e+ R4 g
  2. #include <malloc.h>
    ) }' J( ?0 H7 O5 i& o
  3. #include <sys/types.h>
    5 \. m6 b! o4 c, n# k$ _
  4. #include <sys/stat.h>
    2 k5 o9 o" [- h
  5. #include <sys/ioctl.h>. u/ M: W- W" Q5 P; o& F1 ^. U' q
  6. #include <stdio.h>
    5 ^' t" m0 p3 N- w4 q
  7. #include <string.h>5 c% l# \/ S- ?: |/ ~/ U

  8. 4 T: z3 Y: T: j4 J* b
  9. typedef struct {: G3 i% G1 k% Y# E) h
  10.         unsigned int        e2prom_cmd_sub_addr;3 t" j% E0 j0 a: ~- z' n
  11.         unsigned int        sub_addr_count;
    ; T- f+ `" @8 L* S& F
  12.         unsigned char*        e2prom_cmd_data;& P! D4 r3 f$ L2 g$ A
  13.         unsigned int        data_count;
    ) P+ F6 c: r" P  @
  14. } e2prom_s_cmd;8 d7 n2 n/ p6 x
  15. - E( Y; z+ \& S. i8 G- a+ |
  16. #define E2PROM_CMD_READ 1
    ) s5 K$ Q+ u2 j
  17. #define E2PROM_CMD_WRITE 2
    6 M. o6 @& }, G% x% W3 F) t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"5 @$ p: N8 n- Q/ _3 Y; M
  19. 2 _5 Y- b' s* d) Y& ~1 l+ F6 w4 ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" {+ T  ^. C6 Y& k
  21. {
    9 u8 C! D* H" c$ u4 _- b
  22.         int fd, ret;
      v* _" x0 {6 y" L/ l/ w% v
  23.         e2prom_s_cmd arg;
    - M1 C* y/ \( c) j
  24.         unsigned char buf[0x18];
    ! V& ~5 U% ]4 E' `2 {9 D( N) w
  25. & A8 V& q/ w  v/ `2 ^4 Z' `) q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, o) q6 f3 p4 |8 b+ ~! p. w# B
  27.         if (fd  < 0) {
    ) p* d* O4 R5 u7 H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 @+ e! i! M" T2 L) V
  29.                 return -1;/ k( V( w+ [8 Z( ^2 B6 ~
  30.         }# W0 [6 ^1 E5 j, g; Y2 P0 k( y7 [
  31.         arg.sub_addr_count      = 2;
    4 y& K7 Y, f9 C3 o9 V
  32.         arg.data_count          = 0x18;' k3 y1 ]9 a. r9 \3 ?/ y
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ {6 I9 M% O7 Y6 f/ I$ B1 u
  34.         arg.e2prom_cmd_data     = buf;
    1 Z/ |) s3 f; S7 d5 I. i6 Z( S1 V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' z3 z2 ~. ^' p- s
  36.         if (ret != 0) {; m! W& p0 N$ e& V" ^
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: V$ F$ A4 E; g  b  d2 s/ P
  38.                 return -1;6 ~3 H& L) C8 t$ p. q- W
  39.         }' H! \7 t- J4 m' i1 ], t
  40.         memcpy(mac, buf, 6);
    6 a! r) V9 T2 o4 w) C: E: c, J
  41.         memcpy(stbid, &buf[6], 18);& V2 Q& M, E- T) H( q! C
  42.         stbid[18] = '\0';
    - N, x( p! [# k9 `( _/ d3 b9 o

  43. ( Q+ b" |7 N; r% b7 d3 D. C; `
  44.         return 0;% A0 E- L( u+ U
  45. }0 [4 A! E, p. ?, E4 b$ H
  46. 1 E' v* L/ j% r: U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# Z  s$ h1 {) f, x, s
  48. {
    " d/ p6 ^: J2 d3 f2 ~: e
  49.         int fd, ret;
    . h( c9 n, F( v; ^
  50.         e2prom_s_cmd arg;$ X+ m9 N* {9 x0 @$ ]/ p" c
  51.         unsigned char buf[0x18];# q  `* ]8 a8 K% K- M6 u
  52. - ?0 P; A. l. G$ K8 I
  53.         memcpy(buf, mac, 6);5 q# }0 L& d: g5 X
  54.         memcpy(&buf[6], stbid, 18);5 v- R0 s* n. G* B( ]( C# O1 c
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( ]! C8 [. j* _1 }1 h
  56.         if (fd  < 0) {
    & p' ^; ]" ?+ ^  S/ O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 p0 ^$ X" P  I4 Z  |8 v4 w
  58.                 return -1;
      K4 P3 Q7 S6 j# P
  59.         }
    5 g5 T+ z) k% z( B% A
  60.         arg.sub_addr_count      = 2;2 H" \5 I8 A& G, H1 w" k! {
  61.         arg.data_count          = 0x18;1 x0 U" z* _6 v
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # L* X, k( m$ `8 D4 p# [4 d8 \, w
  63.         arg.e2prom_cmd_data     = buf;
    : c$ H9 [: O3 x/ E) y" p  j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 s) [" s( e. g& a7 Y( ~' R6 K8 g
  65.         if (ret != 0) {
    6 ^6 ^! x9 o* \+ k% v; q/ H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);! q3 [# Y; h  r9 v* ^
  67.                 return -1;) y$ L/ `. R$ {) y
  68.         }6 n/ H$ _! i" W# t! t) s' C6 p) W
  69. ' _- h) t2 a  @8 Y7 E
  70.         return 0;0 f# i! a" Q* k! J
  71. }
    $ ?# G! ?# T" U0 V% c
  72. * Z; K0 |- Q# i1 e* k4 @0 [* x
  73. int main()! ~9 e, P2 B5 U) g5 L7 c
  74. {
    " h  i+ {1 s5 B. }
  75.         char c;
    5 v5 q* d1 h" i# O0 H0 z  ~+ F1 g
  76.         int i, macs[6];
    7 a8 O# j; v: p' s1 K2 P0 O
  77.         unsigned char mac[6];
    ; ^# Y; ]' D/ F% _
  78.         unsigned char stbid[256];
    9 M+ l" W) H6 o8 u

  79. $ f  a- P2 }# O* A/ V' _. G9 ~: D  X
  80.         if (readparam(mac, stbid) < 0)
    / N' [- E3 D! M$ C& a$ z
  81.                 return 1;$ B' Z' O. ^0 ~3 H
  82. , i* Z! c9 Z( S+ {/ J* y
  83.         printf("Current parameters: \n");! b  _7 _2 P$ i2 ?% R6 E3 t, k/ ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # L- O9 ^0 e( W* R" d5 B. f
  85.         printf("  STBID: %s\n", stbid);( q8 r! _9 X9 R3 y9 K& q' q
  86.         4 k. h2 M% K6 K" b7 q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, h# o+ G( E4 A, ^, ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {, G2 s# c+ O9 l6 L
  89.                 printf("Input MAC error\n");- Z3 R( l. v* x) K* D
  90.                 return 1;: [; S& Z& S1 c4 Y( U
  91.         }
    ! W" I' o0 ?3 ~+ r! s7 ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 p  b, N0 T5 |, P( E
  93.         printf("\nPlease input new STBID: ");. w+ U/ W. y9 I8 x4 {: q) S; q
  94.         scanf("%s", stbid);
    % K* H/ X) M5 D
  95.         if (strlen(stbid) != 18) {* I# y$ g% b, W2 c
  96.                 printf("Invalid stbid\n");$ z7 J' e! T$ R" U9 \, R
  97.                 return 1;
    , V7 k7 B) H( L  t* `% Q
  98.         }
    & e! X& R  B+ B9 h
  99.         printf("\nNew parameters: \n");
    1 @" Q' ~/ x; d  B. }, M) e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) Y! u: j$ r3 b2 n( i- D. C, V
  101.         printf("  STBID: %s\n", stbid);: L% s# ?& {6 r- Q$ `( w) [- E
  102. ' L1 o0 `" ]' F) {
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( e, f$ g8 R& ~, V0 D! Q, ]8 }6 F
  104.         for (;;) {
    , }: V) O( q2 ^% n0 {# X3 d. x) O
  105.                 c = getchar();
      x& m+ {% e7 i# I6 b
  106.                 if (c == 'y' || c == 'Y')
    . ?# b& L# x) G( J0 I0 l/ R
  107.                         break;' O; U6 @9 |$ r* D. O3 X
  108.                 if (c == 'n' || c == 'N') {
    2 C- a2 }8 x5 |3 h  H% T
  109.                         printf("\nAborted.\n");7 ]: h  R5 J8 L; F* i, @( a
  110.                         return 1;
    5 q+ O( r: ~  D7 }
  111.                 }
    6 |8 B, [3 V8 u) t" x
  112.         }" P' S4 P" G" }3 C2 ~1 q
  113.         if (writeparam(mac, stbid) == 0) ) c: p7 S9 A+ j# W5 O; j/ Q; o
  114.                 printf("Parameters changed.\n");
    4 C1 a1 g9 p& S2 v

  115. ( `  {3 Z  @' d4 Z4 G) {1 _
  116.         return 0;+ A/ v- f# ?5 a7 A4 d( f
  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
4 Z/ N1 o  s- }, f' G2 c3 Z  h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 S  b* {. X6 o1 A; `. U' @0 s" P你用的编译命令行格式是什么?
* M7 A  C* B9 O3 z0 c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-8 13:15 , Processed in 0.030833 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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