查看: 16914|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) q& @9 {9 U- @5 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - d/ F. L) c2 y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( w; d; Y' k: M+ Qusage: himr <address> <value>. sample: himr 0x80040000 0x0
. n# {- X- Y( B5 l) O* b8 D$ V9 u  d* G/ o( ?3 c3 l

. `, O$ [, `- C4 R9 d6 f! q! o$ S0 ~+ o不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, C$ b1 n. Q& `. k

+ \  L& H$ m5 Y. w! h4 s补充内容 (2012-3-8 09:42):6 _9 ^9 K, r; j2 n% q* C; h
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 ?6 E+ D) y( ^: ~* k% U/ r$ G1 d- }
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
1 u. n$ }) \- k" @3 f+ R5 X! _% V/ v; D- |. O
himr <address> <value>. sample: himr 0x80040000 0x0
+ ~% R2 L4 C0 Q/ O6 P+ j! O# W6 t; ]5 e$ e' j4 p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% j1 |, I9 _3 u( B: a6 r- g! @himr 0x80040000 0x00
' ]4 b  x, o9 L4 g+ y6 _, Phimr 0x80040001 0x11
: N4 A& y0 G5 u9 [( H! q- ]; Uhimr 0x80040002 0x22
4 s% S- _7 M2 k0 lhimr 0x80040003 0x33
* A- |3 _0 C9 `; h2 [" {, F6 mhimr 0x80040004 0x44
! s2 j+ X: V7 Qhimr 0x80040005 0x55
2 w4 a# I3 N' `$ L1 o8 {: g) Q, k6 C/ a9 Z. z/ `
SN也是类似。  \9 r/ }* Z  v6 u' V
7 ]; x" j+ @0 ^& f! P, \, V
现在主要是,谁告诉我们MAC和SN的地址?
8 |: \6 d  J9 f$ ?# W0 G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ( u6 l" j$ F* B1 U9 P
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 y  C# [1 ]+ V, `) A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- M3 }* Q  W. {% A% l/ w$ i9 D6 }% |& D4 R
修改的代码早有了。到今天不会编译。
! H/ o" [* W  N" Z  K需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># e3 A' j0 Q6 Q. E
  2. #include <malloc.h>5 G. w7 x/ o5 @2 }: g
  3. #include <sys/types.h>
    % o) X5 h/ x! M2 l/ ^  c9 ~
  4. #include <sys/stat.h>
    ! Y/ q* P1 l- K8 R. m$ A* Z& C
  5. #include <sys/ioctl.h>
    " o; O( N8 _/ b0 b4 b0 s8 f
  6. #include <stdio.h>! @( \+ _9 R& t% }
  7. #include <string.h>
    1 A& y7 x3 I* |+ J5 A% k' v7 V- Z% [0 ?
  8. * c& P/ c& |4 d& Q4 u( J: n
  9. typedef struct {
    # S- C8 P( k  \4 w, j6 v
  10.         unsigned int        e2prom_cmd_sub_addr;
    " |& o/ f( o4 B
  11.         unsigned int        sub_addr_count;
    8 y" Z0 D. ~7 V( P& v! X9 H$ K
  12.         unsigned char*        e2prom_cmd_data;0 l- R/ f: b2 l  I5 ]
  13.         unsigned int        data_count;# k& q& v4 ^3 ~  U3 M1 v
  14. } e2prom_s_cmd;
    ; d. x6 l6 S& J7 m* H: V

  15. 9 `2 M4 Y# s$ k8 r9 r! n
  16. #define E2PROM_CMD_READ 1
    ' W" G0 D2 G$ ?3 [) L: A' E, W! J
  17. #define E2PROM_CMD_WRITE 2. \5 j( h  C6 c* o! z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  x5 n' X( G- ?0 R" w6 z8 y
  19. : A0 s8 Z# H+ k/ m" B% _: W/ U1 N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 H* n: G% p9 p, d* H! z
  21. {2 H) M. R3 \* d. o4 i2 O
  22.         int fd, ret;! g7 S9 e) a1 b! q+ r. N
  23.         e2prom_s_cmd arg;
    & d' U0 F" C5 [1 k& z; ?- z& ^
  24.         unsigned char buf[0x18];
    ) }  d- H5 g) q
  25. - K' d. w0 p8 U4 R( D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 B7 u# q6 l1 Y7 j  X; F% a
  27.         if (fd  < 0) {6 J2 ?) {( L" t! \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 w+ F9 a( m8 v7 b8 P8 N5 m
  29.                 return -1;
    ) o$ g# Z2 n" m. Z% p
  30.         }
    / r! F) f, s. W$ Z
  31.         arg.sub_addr_count      = 2;
    2 b0 J' S7 K- p) g
  32.         arg.data_count          = 0x18;& Q! u% d2 J' h
  33.         arg.e2prom_cmd_sub_addr = 0x290;% R% R2 u, g# O% }
  34.         arg.e2prom_cmd_data     = buf;7 k+ ^+ ~( W2 p
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! U- u3 `% L4 O) E* [
  36.         if (ret != 0) {
    $ M( l+ K7 B! U0 E0 t" t
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 `9 p3 I( z6 A+ t: v3 [3 z
  38.                 return -1;3 L( }' `3 m& H. |$ c  v: V, g9 Z+ t
  39.         }8 `) m9 |7 h% Y( h) A& h- s
  40.         memcpy(mac, buf, 6);
    ( \% ^- _! T# w' g
  41.         memcpy(stbid, &buf[6], 18);
    ' C& y. b0 {; H5 l
  42.         stbid[18] = '\0';+ ?( ]: m& q+ ?: s; w, q* C

  43.   h/ j) [3 f- F+ Y
  44.         return 0;
    * y& }+ K# t. L. a; i& |; [
  45. }
    5 [( o* x0 r  [9 O. _9 L* s$ E& X4 w

  46. , `  Y2 j* B, |" s, W, e( _8 i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : R+ f' U1 C* a! B2 n
  48. {- F1 h/ _5 D, H* p4 Q$ E
  49.         int fd, ret;
    6 B/ i  F/ N3 ]) q% _- ]0 z/ x
  50.         e2prom_s_cmd arg;0 q* O' z# p$ J/ ]0 c$ [* A
  51.         unsigned char buf[0x18];2 o) t1 V+ H4 E: l+ r3 z

  52. * _1 `3 w9 _# U, l! S3 s( I
  53.         memcpy(buf, mac, 6);
    ( S* O, G; ^$ D' }) R. ]# M% \3 Y
  54.         memcpy(&buf[6], stbid, 18);8 U0 L4 G8 {! B" y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 X7 m1 n) o8 O% K8 d
  56.         if (fd  < 0) {- Z* ^" q8 M1 h( V: g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) m7 M1 s8 U1 P$ R* O
  58.                 return -1;2 a/ J8 N9 H# h" O
  59.         }% f7 z9 H1 t% W, l
  60.         arg.sub_addr_count      = 2;1 E( q4 C' _9 \1 d% d) b9 m
  61.         arg.data_count          = 0x18;
    1 e' N3 f. f' _: a) D8 E% C7 Q& v7 Q7 B4 o
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 _# `0 e7 S( O3 P2 @
  63.         arg.e2prom_cmd_data     = buf;
    4 d5 y* ?1 y. F4 r. `3 y% ~8 |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; U/ E: I2 o/ |+ I
  65.         if (ret != 0) {
    4 ~3 S( T; i8 @: |" o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; S# P. K" k# L9 [1 f
  67.                 return -1;
    ( ?% }6 c  L( U
  68.         }
    / b7 @' A, _8 i2 H! J
  69. & E/ F: X7 y/ F$ t& A) X) g
  70.         return 0;
    ( b3 u- K6 N. p9 `2 b+ X; d
  71. }8 D1 q6 y# i$ m: @8 h
  72. ' @1 O8 y6 K3 R2 N+ |
  73. int main(); }* F3 D$ e9 r: ~' y$ F
  74. {9 T- x; M. E  L5 f( Y; b
  75.         char c;4 m9 @4 L( x" h2 {5 x! p; {
  76.         int i, macs[6];
    4 G# ?1 {& U% v4 v0 H/ n+ |
  77.         unsigned char mac[6];
    ; ^/ n/ N- P* R  ^
  78.         unsigned char stbid[256];
    7 s) W2 M& Q9 I. N+ E/ J
  79. 5 t2 v. I0 B% `6 ~
  80.         if (readparam(mac, stbid) < 0)
    0 y0 S) f2 N4 F/ _/ w! G- ~* o
  81.                 return 1;
    , {) j2 ]% [+ ~
  82. 0 y3 z2 w/ ~/ N
  83.         printf("Current parameters: \n");
    + g! g! G1 J$ p) p
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; p% w9 E5 v, |5 o' J2 h& G7 J
  85.         printf("  STBID: %s\n", stbid);) T$ @" S" v, `6 x, w
  86.        
    3 j" A' J( v- d. H! R* W4 x4 t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 r( ]$ R$ T' V$ q" E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . G5 |# z: F7 ?4 ?
  89.                 printf("Input MAC error\n");6 u. b* R, R7 _0 Z8 ^, O! T
  90.                 return 1;- P6 c% G8 l/ E' ^: v. ]* s, d: V
  91.         }
    3 y9 q* s4 n) \( i4 U0 m: k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 @. }$ p/ ~; Z1 l! C; u
  93.         printf("\nPlease input new STBID: ");- |9 K, J$ n# G) {1 ]
  94.         scanf("%s", stbid);' J5 D  M, \4 A
  95.         if (strlen(stbid) != 18) {  c& o& W: d# F+ l, Z. x8 }
  96.                 printf("Invalid stbid\n");; }/ m! P$ _1 W# T  a0 Y5 C
  97.                 return 1;
    7 f; m: b( `4 L0 D! a: ]  t
  98.         }
    . h; p, l0 p8 x0 R# f- r+ N
  99.         printf("\nNew parameters: \n");/ n" F, _8 W/ C4 l1 H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 _( A1 a- j- P2 ]& |% }! L
  101.         printf("  STBID: %s\n", stbid);
    - \1 c6 W4 M9 W. H' o
  102. 5 b: v$ E! A7 M" Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 o  z; w$ \) p3 i" P/ d
  104.         for (;;) {
    7 i2 H5 y9 R7 G& Y
  105.                 c = getchar();9 s  P/ k0 Q( \' E9 c4 Y  r! J
  106.                 if (c == 'y' || c == 'Y')
    6 F$ J$ B7 ?$ d
  107.                         break;
    7 n/ T3 T6 Z" C2 e$ @) t' ?- I
  108.                 if (c == 'n' || c == 'N') {; Y8 @2 y, \# a$ I  }$ i* j. T9 N
  109.                         printf("\nAborted.\n");. X: z8 e' s; u: Z
  110.                         return 1;$ q! l% W. D8 c( W1 \
  111.                 }
    : F1 T# ^4 Q4 g# C0 e0 m
  112.         }
    " s' X  n. r0 R- ]& h2 j. N- t
  113.         if (writeparam(mac, stbid) == 0)
    1 f3 }9 p5 T: }/ d* z$ Z( |0 s
  114.                 printf("Parameters changed.\n");: ~$ g( }1 i+ O$ n7 K$ n

  115. 9 @! L; h( ]) l: E" o5 Q. H
  116.         return 0;
    / |, h5 Y2 X- d9 ^
  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 # h3 M- `! W1 a# j1 k) G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
' j* B+ ?0 T8 I0 T
你用的编译命令行格式是什么?: J6 H3 v" Y( A0 r. z- Y* Z2 i) o
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部