查看: 16862|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 ^5 g8 t' z# |8 i
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , z% _7 k: v3 S7 T6 k' V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- e' s: T- Y! S4 i! L
usage: himr <address> <value>. sample: himr 0x80040000 0x0+ a( {; V9 G6 f

2 ]& I8 {: h& d9 w6 g( i' i
: P8 H  L+ S5 Y8 L" p( t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 r9 {3 |9 s3 |  F- i# ?
3 a& ?6 J5 @8 G+ P3 m  q& G补充内容 (2012-3-8 09:42):
- @  d# g1 i& j) X* dhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
7 v; m( R: q# o* n7 G$ M1 t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。3 @/ y* U4 M) i8 g, T- T' T6 ~

  H5 R" S$ t5 L8 N2 [himr <address> <value>. sample: himr 0x80040000 0x02 ]! X/ v- N% Z9 E$ b
9 x6 L2 ^8 k: Y5 K
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 e# J7 }( ~# a+ I+ L' p& ^himr 0x80040000 0x00
# r$ O1 U; h0 S' K0 Khimr 0x80040001 0x11
+ o8 I2 x* f- E. H3 O- ehimr 0x80040002 0x22
) l( @( A+ t( m3 `4 qhimr 0x80040003 0x335 n' i# g5 x, O0 A( S
himr 0x80040004 0x44; @+ R7 e- {/ l- P9 t4 B
himr 0x80040005 0x55
5 k4 K/ k. b' }6 S1 Q( |% M
1 ]& I3 _* E1 NSN也是类似。3 }( Z4 S! B9 H1 ^' y5 m2 N5 g9 \
) s( b4 L/ q7 M2 @
现在主要是,谁告诉我们MAC和SN的地址?
/ r: }: }0 y( R9 |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 y) I5 ]# _$ m0 \1 K一直想找到运程修改MAC和SN的办法,苦于无解啊

: o% \9 m6 X' [0 {3 R0 X) {- m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 7 t. k% [7 q) w* }6 u# G1 E! X7 w
- m# N; [' n- V
修改的代码早有了。到今天不会编译。
6 x; j' o& I4 ~7 ?8 F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % _, z+ x, }6 M
  2. #include <malloc.h>; }" q5 ^, O5 O' [- }4 p
  3. #include <sys/types.h>+ H& d$ q6 @: Y/ u0 N# E* w
  4. #include <sys/stat.h>
    # O% r/ y/ {$ y# z6 r0 V) s/ |
  5. #include <sys/ioctl.h>( Q& M8 z' s8 `
  6. #include <stdio.h>
    3 ^: O4 o+ P# r! L$ Y$ E# a/ L
  7. #include <string.h>
    7 }+ i- U* b- E/ }" r- f% F- R! {$ B
  8. 2 D2 T5 Q% `! |% }/ a& l* |8 }  {
  9. typedef struct {
    & W' d& z$ T. h- Y9 q; `: m: ?! n; S
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) a" f9 ~+ h( N/ \* D
  11.         unsigned int        sub_addr_count;
    . C4 w# d) K( l. M+ ?  w! q
  12.         unsigned char*        e2prom_cmd_data;! [# s8 P) u$ ~$ {% p
  13.         unsigned int        data_count;
    , K- x- h7 \  {8 E
  14. } e2prom_s_cmd;
    7 k, F2 d4 }2 o- ~+ h8 x
  15. 8 P' |( E- U' o+ A' h- W
  16. #define E2PROM_CMD_READ 1* ?3 \. n% E) N$ a$ u5 b
  17. #define E2PROM_CMD_WRITE 26 @; H) E9 Q" h6 f7 W9 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 X9 ?2 B: _9 x# R4 \% {+ y
  19. . Z9 h" }# G8 j0 D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    5 B$ f; {! {) I. O6 }
  21. {
    - t- E* i( C$ N7 u  `
  22.         int fd, ret;
    6 B& V: ^' o5 }+ y
  23.         e2prom_s_cmd arg;
    + i/ P* I* f) ], c0 \
  24.         unsigned char buf[0x18];0 g3 {% A! B( Z8 [# F5 X7 l

  25. 1 x! Z) e5 }& o! M* B4 w5 O  |4 s% ]# w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      \% t2 h/ R3 _2 l, O
  27.         if (fd  < 0) {
    8 c# q6 \0 c; D+ r- b) w
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) h9 }1 j6 h  ?7 ?; }; {
  29.                 return -1;
    $ y3 I* Q# A# C; X
  30.         }
    " r! W, d+ J) a2 M
  31.         arg.sub_addr_count      = 2;) P) f& X7 p" A' o
  32.         arg.data_count          = 0x18;
      ^/ O1 v# ^4 t4 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % T3 H2 p( H8 \" t0 [* Q4 ~' t! V1 {) Y
  34.         arg.e2prom_cmd_data     = buf;! V4 n2 H" Y' S8 e  z7 k5 A
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ F. F- M5 S7 ^9 |7 a
  36.         if (ret != 0) {
    6 D) J. ~: Q; d& V, c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
      q% M8 ~+ g9 T+ _
  38.                 return -1;3 e! f: H4 v$ h$ W5 S9 N4 t
  39.         }! T3 u+ Y0 a& e3 A
  40.         memcpy(mac, buf, 6);$ m& l4 T, Q2 D: A4 H3 x8 _
  41.         memcpy(stbid, &buf[6], 18);
    # E% i+ m* @; _4 L" S! m
  42.         stbid[18] = '\0';
    ) v5 Z0 i! ?2 b
  43. . x% L! E- ~' F/ o% H' O: i) K, ]) B
  44.         return 0;
    $ w* I, i0 a- |' d0 X4 A: L
  45. }
    ' ?% A( J9 N, d+ d# p* ^
  46. . |: T% G/ o6 H4 }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( g* H/ j4 ]% g- y* c
  48. {1 Y& S5 C7 |' |+ b8 S
  49.         int fd, ret;
    ) p& C: r. ]' n0 `) j& C1 E0 c
  50.         e2prom_s_cmd arg;
    & A) }. \7 r4 r7 I& o4 G' v" l. k
  51.         unsigned char buf[0x18];. @9 _) N$ x# y

  52. 5 ?+ H6 _. V: W: @/ h+ U
  53.         memcpy(buf, mac, 6);+ m. P8 P7 r; _7 }8 }% E/ E
  54.         memcpy(&buf[6], stbid, 18);
    - x5 c! m( {: o  G% D! {- k
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " c" h! P9 ~* X
  56.         if (fd  < 0) {, G6 ~- {5 F& F% g  P) T! H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; q0 G6 L0 H. M* R; F
  58.                 return -1;
    0 q; P. x0 L, X
  59.         }9 S% a" _* r% U) Q  L
  60.         arg.sub_addr_count      = 2;
    0 i5 [4 r) {: Y" Y
  61.         arg.data_count          = 0x18;; G+ O4 x: |6 L
  62.         arg.e2prom_cmd_sub_addr = 0x290;- l9 }( Z3 k5 \. L
  63.         arg.e2prom_cmd_data     = buf;  i" R4 y% y6 d3 D* b( w
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 E& ~, y9 |) Y7 o6 K
  65.         if (ret != 0) {. Z/ e( D5 Z: J2 D& e" `, y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 m2 g7 B. p1 x& T' y: m3 M
  67.                 return -1;
    2 m; O7 g7 f7 e  M2 _
  68.         }
    , s0 ?+ Y0 r) s: M% R/ @8 W

  69. 0 p' N( H# f4 L
  70.         return 0;
    6 T. D2 u$ F4 f2 w: d
  71. }, r" d" i8 d  r/ A6 x; x/ U/ J
  72. " L+ z* Q  C0 s; A; `- J; I
  73. int main()
    3 l5 @1 p2 A, w) e! m7 n
  74. {
    : e$ M, W- M5 f; q- M7 y2 N
  75.         char c;3 k: b$ E6 S6 ~& N# \- V; L
  76.         int i, macs[6];
    8 L6 _/ S; F+ z% j% v. X
  77.         unsigned char mac[6];5 h; `/ H" X) m2 X' X
  78.         unsigned char stbid[256];
    4 o4 N5 W: D$ P' D

  79. 4 d, O9 i+ W0 C5 _4 A' v
  80.         if (readparam(mac, stbid) < 0)
    2 Z$ K) N- z* C* |* \& T9 {
  81.                 return 1;
    3 B9 K' B4 y& D2 E$ @0 ?

  82. 9 X; M! K# F, i; C
  83.         printf("Current parameters: \n");& `5 m8 f! T% o: _; |, m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - a; L" Y* K' J6 W, Z
  85.         printf("  STBID: %s\n", stbid);
    " j& i$ f* M0 O6 O  p1 _6 }
  86.        
    5 r& P. D3 v) ]: g$ {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 b# y* Q; F% \; H$ r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 M  j7 Z, O) P$ g% w( W
  89.                 printf("Input MAC error\n");
    ' Y$ P. m: a# R( X
  90.                 return 1;
    ! x& F! `' p. a5 q* S
  91.         }1 S+ W" o4 j' \: U/ p' Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 f) l+ Z! O' \! V' y
  93.         printf("\nPlease input new STBID: ");% t: s9 g1 V7 i: j# L
  94.         scanf("%s", stbid);
    1 i5 @& l* T3 R+ H" L
  95.         if (strlen(stbid) != 18) {( X: }+ x8 q) v( r( e
  96.                 printf("Invalid stbid\n");0 {# m- w- L( D
  97.                 return 1;
    * p6 c# x, J$ y! ]
  98.         }
    . }0 H& c2 c& |8 E1 `1 F
  99.         printf("\nNew parameters: \n");8 u# A5 s6 M3 T7 o# g
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      }* ~$ Z6 l2 e" K# t. a9 P
  101.         printf("  STBID: %s\n", stbid);
    / J/ g. t8 C+ @: J' G

  102. : s# Y5 d  n! X/ D) d9 n: G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      K% q. v. M9 p/ M- Z! X* j! s
  104.         for (;;) {. W& Z& f- V& ?6 v
  105.                 c = getchar();7 s% T% u- j& O2 g& |
  106.                 if (c == 'y' || c == 'Y')
    3 L. e2 G! _5 t1 ]8 I
  107.                         break;
    3 s/ j9 f( x- L/ g
  108.                 if (c == 'n' || c == 'N') {: c$ `0 X4 t5 z
  109.                         printf("\nAborted.\n");; D* M7 L/ M  j
  110.                         return 1;/ }! i+ O+ _$ r# B+ E
  111.                 }4 Y) G6 ?& ^1 r/ D  I
  112.         }
    2 `+ r" g( J# w% L3 L( b3 D
  113.         if (writeparam(mac, stbid) == 0)
      I8 _$ o! N; S* }
  114.                 printf("Parameters changed.\n");1 t+ G6 ?" K+ o
  115. & ?" x# j$ }% [3 S
  116.         return 0;" f/ q: m6 ~$ q. ^- _
  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
; Q; z9 K; n2 h  l4 L7 t: c6 w  G在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: f7 G& o9 g8 @$ z7 Z你用的编译命令行格式是什么?
4 i! M  J& m% |) P& \
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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