找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15193|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ U# @: L/ e7 y6 J
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % ?& v; \3 f+ e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& ?; d1 d. n/ ~1 |/ m
usage: himr <address> <value>. sample: himr 0x80040000 0x05 _1 K" n# G! Y' U. T

9 @$ B8 h0 e" w) B5 v" y. h
" \0 ]  m, j6 K8 a1 W0 j# o5 H. l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 r7 a, D; ?  z* z, a, m! K% W( r. E. R: O/ V
补充内容 (2012-3-8 09:42):
/ U# _. _$ V- s- s/ D3 d5 yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) Z! C! s' Q+ W3 L* n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。8 |' b, P' ]% D
3 w. V; n4 u1 y) S1 Q
himr <address> <value>. sample: himr 0x80040000 0x0
6 V. _+ O  r) A" R; E2 A! }3 o8 }- v$ T! K3 G6 j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' U4 ]5 T  {4 G6 s0 X9 O3 Fhimr 0x80040000 0x00
( i  Z' J! f2 C; U) E: f$ C% khimr 0x80040001 0x11
/ A; ]' a7 u; l/ F: Rhimr 0x80040002 0x22
9 u) M+ y' K8 p1 b% Y6 W( hhimr 0x80040003 0x33
6 @0 G0 Y% {# v8 [3 shimr 0x80040004 0x44
! i! Q/ d- X% ~2 V$ J9 U, p, Bhimr 0x80040005 0x55+ ]5 Q, t! \! M7 t
. N* _  o2 F+ l  B" y
SN也是类似。/ R2 B5 _1 p  z1 U7 j

# ]* g3 g- ^+ P9 O; [' U. l; C# o现在主要是,谁告诉我们MAC和SN的地址?
3 O% G+ C: v, o+ L
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   A3 E- c8 V3 s& w5 u7 x
一直想找到运程修改MAC和SN的办法,苦于无解啊
% X9 l) k; Q7 X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; I/ \0 g9 I2 E5 o9 ~
/ [* P/ d2 M  e0 \0 Z
修改的代码早有了。到今天不会编译。
. k5 _* |4 C7 L! r; S; a' G需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - w* U) {; d/ f/ J2 J9 @- h
  2. #include <malloc.h>; Z  b, v* ?8 C# _2 ~2 {( x
  3. #include <sys/types.h>
    ! r5 j7 x' \5 y: N. R
  4. #include <sys/stat.h>
    3 o% D. s9 j! \) j# d  |
  5. #include <sys/ioctl.h>
    ' v7 `' Y3 }7 @  U3 G0 s6 O2 u: S
  6. #include <stdio.h>
    " L" \# v9 F1 G' [+ v/ |1 p  B
  7. #include <string.h>
    & j* N& |& A/ z3 J! H
  8. 0 Z7 H7 ^# p+ s" q0 G3 I( o
  9. typedef struct {
    6 H1 v" L1 d* n/ k( j4 I
  10.         unsigned int        e2prom_cmd_sub_addr;
    ' F) W6 a$ ?9 t# G: m/ T
  11.         unsigned int        sub_addr_count;" Z; @; }% E4 y) R0 ^
  12.         unsigned char*        e2prom_cmd_data;! U- Y2 X+ ^$ \7 E1 q  n6 l3 u
  13.         unsigned int        data_count;
    $ b) `5 o+ n$ R- ?( R1 |! Y
  14. } e2prom_s_cmd;4 c2 q: Q# J& X  K) O

  15. , R& i* _% c8 g4 B& C
  16. #define E2PROM_CMD_READ 1
    ( |* z; |: C+ i8 `* \
  17. #define E2PROM_CMD_WRITE 24 j0 f7 F1 |; l5 q- k# v. Z& o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 B) |4 d1 F+ P# P$ p) I

  19. ! F- g8 F# l0 X# B8 K9 M  j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 w) B* a% X3 \- R& M8 ^
  21. {
    4 z" ~$ Y. R7 T( t1 E
  22.         int fd, ret;
    , t% q7 O+ g% \/ i
  23.         e2prom_s_cmd arg;/ n/ A# t2 J; n9 m4 v
  24.         unsigned char buf[0x18];
    4 ?+ e; p: c( i- [$ {# x
  25. 9 h, G1 q4 Z0 K# \2 r" `0 t
  26.         fd = open(E2PROM_DEVICE, O_RDWR);/ [. B/ J4 i4 ^6 P
  27.         if (fd  < 0) {
    9 d. M' g  M% S4 V' j( ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 P" o' ]; s( S+ n( u0 \
  29.                 return -1;
    5 q" |5 A- i: v5 q3 \. h4 H6 y
  30.         }
    5 D, J* b* E! ~  F# h$ T) I9 t
  31.         arg.sub_addr_count      = 2;
    1 Z9 w, ?. @5 P+ S
  32.         arg.data_count          = 0x18;5 p" _. H- [: N# ^) k+ E
  33.         arg.e2prom_cmd_sub_addr = 0x290;: d( D% L- k8 m0 e$ S- i" w
  34.         arg.e2prom_cmd_data     = buf;
    8 I8 a  ^; S! J4 q) Y+ p0 u/ N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + m. \# X  R" J* @( u
  36.         if (ret != 0) {0 y/ G9 W3 \. Q( b3 I& q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# R. O6 }) B+ V/ Q
  38.                 return -1;" j& J% B, l9 |$ d
  39.         }
    9 F$ r2 `5 z2 u2 R$ {# k- i; Y
  40.         memcpy(mac, buf, 6);, n$ e. _' d; y( t) R5 v
  41.         memcpy(stbid, &buf[6], 18);
    0 y) W" x, l: s9 W  r( ]+ o$ K* Y3 D
  42.         stbid[18] = '\0';
    % C9 H+ B% H. p" [0 c$ z

  43. 9 Q% Z- |4 s& Z* t
  44.         return 0;2 J5 k- x) ?/ [% N. w
  45. }1 ?  Q4 G4 G- w

  46. ) C/ F% J( {# }- N
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / x. p: k! r3 [' e  y
  48. {
    # ]9 j% i4 A" m* |) S, r
  49.         int fd, ret;
    ) O1 _2 R! X0 h( X8 z
  50.         e2prom_s_cmd arg;
    1 _# V, q5 O5 Z6 F
  51.         unsigned char buf[0x18];
    + z2 W& j) v+ L& ~7 L. Q

  52. 2 f7 B; g* M: [# @
  53.         memcpy(buf, mac, 6);
    - |+ q( g8 F- N2 L8 [$ k6 U
  54.         memcpy(&buf[6], stbid, 18);
    1 O+ N& p1 d- j9 X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 u9 y% e# k9 F& C$ A3 _
  56.         if (fd  < 0) {
    ( x, Q& g; D# W- D4 d( ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , a% o( o' J+ F; e# s
  58.                 return -1;
    $ o' Z  ~1 h+ h* T* B
  59.         }4 R3 E' Y) g8 a/ `) v
  60.         arg.sub_addr_count      = 2;+ @( ]& K6 R# N6 k4 V+ g% W
  61.         arg.data_count          = 0x18;
    1 I3 \6 [+ k8 a! Y% j! q# a
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & [* @: G- j5 K( L7 m- b" s/ E5 B
  63.         arg.e2prom_cmd_data     = buf;& g" g; R/ R' @5 C. e7 _( a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. r% n# ^2 _( e1 Y- j# a
  65.         if (ret != 0) {
    : K  `8 F, S3 S8 V  k6 z1 W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ k& ?% D; m: l1 j7 F' d
  67.                 return -1;
    7 h' ?0 p# D% b- X* y1 d* H
  68.         }* W: H# C5 o3 x! v/ T# s

  69. 5 m  {4 C' Y/ Y" ^2 L/ l) g
  70.         return 0;$ _8 Z1 l# O* d2 Z/ L) |
  71. }, f0 E# u' U/ r- m% h: L( T  p2 o; ~

  72. + [' n' ^( T- e( f* C3 T# m& I
  73. int main()
    ! v1 D2 ]0 C- ~( X  K# n0 w; Q  U' b: [
  74. {
    , E' x: b) P8 b
  75.         char c;
    6 ^* r! D" a( `2 D' W
  76.         int i, macs[6];
    ) ^9 s/ {: Y+ c* Q5 K
  77.         unsigned char mac[6];
    , {4 {! Y) P3 _; V3 }% h+ g
  78.         unsigned char stbid[256];2 Q- U( _7 j" e/ Y8 l% V" ]3 E) l
  79. ' D" z& d5 P1 J7 u
  80.         if (readparam(mac, stbid) < 0)
    0 u; b  o& ?0 _1 i
  81.                 return 1;
    : X" Z% U1 R6 M0 \

  82. ! U, Q7 c% d3 k0 p$ J- |
  83.         printf("Current parameters: \n");
    8 O' @) j8 Y  j# C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. c+ ?+ G! i( d
  85.         printf("  STBID: %s\n", stbid);+ s  v9 b( g  A/ W$ K: {' D
  86.         " I+ x! F+ _  H9 Q; Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " T- l* D) B) q8 [* d4 g) H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) a1 H- C( m/ r& _5 K7 W
  89.                 printf("Input MAC error\n");
    ; M. b9 v- P. V. X, m! y8 o
  90.                 return 1;9 ]. K1 G; c7 h9 @
  91.         }
    % R, A8 V' I- l! Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 B$ g/ k  ^* T, F$ a  Y
  93.         printf("\nPlease input new STBID: ");
    / e' J! |* n" b, j) q
  94.         scanf("%s", stbid);- H. Y1 U$ W' U- l& D. U9 m  D
  95.         if (strlen(stbid) != 18) {
    # ?" _! G4 a- w+ I& E, T
  96.                 printf("Invalid stbid\n");
    3 w: S3 K( `4 h1 x7 e. u' K
  97.                 return 1;
    3 S  d! X& S# b9 b: x9 ^
  98.         }1 y  r6 E; {5 n6 s6 H' k
  99.         printf("\nNew parameters: \n");
    4 e- J/ _6 w- X1 r8 @& v) ]% G- O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # q2 @9 x7 R& ~; }. T# A. S' u$ W1 k
  101.         printf("  STBID: %s\n", stbid);& Z' K4 Z# @; W) E  a# _3 l
  102. / w. |& R* H' s/ B* @# H
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 i: Z) q- ?3 j8 t6 Q
  104.         for (;;) {- _- p. Z1 q, a7 g- |$ j
  105.                 c = getchar();
    * A! @4 b3 F3 H# T9 ~( i
  106.                 if (c == 'y' || c == 'Y')
    & c7 Q4 J/ T) i9 w
  107.                         break;
      ~7 Z" Y2 g1 N/ o( Y# {6 B  V1 l$ A
  108.                 if (c == 'n' || c == 'N') {' S. Q" j3 ?$ ?, z
  109.                         printf("\nAborted.\n");% X( \, u7 ~9 X' R$ i8 G1 [5 @; y0 c
  110.                         return 1;
    2 e2 B! e' o$ A: s
  111.                 }
    5 b* \1 |. F2 p7 K& d1 f8 w
  112.         }
    2 t1 o# q: J' C/ \/ }
  113.         if (writeparam(mac, stbid) == 0) ( b& I7 T9 c9 s5 }+ T# F
  114.                 printf("Parameters changed.\n");1 r# x  v( ^" d" E+ g* l

  115.   @  A9 t; \1 y6 E5 c  b! D7 K
  116.         return 0;& K, }7 v6 E* o4 W2 d  y$ |: ^1 f9 C
  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
+ p4 O' y* y/ P! a" T在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. g) Y0 W1 S* W3 s% T
你用的编译命令行格式是什么?7 C, |$ j7 B/ ?$ p6 t9 J7 d
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-3 06:37 , Processed in 0.034063 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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