找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14336|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % S! i+ _$ {# t/ O/ |( F0 i6 u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 S$ U/ `/ P4 q* c6 q: t* x2 S( b
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, y+ c# ~/ t$ }usage: himr <address> <value>. sample: himr 0x80040000 0x0
  |8 G$ P( e  p. h: t& E% K- {' [

# ~  j* ]* q0 ^* c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& K+ L$ H4 A$ J* L: ~) o& b( E/ X! o. s( r
补充内容 (2012-3-8 09:42):
8 B/ k. [5 o. E3 Q4 I, v( V% Bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% m2 i$ t/ M$ ?+ K$ `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
4 N1 c5 q; @$ \
1 o7 C+ N: k3 y4 D+ V2 Qhimr <address> <value>. sample: himr 0x80040000 0x0
* j" S/ U6 K! b" ~' T4 @6 {6 u3 z% {) Z5 ?( ]& x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. w3 E" u1 K3 W7 [" |# I, b! S
himr 0x80040000 0x00
3 ~: x% e7 S% A, shimr 0x80040001 0x11! f8 n+ p% J% r/ D! C6 m
himr 0x80040002 0x22# ^" S- z9 j1 I* D4 m. r
himr 0x80040003 0x33' F5 J* B2 V$ O# @" }# K4 ~
himr 0x80040004 0x44; C6 j- d: O9 r* ^: A
himr 0x80040005 0x55
" K, Y- i# j8 T3 n6 X6 k
6 t5 p- i- C2 K) eSN也是类似。
3 f0 z5 @" `' a* T: {( Q; t3 A8 T, I
现在主要是,谁告诉我们MAC和SN的地址?" {7 S$ L* D# u' |
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ y' O+ n/ T0 c. }9 B$ U4 c) N
一直想找到运程修改MAC和SN的办法,苦于无解啊
' s% \3 C* v8 x/ b
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * e/ r! h, v8 Y3 O6 G, l7 I: H
; Q1 R- z2 P7 h/ w& E
修改的代码早有了。到今天不会编译。
4 ], ^9 {; u7 I: p! q9 x3 |4 r# o2 j需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 S, q  o6 W1 L! ]3 r
  2. #include <malloc.h>
    # j# c' c" h9 \* R  f( f; t0 U8 k. K
  3. #include <sys/types.h>
    # Z: [) ~" l0 j& u; }2 k5 M
  4. #include <sys/stat.h>( Q' q( H2 ^- q; M; d- ?
  5. #include <sys/ioctl.h>: V% D7 T! ~2 w! F0 n; T+ \6 ]
  6. #include <stdio.h>
    , l! S, T& b. `0 t) Q$ d
  7. #include <string.h>" t8 N# T$ B3 u- l
  8. 9 C/ V0 J, G% ^% m6 x
  9. typedef struct {
    ) o) X5 y- u1 r" ~2 ^. V5 U
  10.         unsigned int        e2prom_cmd_sub_addr;
    & `% ~! x; P8 n; i. z' |, r
  11.         unsigned int        sub_addr_count;1 v- H/ y! n: l; U& v
  12.         unsigned char*        e2prom_cmd_data;
    ! [* P* ~; O9 E* e! e5 G6 k
  13.         unsigned int        data_count;9 E+ e. |6 S. G) M/ \! S1 v
  14. } e2prom_s_cmd;
    + f# Q3 }1 o* d! E2 F; z8 [# }% B
  15. / {7 o7 @/ q. q" P8 H4 `8 d
  16. #define E2PROM_CMD_READ 1+ F2 _2 {( o- m3 \2 D6 i5 r
  17. #define E2PROM_CMD_WRITE 2
    * X- P' z1 b- M. e) F* {9 s9 G, [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + N1 F$ H8 ?7 p" m% b% f

  19. 0 l6 L7 [) [2 A" r" |
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 W* h  n/ }  {. T- q. i7 r4 j
  21. {) N/ V3 F) e/ Z9 D  j* y
  22.         int fd, ret;) F! h4 Z& n- D) K- ?8 A# J
  23.         e2prom_s_cmd arg;% Q+ ~) ?4 e2 z/ z9 m- M, l+ s
  24.         unsigned char buf[0x18];) ]2 Q& u3 Z' u1 R1 c

  25. ) s' g' }1 ^. k+ E' _2 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' b8 `2 c% }# }* N
  27.         if (fd  < 0) {# g+ ~' p; l! v) j) t2 x, z: D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 E  U+ T3 }+ [" q7 Q2 P! b
  29.                 return -1;
    # ?3 _6 s0 I4 e& j
  30.         }
    3 I  {( X/ T( M% j# [2 J
  31.         arg.sub_addr_count      = 2;- e# I! {( e( @% A
  32.         arg.data_count          = 0x18;
    2 C% X8 A1 H. x4 h1 m9 \+ R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ U: V' A( {. t* j
  34.         arg.e2prom_cmd_data     = buf;
    " G8 s# h6 U0 R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " c0 T6 s7 S7 V
  36.         if (ret != 0) {
    / S: y/ @/ S, i- S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; N6 c$ r$ _" A7 i
  38.                 return -1;  k5 {) m  Q9 G" B* X& S
  39.         }  O0 F  ?( m! q) b4 Q( r3 P+ b
  40.         memcpy(mac, buf, 6);
      h# T/ P6 C6 i& Z) b
  41.         memcpy(stbid, &buf[6], 18);4 q5 v0 `7 e- C% g% L
  42.         stbid[18] = '\0';7 ]' f' S% ^9 [
  43. ! y( H, S- k, _: L
  44.         return 0;
    ! i% M& W1 Z" W' j& Y
  45. }
    0 n- H6 p2 K0 O! F3 M
  46. 2 F: b" M& G9 Y2 w2 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; H- w* s! ~& g3 R6 d# G7 G
  48. {
    8 V; }) F4 v0 i$ C9 [' j: f1 U* G9 g
  49.         int fd, ret;
    $ {( `% _9 c  s& _
  50.         e2prom_s_cmd arg;
    & }/ e( Y1 b' Q
  51.         unsigned char buf[0x18];3 F5 B: |& m7 i* `8 E
  52. 4 |$ u! l+ R. c  L. f
  53.         memcpy(buf, mac, 6);3 F1 E2 g& x# W1 o9 I' P
  54.         memcpy(&buf[6], stbid, 18);, t! q7 d  b4 O7 R% O8 @& R& I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " H, x8 Z: S( N" _. n8 q
  56.         if (fd  < 0) {
    / D* f$ f. o, W5 d1 h4 x% y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 a# V/ d6 z# V! B( S8 }
  58.                 return -1;
    ( }1 O5 o1 [( g) X& R0 D& {# L
  59.         }1 I4 z0 Y& E$ N/ O3 W
  60.         arg.sub_addr_count      = 2;
    ( z+ A) e7 x4 P+ ?
  61.         arg.data_count          = 0x18;
    . d8 B/ C6 \9 Q$ [
  62.         arg.e2prom_cmd_sub_addr = 0x290;/ H6 l3 ^# _6 h& e
  63.         arg.e2prom_cmd_data     = buf;9 g, D; J. N: ?/ K7 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 ?- ]0 k2 g4 m
  65.         if (ret != 0) {$ a( {# y  e. ^/ W( m* L% m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' U: f9 i+ A( @
  67.                 return -1;
    & E! N  Q4 f' v5 f
  68.         }
    $ ?! P. _. ~4 p) ?" M6 w  `: B8 z

  69. 9 L7 \0 e7 y/ {
  70.         return 0;0 l( {* \% O! {$ i- c
  71. }
    4 n4 N0 ~( [( j4 e; m1 I# _  ^7 M+ e

  72. * v! t; j+ r  Z: w& J
  73. int main()) T  O5 r$ D! B0 G6 c- E( W- f: b6 e
  74. {$ x2 a5 D+ W5 x" r1 K9 P4 F$ W' h% F8 _
  75.         char c;2 y" \! e1 v7 X/ m- P
  76.         int i, macs[6];
    0 s5 E( {/ R6 U! k9 _  p
  77.         unsigned char mac[6];
    / S* S! h( T' \+ {! i7 r* k
  78.         unsigned char stbid[256];1 J- P/ C! s! G- U2 y

  79. + v- |1 |: b- r: M
  80.         if (readparam(mac, stbid) < 0)1 P8 I4 |4 D# W1 ?9 k
  81.                 return 1;4 v$ e. F- d' S2 u7 L$ S3 O9 P; |

  82. " @2 Z! v* p" i* V9 [, ]
  83.         printf("Current parameters: \n");
    ! R: O: ^$ M, ^4 k  s: H7 Y* ]) n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 ~8 E" K; P# k4 u; g
  85.         printf("  STBID: %s\n", stbid);3 k  @: ~0 g7 F/ e0 N+ |
  86.           e, C+ q: s0 D( h2 v5 F/ \$ {/ [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ _' m# T1 D6 `0 \% a- G  ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 w+ q. j$ J+ }
  89.                 printf("Input MAC error\n");
    , o: \( C' m8 m, R: `' A0 ^) B
  90.                 return 1;
    % x4 w; n1 L5 T- k/ [# Q% A. o
  91.         }  R8 M. J( C" n- P, C  w1 M6 f( f
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( I  V- f$ e) }# B
  93.         printf("\nPlease input new STBID: ");
    6 Q: X" K4 ?" q! e: s2 G) E
  94.         scanf("%s", stbid);! r/ A- ~* @5 c/ K* p' e0 s5 P2 O
  95.         if (strlen(stbid) != 18) {
    0 x8 d8 B7 D7 o0 d/ i3 `
  96.                 printf("Invalid stbid\n");) f9 |6 o% b9 m) H
  97.                 return 1;0 Z% U( r! a; D
  98.         }
    & B! T$ @- ~, _6 y0 W$ Q
  99.         printf("\nNew parameters: \n");$ J# y8 C; i( ?7 j( D& g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ b! \* Z9 e2 \0 X/ X4 R
  101.         printf("  STBID: %s\n", stbid);: \1 }9 F4 V/ O+ |- K% |
  102. * y0 I! P* B9 p* P3 |2 r, D# X
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    3 e7 _) M( Q3 c: i# o
  104.         for (;;) {
    0 E. Y8 L6 J9 p( {2 h
  105.                 c = getchar();
    + b/ ~/ w) A3 v7 m3 L1 [4 a  L
  106.                 if (c == 'y' || c == 'Y')  Y5 ]/ y0 a! ?. r( _
  107.                         break;6 A2 k+ e! N& I8 d
  108.                 if (c == 'n' || c == 'N') {
    2 i. ~' s# }5 Z: j* d; w& I
  109.                         printf("\nAborted.\n");
    7 _7 v5 a; ?) {# m# q" W' h
  110.                         return 1;
    $ v/ W& _0 z, c8 F6 z( v) O% y: f
  111.                 }
    + S9 N: r# X0 o- ?# q
  112.         }  A( J# T# f! `8 T8 F- P9 B; k
  113.         if (writeparam(mac, stbid) == 0)
    $ j: _( E# J" m4 O/ L" w) b& G3 P
  114.                 printf("Parameters changed.\n");
    ; [6 C' `3 \7 o4 m8 ~+ M

  115. ' q3 C* [- c/ ?. }: {& Z8 `; a
  116.         return 0;. B8 z9 x2 h. S" I  Z, r2 \
  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
8 w: T+ Q# f* I" S6 ]* [* W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; M6 O# W& x6 K8 f; D# z你用的编译命令行格式是什么?/ E2 j7 G5 z  _; K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-9-19 04:07 , Processed in 0.028566 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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