找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15043|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" _+ S' h# K) p4 G
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( q! G' O) b: }0 A( `3 m' `
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
/ x( e8 R  m8 P9 G0 f2 t2 x% Dusage: himr <address> <value>. sample: himr 0x80040000 0x0# \3 ~+ j' J* t7 `$ Y2 v/ D

2 v: ]- r" d( Z6 K+ R5 K/ w
1 Q3 ]2 D: |# g, P6 Y. [不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
: L& H$ r3 u8 [7 _& y/ p8 w7 C9 Q* ]! i
补充内容 (2012-3-8 09:42):3 ^% c1 F( [* z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: D/ i/ o( J! t4 @3 S& a9 J5 ?4 o/ |这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 c& x; }1 Y( C
8 h9 {) F- T3 O6 `9 ]5 dhimr <address> <value>. sample: himr 0x80040000 0x0
; v+ @% F$ [) X0 ~/ [+ P9 a8 Y/ c& C/ p! k7 s5 |# `8 V% N
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 V5 G5 F6 O* W  n! X$ ], ?
himr 0x80040000 0x00
: y9 p! m; f# G% u% T3 }: j- Yhimr 0x80040001 0x11
, z9 Y; u8 B& qhimr 0x80040002 0x22+ C- |3 d4 T$ s( V" b
himr 0x80040003 0x33
1 f: j; O+ S" j5 ?1 \himr 0x80040004 0x44
4 }( p% @( ~7 ~# r1 N! [4 A. shimr 0x80040005 0x55
# Y2 X9 R) A# Z9 E' m2 L: E3 \. G- S. L/ A
SN也是类似。
1 E6 K. N$ t: P, {9 \8 N& c1 d' t( u. G1 @
现在主要是,谁告诉我们MAC和SN的地址?: W" q$ G  M6 p9 u& ?
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; f' t9 h4 Y: @5 e$ ]2 I
一直想找到运程修改MAC和SN的办法,苦于无解啊

# B' c; ]& l+ G. P7 F, P: g' `源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * W  z, o7 r9 h* r5 I

" ^6 C! s2 n  P6 @  O修改的代码早有了。到今天不会编译。) _9 H7 z- Y  [3 g2 I, w6 C
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 c7 f) K8 g8 o8 y3 E0 b
  2. #include <malloc.h>
    ! D- G. |, O+ |0 K# g
  3. #include <sys/types.h>
    7 T- z. `$ Z( b. H8 [
  4. #include <sys/stat.h>
    : N+ r) n( X/ }5 @" M
  5. #include <sys/ioctl.h>
    / g) q5 y$ k* M! J: t0 N
  6. #include <stdio.h>
    # {1 t1 S% Q5 q
  7. #include <string.h>
    : C( A2 h* q0 [

  8. - |0 q/ |5 S% F/ T5 C
  9. typedef struct {4 p  H: y, @  E. D
  10.         unsigned int        e2prom_cmd_sub_addr;; t* b6 ?3 M6 T: a; p
  11.         unsigned int        sub_addr_count;
    6 [" o5 m& @7 R- s+ \5 u
  12.         unsigned char*        e2prom_cmd_data;* j" ]& Z- q4 ]- l+ ?/ z
  13.         unsigned int        data_count;
    ' h: {; p. y. V3 s
  14. } e2prom_s_cmd;
    % o% t4 |2 S2 o- L4 A
  15. - P" @8 a0 d' h( \+ w( q
  16. #define E2PROM_CMD_READ 1
    2 W+ `, ?$ m: d
  17. #define E2PROM_CMD_WRITE 2
    ) R/ l) Q8 ]  A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' B& O7 s" M" t3 y# f
  19. 1 r- {1 f  P5 _; A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) B8 T! a% y0 @
  21. {
    . |0 V8 V: n, z0 E5 ?' q
  22.         int fd, ret;6 J0 w# R2 Y% Q" R# k
  23.         e2prom_s_cmd arg;7 Z  h% t# v% z  H* I
  24.         unsigned char buf[0x18];
    2 h6 N6 r* v1 s2 ^$ v$ w2 ?- w& d
  25. ; R" ~2 R  z, V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. ]8 ?2 W5 X6 ~2 L2 |8 I# n
  27.         if (fd  < 0) {
    % t/ z1 t7 S: p/ _* i2 s- A; N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / W& u8 ]* Q* [; x' s" L2 S) D* k9 n
  29.                 return -1;, ^3 b# F  Z: X7 m
  30.         }# E0 T2 W; S. ~& b. l/ o3 B" b
  31.         arg.sub_addr_count      = 2;" Y) E* l2 Z. q+ J0 c9 r) Y; ~
  32.         arg.data_count          = 0x18;# Y) n: A3 F; t, P4 U* ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ W+ W( b( ^) w+ W1 o
  34.         arg.e2prom_cmd_data     = buf;
    0 b/ m; s, {$ ]( N( e6 D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    : k0 B+ [: y/ E! N! z
  36.         if (ret != 0) {; ]; ^& T% T; ~8 m; b% s/ ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % L! u# ^$ l6 Z8 q! l5 J$ \+ _( U
  38.                 return -1;* n4 I. w3 x; r* T2 n3 `
  39.         }
    & H7 ^- }# F4 h  L# R- {
  40.         memcpy(mac, buf, 6);
    2 q" v6 z8 c, d& X3 w
  41.         memcpy(stbid, &buf[6], 18);2 v* H+ h1 ^. m$ T  u& l
  42.         stbid[18] = '\0';
    5 @( r: G% N7 Q! B% {. [% W: O

  43. 0 O9 Q) N$ U1 G/ N( ]
  44.         return 0;
    / P2 G# ?! d0 j! Z* H" w
  45. }" V% v) s1 _6 U2 T2 Q

  46. . A8 ~9 G8 I/ i2 P; b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), g" |7 z; b! {; N6 ^6 Y
  48. {
    * ]" }( b- i. h! D0 y' ~
  49.         int fd, ret;
    1 \: \: A" L/ f. q3 S8 \
  50.         e2prom_s_cmd arg;
    & q  g2 \! x4 Z. d4 Q
  51.         unsigned char buf[0x18];# ~: E' P# f$ `, O  C9 g

  52. ( A( G+ ?2 o0 ?, F; L/ E
  53.         memcpy(buf, mac, 6);/ p; l" ~+ \, E3 C$ a) i- U
  54.         memcpy(&buf[6], stbid, 18);
    6 m8 T* B% l8 H& Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);5 S: t2 }8 \2 Q
  56.         if (fd  < 0) {) S$ ]+ F* e. m" [' a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : y. z8 W- O3 E% A
  58.                 return -1;# l) T3 {$ Q+ n& a) W
  59.         }
    * R1 }/ p6 y% E; n1 z- I0 _
  60.         arg.sub_addr_count      = 2;0 a, F1 J$ O8 w$ ^0 t2 c' `6 w! ^
  61.         arg.data_count          = 0x18;  N, a4 O- O5 O) }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , `6 T1 j0 `+ e/ B' C# S7 A% u
  63.         arg.e2prom_cmd_data     = buf;
    4 h* P) i" K  {$ P' c
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 Q$ X, Q" l3 O6 D' Z  U# _  z
  65.         if (ret != 0) {
    # m+ e" X) g' ], T; v$ f5 G' g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 O0 k6 D% S% g, M+ I2 F
  67.                 return -1;/ K& I. H. o$ T$ {$ S' C  `
  68.         }
    5 L1 E5 e6 ]* H& j' @8 m$ }
  69. - ]1 A  Z" }5 C9 q# c- c
  70.         return 0;- A( t! W9 h# a* p. p
  71. }& P. r/ B! L; s* \5 s& W% l
  72. $ g6 y3 |7 A; x2 r
  73. int main()
    8 ^) p% B- |- e6 T+ C
  74. {- d: ^8 D' N  C" ~
  75.         char c;, j' _& W' O5 x
  76.         int i, macs[6];
    , T) [! _, S" Z( d" T' p6 n
  77.         unsigned char mac[6];
    4 R7 |; x: H- V4 Z
  78.         unsigned char stbid[256];2 u2 M% v- f: P* t1 q9 {& x& w) b

  79. 0 S) A6 k4 c; C; e8 q
  80.         if (readparam(mac, stbid) < 0)
    3 u. K% D2 @7 ~2 s  c7 B& `
  81.                 return 1;/ u% l! L/ r; `

  82. 6 Q4 u  Q+ e) ^
  83.         printf("Current parameters: \n");
    6 j# N9 H) v8 g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 K; m9 T" T4 p; H
  85.         printf("  STBID: %s\n", stbid);
    9 ~8 X4 ^) e+ L
  86.        
    2 N8 e8 ~+ w: N2 Q$ S2 R# V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");: `, D6 r. S6 I" l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  }" }: \9 l' p$ ?: Z
  89.                 printf("Input MAC error\n");
    $ u  N9 J' s, b; p+ _; \
  90.                 return 1;3 U6 \* p; m- C' n3 V, p4 T
  91.         }6 U, g8 F6 T  s1 c" B+ D, _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 r0 T% r2 O5 M
  93.         printf("\nPlease input new STBID: ");0 R3 N7 @8 u/ ]* q
  94.         scanf("%s", stbid);
    4 M4 {' J! v$ }2 i2 S2 V
  95.         if (strlen(stbid) != 18) {
    % a# x- c* j0 M( D$ u
  96.                 printf("Invalid stbid\n");
    * q) m" B4 C) W. F- z* L1 L
  97.                 return 1;
    6 w; Y7 K: ?) e6 {
  98.         }
    3 O( s* x7 A7 x! A( |: d
  99.         printf("\nNew parameters: \n");
    $ N$ Z' [3 ?# x; V, Z: I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! z$ T! f% z+ A% `) R4 V' @6 f7 |
  101.         printf("  STBID: %s\n", stbid);  S1 O, c/ ]5 v7 X5 i  _
  102. ; O6 H6 E! Q& n7 J1 i; }, v
  103.         printf("\nDo you want to change paramemters? (y/N) ");) n+ Q" [6 |5 i+ q! e3 I
  104.         for (;;) {- N9 X! l4 K  K; w* H! T; y7 V
  105.                 c = getchar();
    $ \3 P, r7 @/ [3 V+ N9 E
  106.                 if (c == 'y' || c == 'Y')5 f: d. C$ U  F$ C( C* Z
  107.                         break;. i- g" M" H; u+ |' b; M
  108.                 if (c == 'n' || c == 'N') {
    7 _+ x5 S0 N. ?# U
  109.                         printf("\nAborted.\n");
    ) {. H; \& p) y# W" |5 c6 H( P/ K+ _
  110.                         return 1;
    . u* L* B, X  c6 ]6 k# {9 m$ }; z
  111.                 }
    2 S" Q2 c# {" U: X" V# `
  112.         }
    8 p& M9 H- |$ ^9 g4 ^3 Y
  113.         if (writeparam(mac, stbid) == 0)
    $ v% V! _2 e( N
  114.                 printf("Parameters changed.\n");
    8 e8 ^& e1 m2 `' t9 k

  115. , r+ v+ Q& V& ?0 d$ D! A$ \; ^
  116.         return 0;
    5 x5 Q! O" Z: 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
/ J  H( D3 O2 H) }在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ b2 f' @& V2 d& N
你用的编译命令行格式是什么?' M' D% }0 f, u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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