找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14948|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ) K/ g6 i; j: [3 C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * J/ U) w$ r5 T: O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- d" @& W  ^3 m9 k7 d% o6 g& }$ Yusage: himr <address> <value>. sample: himr 0x80040000 0x0
# X7 X" q* L( c
  Q7 z* ^, [3 |4 r. E/ ]' K8 g' T( b7 F5 L  T% I1 c
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?7 m+ J5 o0 h# q& e2 O

6 I: F! b  f* I; U/ T! Y- [! z补充内容 (2012-3-8 09:42):- s2 Z6 S) O# {% k* Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
6 t5 b# x3 s6 B% d( T8 X7 q2 j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
1 r+ U/ n7 K) q9 r; S* _# z0 |% \* \9 i2 F9 ~* h3 k" i; ?7 t
himr <address> <value>. sample: himr 0x80040000 0x00 U; M" W. m) y: P- i, n, @& F
+ X* ]1 r& q5 R) P" {. G& q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 U* X6 q# ~6 V. g
himr 0x80040000 0x002 @& {$ W- `8 \# Z3 b# u/ s% y
himr 0x80040001 0x11
( ~# _3 {' e: O8 G, \himr 0x80040002 0x22) _' C. Q. m$ X" N/ p( S$ B! p
himr 0x80040003 0x33
) F' M( n9 `, W3 uhimr 0x80040004 0x449 d* H7 E) k6 g+ s! h
himr 0x80040005 0x557 X: f/ \) H7 H( a9 ?9 a8 S

& t8 `  o4 y& o# R9 \( [' R7 ySN也是类似。
4 l* E+ t- I, s& @0 u: |! o4 C. `/ o6 E+ r
现在主要是,谁告诉我们MAC和SN的地址?* }$ o3 u. p6 t9 l: }
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 q6 c/ l- \+ ]" ]) a& v
一直想找到运程修改MAC和SN的办法,苦于无解啊
$ D7 F' K+ k* p* p) Z1 S
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! Z( G1 z' c( D. ], w3 p* Z: E
: @' E  f2 I- }) L8 q7 ?修改的代码早有了。到今天不会编译。
- Z' N- J+ E7 G* t+ U7 @, E# X/ F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 \' S# b$ ~' R! i
  2. #include <malloc.h>
    6 A4 D$ [6 a& I2 k
  3. #include <sys/types.h># K+ z" J: u2 z& g
  4. #include <sys/stat.h>
    # P: [% ]/ A& m- f6 m
  5. #include <sys/ioctl.h>& D7 |/ c& S* T4 X/ P( G9 @) v
  6. #include <stdio.h>
    8 c7 _; p  Y' v' \# M; [% Q
  7. #include <string.h>
    & A% A% C5 y# J2 z+ o1 p/ F$ q. n" r

  8. ; h  C. ?6 Z, T
  9. typedef struct {
    : B# T. t7 k7 j+ g; ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 N& O, u- I+ H% \0 M
  11.         unsigned int        sub_addr_count;) Q1 `% f$ R* _- R) z
  12.         unsigned char*        e2prom_cmd_data;
    + t' V( A/ K+ k
  13.         unsigned int        data_count;2 Z! I1 R7 J, g. k
  14. } e2prom_s_cmd;
    ; E+ q$ `/ ~4 h( j6 L- ?$ c

  15. ) x' x1 F) }3 ^  S" b- w
  16. #define E2PROM_CMD_READ 1* `9 w! }- |/ Q9 a4 ]! A$ V
  17. #define E2PROM_CMD_WRITE 2
    6 m# I0 j8 h& z! {- p9 t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    4 u0 ^! K  O! u4 U7 z5 N

  19. ; B- I. R8 `: H8 l, ~0 k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) P8 ]) d0 C- {# n3 O( j* M
  21. {- `% ?- v2 q3 E4 ~$ e
  22.         int fd, ret;7 o( e( g7 U6 L( x9 U; N- t
  23.         e2prom_s_cmd arg;
    9 j4 p. b5 u: W3 i8 I
  24.         unsigned char buf[0x18];
    # G( x7 ^- ~; K) N) R( o4 ], n

  25. 0 T5 b& O6 o5 r! E+ r# i) ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- _: `4 s5 M3 y0 K0 h
  27.         if (fd  < 0) {5 T2 _- n5 g3 s7 q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( |) P( c9 e7 C, P( G3 m: O8 G7 A
  29.                 return -1;: |4 Z1 X* X  a0 S* F
  30.         }1 @) Y! [% e0 C
  31.         arg.sub_addr_count      = 2;
    8 y9 \0 U5 v, D1 g6 q. ?2 @
  32.         arg.data_count          = 0x18;& c. Y+ E- R3 w9 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 O% ]5 K" ~/ ?, }" a
  34.         arg.e2prom_cmd_data     = buf;
    $ j  r% D+ ~, h- _- I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ }) u$ z; D. ]
  36.         if (ret != 0) {
    1 a0 q5 a4 M, g- f5 q( R3 j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: j( e* L+ C" G% Y
  38.                 return -1;
    7 m$ W- Q- v% W; ^/ j
  39.         }, L& x) I+ k4 L  S& I
  40.         memcpy(mac, buf, 6);
      I% A/ f4 t( ]- |# D
  41.         memcpy(stbid, &buf[6], 18);
    , [/ X" \3 F/ E
  42.         stbid[18] = '\0';5 E* W! w1 `+ E/ ]+ o3 u0 E
  43. 3 t5 s% N; K' W3 x$ Z; `& H3 f
  44.         return 0;
    . p/ K6 Q) X* _- a+ I6 z" i
  45. }( v4 N" c( A' b. R; [* `. v

  46. 8 s, W; E6 O- c! K2 ^; Y+ P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : O( v4 j8 ?2 ~) H+ d
  48. {& r9 {1 `5 f( {1 C% V' Y  T
  49.         int fd, ret;
    , @+ g5 @, d! o4 r
  50.         e2prom_s_cmd arg;, N8 r. {5 Y8 V- F  E
  51.         unsigned char buf[0x18];6 P2 f( N# ~2 h* C7 |

  52. 0 {  [- o+ A8 U7 [0 O  q8 Y
  53.         memcpy(buf, mac, 6);% @2 v4 @& W+ B( ^6 e  D) e
  54.         memcpy(&buf[6], stbid, 18);( N2 Z" j$ D7 ]
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& d2 Z6 K9 D  D( M( k; V5 o# F6 x
  56.         if (fd  < 0) {( q" ~) Y) v' J% L, I. |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 L3 E( P# X5 x) F
  58.                 return -1;
    # J( w' [6 T7 i
  59.         }
    " H. a, H9 i+ ?9 {; {# u. V% n
  60.         arg.sub_addr_count      = 2;
    2 q$ m$ g" R. {- b
  61.         arg.data_count          = 0x18;) U6 ]0 k9 g8 Z' K  d
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % N, J& X) v* R: C% _  b" A) ]
  63.         arg.e2prom_cmd_data     = buf;
    2 v! ]+ }% t- r& Z5 o- L/ n: g" ^2 Z% ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ e3 S" |; E1 o# D+ M( ]6 h( L
  65.         if (ret != 0) {( K4 l# [" e: w3 D; N2 u* U4 \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ) h+ I( R0 d7 ^2 g4 o
  67.                 return -1;! j' c% w' @2 _' L' ]3 l% _
  68.         }3 F  q% X: j4 {4 h( b

  69. : j- f7 m% Q( J8 W
  70.         return 0;
    4 b  z. w) k" G. t0 _' b8 Y
  71. }
    9 d0 N( r& b* C5 C' ~' ~. l

  72. 4 K# k3 z8 g& C& K1 r7 f
  73. int main()$ o3 P! p6 B) {; @6 ]- q" Z
  74. {& g0 J+ o) G' a9 \& D5 i! ^4 B6 S
  75.         char c;7 s# O" o* @1 G$ ]' |  c
  76.         int i, macs[6];/ c9 Q  t% L9 I6 y
  77.         unsigned char mac[6];
    , c/ J" j7 m$ x
  78.         unsigned char stbid[256];0 c& I" w6 v+ }. p1 i5 u  [
  79. / K( t! D9 }/ _, {; t
  80.         if (readparam(mac, stbid) < 0)8 {" B3 b) s( b0 ?  F
  81.                 return 1;
    + }. O* ~, c& T0 F
  82. , X0 ^, i7 U* x7 R( y% j6 v8 A
  83.         printf("Current parameters: \n");; o7 J  \6 v1 V% M6 x$ j: K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' e% Y6 t: _% l
  85.         printf("  STBID: %s\n", stbid);
    0 V8 \; ]# U/ G% S
  86.         # G3 s* v$ e( N6 f( D- h! p
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ u% r+ V' S6 W" x# u$ n' a1 w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    - b7 w9 `( R; J( H5 o3 h1 f
  89.                 printf("Input MAC error\n");
    / F# x7 s5 e. ]6 K6 g
  90.                 return 1;1 H* j/ X7 }+ z( h1 p7 {+ J
  91.         }+ W) p' Z# C( U% h1 [+ `( S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# Y. e9 l  y& k. |9 Q
  93.         printf("\nPlease input new STBID: ");3 r; J  z! e( @: F  ^" Y
  94.         scanf("%s", stbid);
    . h- c1 K5 I0 H
  95.         if (strlen(stbid) != 18) {$ h2 s1 w( K. o: M* R; N0 O3 w7 a
  96.                 printf("Invalid stbid\n");7 b7 D9 I8 K3 |2 Q
  97.                 return 1;
    " t6 ^* c( {) ~, T
  98.         }
    9 z1 s, i6 r' R5 ^  W6 q
  99.         printf("\nNew parameters: \n");
    2 i# R9 I( X! z# I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ Q; P2 L% S: \1 z4 ]2 T
  101.         printf("  STBID: %s\n", stbid);$ ^+ C7 d: E  _5 b1 J
  102. + Q/ ^" ]: T3 x
  103.         printf("\nDo you want to change paramemters? (y/N) ");' ?2 [% @0 U; l$ I6 d% ?, [5 k
  104.         for (;;) {
    4 Z1 Q. N9 z6 }& m8 \- c2 i0 n4 N
  105.                 c = getchar();7 E/ i9 Q  t& w1 U7 e
  106.                 if (c == 'y' || c == 'Y')
    / K8 j; h0 l$ a$ e) _" k6 v
  107.                         break;/ \9 `3 s8 q9 G6 C" _+ B5 Q
  108.                 if (c == 'n' || c == 'N') {5 P4 v" ?4 P+ X3 P. n
  109.                         printf("\nAborted.\n");" c) n- ^6 ~8 Q" E
  110.                         return 1;+ I- y7 U2 a  q% i, [2 T% v9 @1 X
  111.                 }1 |5 p( d8 r- p9 Y2 }7 |! O. q9 k  C" n
  112.         }0 X7 N" L3 V6 Q3 L3 L( L7 q' W* F
  113.         if (writeparam(mac, stbid) == 0)
    ) V- j1 u  a: @. r' Q5 N6 X
  114.                 printf("Parameters changed.\n");
    + w6 U$ U. |+ A6 i8 d: ^

  115. ; b4 H: \# G2 S+ _- Y' E
  116.         return 0;- a' _8 L4 }; u. v
  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 W" ^; p* H2 Z+ x5 s3 j
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" C: p, s9 j. Z( N) h
你用的编译命令行格式是什么?# h/ t2 f" x. f/ X! a% g" O
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-2 23:55 , Processed in 0.033876 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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