找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15233|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      Z+ w- f* K$ q" u' x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 _! U) }4 W' X+ d/ _  Q  _) b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# [( [% W7 {, M( s/ t3 ]usage: himr <address> <value>. sample: himr 0x80040000 0x0: R3 J; t0 \6 z* C5 Y
* D$ s" y& g8 o  X) B7 X

6 H- _( m1 [8 ~7 u不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  b6 B% P. U# u* U+ @6 n  S9 G5 {- f. D& r
补充内容 (2012-3-8 09:42):2 D) i- o( |2 Y8 j2 M" h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 e5 }0 p& }% l( A- f" c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! j6 n- J  y  `1 W$ ^* r

# E2 C8 B. H" `9 r) S  A) l; ]0 Fhimr <address> <value>. sample: himr 0x80040000 0x0
4 W( V" h" F  k% j/ y- n# g' r: _1 C/ y- C' }6 m. t
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) Z0 ^8 _! r% }' M5 i0 e& E
himr 0x80040000 0x00
3 r6 [: G  A7 R6 z0 ^" @! Yhimr 0x80040001 0x11( Q! L+ G3 L- C2 x/ |2 U% J( M0 @
himr 0x80040002 0x22" v6 n9 F. k; C8 O
himr 0x80040003 0x33* t/ v' |* Z  s9 x; e1 X
himr 0x80040004 0x442 z" Q0 P+ n" ]% s
himr 0x80040005 0x55
( k9 A" f/ L- Z) _
( b  x. j& @) K4 ~5 d5 g2 P* b$ hSN也是类似。# {8 S' y# t( t& F
2 V7 ^- Z6 @) L
现在主要是,谁告诉我们MAC和SN的地址?
2 t/ @" x( U1 q3 N9 O) |$ P, _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 Q4 t! m) o/ D8 f
一直想找到运程修改MAC和SN的办法,苦于无解啊

0 D$ J( Q& P7 W5 X' E; _# S源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 ^3 h, U6 G* }

  j0 s; I8 K# R, N  i1 i修改的代码早有了。到今天不会编译。8 }6 {# |6 Z% n% Q; m" s* ^
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>+ |0 i2 \9 B- `. N  Q
  2. #include <malloc.h>
    * w3 N2 |* [8 c+ j
  3. #include <sys/types.h>
    4 P1 a& w/ ~1 O2 o2 d
  4. #include <sys/stat.h>
    ; O' @1 }" ?& M/ ?% K4 q; W) m
  5. #include <sys/ioctl.h>
    2 V0 r& U4 [, v; U
  6. #include <stdio.h>
    " e) C& m( z3 F2 [! G
  7. #include <string.h>2 c1 S; N) d- \) O! A" |$ \
  8. 1 Z: S( v" R" t% c5 K/ }
  9. typedef struct {; s  r5 J% g( w0 _' @
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 a& o3 Y, R9 a8 n" D
  11.         unsigned int        sub_addr_count;$ i/ U  B# v+ M. B* B/ R
  12.         unsigned char*        e2prom_cmd_data;9 z. k4 I0 r! |2 o& b
  13.         unsigned int        data_count;
    1 W) x( m8 Y; w' L! ]/ {
  14. } e2prom_s_cmd;+ P) f) v$ ~5 R8 G. x' c
  15.   L* s( S$ E' k3 ^
  16. #define E2PROM_CMD_READ 1
    ( K/ ?$ i! U$ a5 G
  17. #define E2PROM_CMD_WRITE 2
    6 w4 r3 d% N& E+ n0 t% Y& M/ I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' ]$ ^& ~; p' i/ p8 K
  19. 8 I! Q; n' o4 o1 N3 ^% k* d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) ?8 d& o2 J. Z+ w  G& n
  21. {
    9 _8 J1 y( i' N8 S% _
  22.         int fd, ret;, Z8 M' z" I2 `. a/ l- y
  23.         e2prom_s_cmd arg;; L4 z  q  k2 n& @: q( g
  24.         unsigned char buf[0x18];
    ( _( y7 \6 t+ y* ^; [" v; T5 z6 @% ^8 R
  25. 6 K$ Z) b! }  C& {% f& x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ j/ K) l" y5 \5 y
  27.         if (fd  < 0) {: U$ }9 G! A* [. @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. w7 J% i, d) B- }& j- U- k, M
  29.                 return -1;
    2 x& S; c6 L9 b1 J( S# x; ^
  30.         }4 _) b) r1 s2 e1 k' n7 f
  31.         arg.sub_addr_count      = 2;! y; B! a9 d; m
  32.         arg.data_count          = 0x18;; y2 g$ U' R( O
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # H% O$ f0 [! J' d7 y
  34.         arg.e2prom_cmd_data     = buf;
    $ j( O  s0 Y, e+ N* `+ t- A( n
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & J& Z- P, q5 I. U* V
  36.         if (ret != 0) {9 M6 w1 k( r: n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ' ]! d% h4 V" ?
  38.                 return -1;* Z% V: A! T9 ]+ ^$ S9 p% Y
  39.         }
    3 {2 c+ x; J( {, a- i; f
  40.         memcpy(mac, buf, 6);% h1 |5 m0 U7 c: h' Z, E
  41.         memcpy(stbid, &buf[6], 18);( L. I! y" H6 x3 X* j7 E
  42.         stbid[18] = '\0';
    2 y5 P8 m2 E1 N: X. R6 B

  43. 1 f' e* `, O6 U
  44.         return 0;
    6 s3 F& D! Q; K; x+ _
  45. }
    , U; b. e( B- c/ ^

  46. + W2 ~# F9 Z2 c8 E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . E* I; t' k5 @6 F' C5 D3 u, q6 w
  48. {
    5 [7 v$ D$ k' I3 |+ y
  49.         int fd, ret;( D+ {7 K9 [  \* H
  50.         e2prom_s_cmd arg;
    + q8 I' ~4 d2 G- K/ w( q
  51.         unsigned char buf[0x18];9 R9 |$ y8 b9 t* v
  52. ) A4 |+ v% G! ~& [5 e, W
  53.         memcpy(buf, mac, 6);* y3 \) e! t* K
  54.         memcpy(&buf[6], stbid, 18);1 E3 h* w# L! y3 t  ]9 h/ b1 D( b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; t& }* ?, }% x5 M9 B) ^0 s* g. Y
  56.         if (fd  < 0) {  {/ k; D+ H; A: o3 E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 U6 U3 ~8 k! m* F
  58.                 return -1;1 S/ }" U; b1 |( m- C. J3 s1 M" ^
  59.         }
    ; }) `: v+ d! C; a
  60.         arg.sub_addr_count      = 2;3 l& S6 ~( H$ [
  61.         arg.data_count          = 0x18;
    . Q! z3 e: G2 r
  62.         arg.e2prom_cmd_sub_addr = 0x290;* ]* X, B; _9 Z
  63.         arg.e2prom_cmd_data     = buf;
    1 V/ l) f( e8 F; m2 |! F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " l8 O1 {+ F1 f. z  ]. o9 o
  65.         if (ret != 0) {1 y# M% J4 J8 R' A# k/ x( n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " {, _5 y* `- y& F' F+ i* g& t
  67.                 return -1;8 N( T6 \( i1 Z. A7 A- F% J' R
  68.         }9 d, y3 M8 P  ]! q) D" k

  69. 5 P$ h, R; V$ K( Q
  70.         return 0;
    $ L+ x" }( R% W) S5 l7 P1 K% {
  71. }
    ; b+ ^1 Z5 B) N8 ]$ [+ p

  72. $ e: n* n( V3 d7 ?) U5 W
  73. int main()9 K- r* l: T! d/ _$ J: i
  74. {
    5 K8 Q, h7 A( S
  75.         char c;; w5 k8 G6 G$ I1 a& c" Z; ?
  76.         int i, macs[6];/ M) u3 p$ [* e( x# F# |
  77.         unsigned char mac[6];
    8 k4 Y) m* ]+ D  u$ Z; K
  78.         unsigned char stbid[256];  R0 x7 a" k) Y7 Z0 U5 `, Y3 o

  79. / j1 }$ d3 o( B& U
  80.         if (readparam(mac, stbid) < 0)4 c8 t, s* w" p+ Y& X- {- C  f! N/ _
  81.                 return 1;) q: N- Z9 [) v, c
  82. / @& @6 I  b/ v/ C6 _
  83.         printf("Current parameters: \n");
    & X. L' \( {8 C6 f
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - w, V% [+ Q; j! _/ ]' ^
  85.         printf("  STBID: %s\n", stbid);
      l5 O# m/ X: [. t8 r
  86.        
    7 g6 ?5 a# q3 {" b7 P. G1 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      T) z  Q2 b! Q5 K
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : j9 i& N5 S; ?# y
  89.                 printf("Input MAC error\n");% X1 j& I( f; c0 @
  90.                 return 1;0 P$ Q3 z9 H+ H4 h
  91.         }
    . [- V; H6 u' c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. S5 \$ T' Y0 r( v- m0 I# S- q
  93.         printf("\nPlease input new STBID: ");
    ( m! q8 p4 u- E% A, x! i- F6 U9 e
  94.         scanf("%s", stbid);
    5 O6 f7 q/ B$ O" B; r% f1 `
  95.         if (strlen(stbid) != 18) {' c# b1 o8 Y7 T0 ?  [2 A
  96.                 printf("Invalid stbid\n");( ]1 L- f0 k+ F* q4 Y' ?
  97.                 return 1;7 f  [+ A" V2 p, b2 j, S
  98.         }
    ( H+ H; S* V+ [/ j
  99.         printf("\nNew parameters: \n");
    , U" {; O, m5 u! K. `5 M- U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 K5 V5 m2 B" g# F( ~. B6 J
  101.         printf("  STBID: %s\n", stbid);5 g( N2 L. p9 ^% }# b

  102. * e0 O* m( k8 B1 X
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , o; ~; g+ D- [$ D# B/ o: x! b
  104.         for (;;) {
    $ v( S, a' Q- b
  105.                 c = getchar();! d( S+ _1 Z. H' K& D2 Y
  106.                 if (c == 'y' || c == 'Y')
    % {$ U3 c. C9 {: m4 J% A8 v
  107.                         break;
    2 E; y" A, c/ G
  108.                 if (c == 'n' || c == 'N') {
    / v$ T- v  X  H9 \- K. l: L6 z" ^0 X
  109.                         printf("\nAborted.\n");4 G6 `% O  e0 A2 I% T2 z
  110.                         return 1;' X* g7 N- m* ]5 _9 Z8 f
  111.                 }
    ( `$ Y/ d( J- n2 ?+ B, f6 F0 |' ~
  112.         }
    2 L" Z0 H* W4 z' @" M
  113.         if (writeparam(mac, stbid) == 0) 8 Z3 Z1 V& u4 |3 R' i7 H5 R
  114.                 printf("Parameters changed.\n");
    3 e# r. {' G$ d0 x

  115. # i" k. K5 v8 i/ }
  116.         return 0;4 V3 Q# {2 J6 k% o: G# F/ g* 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
" U0 j+ [; H: |, B在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ {" H0 D+ P. A3 o6 ]% o: C0 J
你用的编译命令行格式是什么?
. ]) x. _* ^/ c4 e& \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-10 07:22 , Processed in 0.042534 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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