找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15151|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr& t" ?  b9 ?$ h# q  @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    . R! g0 y) F8 [! i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 G( P+ k- K+ B  V8 |, r3 F  c7 Z+ M
usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 H: R8 n5 o" U' n" v. p5 ]8 y- R4 c" o8 y

( X) h+ ?+ m. v& r! v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 n7 ^4 y( ~: b2 S  a3 R0 d, T$ o8 G, o
补充内容 (2012-3-8 09:42):9 I8 J2 e9 F9 H7 _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: g7 }3 a9 @( n* w, p& A1 ^' t这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ _- V' X( F* D0 y9 d0 [
3 f& I9 r$ g; J+ ?7 _! a1 _
himr <address> <value>. sample: himr 0x80040000 0x0
( j* G  }( w! @- S% `; M7 Q2 F. w( a  c9 y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: `% p9 @3 T& F4 K% ^% f( o: Y5 mhimr 0x80040000 0x00/ z2 ]1 A" u- G  K
himr 0x80040001 0x119 r: |8 F1 v7 l% h$ @+ ?( N8 |
himr 0x80040002 0x22  s0 ^/ T8 w) Q  D# L! k4 `  u0 O. Q
himr 0x80040003 0x33
- |) q! X6 W2 k+ b2 `himr 0x80040004 0x44  D6 X% e3 i% O, ~* ~
himr 0x80040005 0x55
6 Q( @( V) j  J! ^% H5 t& R9 J4 [% ]; v! |
SN也是类似。4 d7 x" ~9 p6 R4 w9 E4 L( [
& M2 h& R  G, Y0 r- l3 p8 M
现在主要是,谁告诉我们MAC和SN的地址?* m5 K! ]* h+ W  y+ R; v
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ G8 U# c& v  M' r# `! g一直想找到运程修改MAC和SN的办法,苦于无解啊

9 W* E. H/ T5 t3 |( L: l/ ?源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! L8 N) {% A4 S$ K& J- Q
3 u- }  D- y5 e, W& \修改的代码早有了。到今天不会编译。- D3 I. ~+ R+ h
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ k# G9 c( i) e$ O- U
  2. #include <malloc.h>
    + p6 S% ?+ {3 f. E9 Q0 u. W
  3. #include <sys/types.h>5 @: W$ |: ~4 s
  4. #include <sys/stat.h>  n& ~' U. a  U) g
  5. #include <sys/ioctl.h>
    8 S& o  a& j  M& n6 `
  6. #include <stdio.h>. a: J4 a& q' O+ l; T0 g' M1 F5 M# L
  7. #include <string.h>: {" d- Y6 @4 S1 O" ^4 a

  8. , v1 o& C, v* n! A) Z
  9. typedef struct {
      y$ U; Z5 V+ t- F  _# N; X
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 }$ M* b9 L+ g8 w( G0 L
  11.         unsigned int        sub_addr_count;
    / N/ [; X2 \/ V" L) O' y
  12.         unsigned char*        e2prom_cmd_data;
    + I6 A2 K& `1 h% ~: J& o
  13.         unsigned int        data_count;
    ( [: ?* F' V2 _1 r) e: X
  14. } e2prom_s_cmd;
    , d( O' H2 i0 ?! a7 L. `5 X

  15. - x2 o# j' h/ I! _/ f* r
  16. #define E2PROM_CMD_READ 1
      Y/ d6 i8 F5 s" W2 E. D
  17. #define E2PROM_CMD_WRITE 2
    . y9 s* f) A. B1 G/ }% l
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"; |: C, l8 [& K9 \1 W

  19. 5 Q& E, M  i: r3 [1 [! f1 t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# a# H, F. x) T7 c% a
  21. {
    8 h; Q- i* m+ C* _6 G
  22.         int fd, ret;0 u/ a! W. v9 Z
  23.         e2prom_s_cmd arg;
    1 o3 w' c9 S& A# T) p- m0 v' j( f
  24.         unsigned char buf[0x18];  J* z+ b! ~( w
  25. 7 ]0 Y1 K( u2 s7 Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ @+ U$ m& x. Y3 a$ k3 G5 H# U
  27.         if (fd  < 0) {
    - E5 r- C9 C" [" r  j" B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) O' Z/ U1 `9 W. X3 C* r: I! W
  29.                 return -1;% _- L) P1 {& [: D# g' j
  30.         }( @* C/ g/ w+ u9 A& ^. w
  31.         arg.sub_addr_count      = 2;8 d2 }2 T& ]* {
  32.         arg.data_count          = 0x18;
    ; n4 H2 m# M( f! |$ D4 N! l
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    8 ?* ?) Z+ X: F" H( f, G
  34.         arg.e2prom_cmd_data     = buf;6 @6 I6 I( ]: W3 X! M% b" t' R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' \( l  |: p' g  ^% k! ^
  36.         if (ret != 0) {
    1 ?7 b1 I2 ~" g& v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , Y3 J! V( ]9 a
  38.                 return -1;/ `' B7 ]" N3 A7 \4 e
  39.         }
    7 B3 j. u% }7 j; M, n* f' e+ Z
  40.         memcpy(mac, buf, 6);
    - C# G8 J$ l4 Y6 l
  41.         memcpy(stbid, &buf[6], 18);6 j; a' `: ~, V$ C% J) i! G
  42.         stbid[18] = '\0';
    + `. r* E% p* N& F' z) Q
  43. 6 j/ e4 {" t* z
  44.         return 0;
    $ }( |: O6 t" J* t
  45. }
    ' F( y; |5 J& W
  46. # W% d! ], ^: o8 a8 Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 Q5 U: X4 G% Z8 h/ m# s8 x/ y
  48. {
    : v7 l0 [5 g+ R
  49.         int fd, ret;
    0 b1 l2 S& ~6 E" u% H! Z/ E/ I  i
  50.         e2prom_s_cmd arg;
    ( v0 }9 j: k: @7 P- s( t
  51.         unsigned char buf[0x18];7 c/ M' \# d' F# `* O

  52. + Q9 o: l' Q! B% d6 i; b- m
  53.         memcpy(buf, mac, 6);
    . o$ F- g" t: \( s3 q# a
  54.         memcpy(&buf[6], stbid, 18);, C+ S( N  H8 [, Q2 Z7 r+ b& p6 f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& [6 T2 k$ s5 {% {1 F* Q
  56.         if (fd  < 0) {# P- o# i/ ?1 c; D( e: e& L7 u8 [2 L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( d" Z% L/ T+ A9 b, q
  58.                 return -1;
    ! ~$ {7 [7 x( e/ z2 n" A& P9 K. Z
  59.         }
    . P! @) V. W+ V
  60.         arg.sub_addr_count      = 2;7 Z- O4 p, U: }# @" j
  61.         arg.data_count          = 0x18;- V1 i2 f% V' M  x
  62.         arg.e2prom_cmd_sub_addr = 0x290;  }! N0 g5 N& {2 ]
  63.         arg.e2prom_cmd_data     = buf;
    1 T( G& P1 T- p) v4 X9 S, ?: K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 E" B: `- u/ O0 ^/ ~) k; y; k% K
  65.         if (ret != 0) {
    , j/ W" ^! n" E# A, {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 D+ K4 ~4 D% H7 w' C! y: t/ ^
  67.                 return -1;
    1 L- Q5 D3 g; g  t# \8 X
  68.         }
    8 L! S- y) t8 w, ?9 V; j
  69. % k1 p* G. A8 K& {6 V' R; `
  70.         return 0;
    + O' u8 s: {5 H0 D; S7 m9 i
  71. }
    + n! a6 {: T% H* \1 G* }8 u

  72. $ [& j% d6 N/ w+ K7 `; z) j
  73. int main()
    * t  D' u9 y% B4 f, ~# S
  74. {$ E, M) D3 h" |! o: L# B. V
  75.         char c;
    + ~  y4 u7 N8 e5 c& }4 A" _
  76.         int i, macs[6];8 Y: I1 ]; E) h0 f( }
  77.         unsigned char mac[6];
    " C7 _! g% }, [
  78.         unsigned char stbid[256];
    ( X+ I% d. D) \' U* P) A
  79. + |8 ^) c" ~) A7 y# c
  80.         if (readparam(mac, stbid) < 0)
    , s. Z+ Y2 D) `4 u- x  `
  81.                 return 1;+ p( K$ n6 [* g: p

  82. ) e) U6 M9 [; K
  83.         printf("Current parameters: \n");& p! O% S# P$ q4 G, ?* k7 p' j9 L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / W2 K: w! z- B+ M  S
  85.         printf("  STBID: %s\n", stbid);8 @! F2 X. N( U0 G. a# K
  86.         ' D7 k0 [" ?& i* y! N3 i% n
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 m, C8 j" V# c5 I7 q+ V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; M1 U7 ^! u; R. T/ I8 b8 P
  89.                 printf("Input MAC error\n");
    ( I- i& J/ p) e2 y! y
  90.                 return 1;- B/ _: W) _  r! e! T$ P- G7 {
  91.         }
    " |7 t8 Y' X3 _2 S9 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # x4 F4 f/ T. c
  93.         printf("\nPlease input new STBID: ");
    " h7 o; X' P5 X; A9 ]
  94.         scanf("%s", stbid);
    6 f1 U, |! R% N! P" o
  95.         if (strlen(stbid) != 18) {( J7 k" _! q3 |4 Q4 P9 U
  96.                 printf("Invalid stbid\n");
    - c# T1 q. W/ u4 C9 n
  97.                 return 1;0 Q0 {+ |4 U. X3 @- r: H
  98.         }
    - v5 K# @- X$ V* f' c
  99.         printf("\nNew parameters: \n");
    # [! s% {0 q9 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. n: ]: |0 X3 \# Q* I
  101.         printf("  STBID: %s\n", stbid);& V6 ~0 ^4 [( T- o" m8 g7 h

  102. 4 A( e1 t. F1 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # A3 e8 ~" ?1 \/ F
  104.         for (;;) {
    9 q% N0 ~' v0 ]
  105.                 c = getchar();
    8 t- Q( i  j; n- ~( h7 A9 V2 V
  106.                 if (c == 'y' || c == 'Y')
    2 ?* T( }+ g& h" V+ S" c; M" X
  107.                         break;! T8 ?7 J) @( M2 }) m* J9 y
  108.                 if (c == 'n' || c == 'N') {8 B* V- {9 u& d2 q
  109.                         printf("\nAborted.\n");# C2 m7 Y4 N6 @8 H$ w. T
  110.                         return 1;
    4 k! a/ u: J4 R6 N; d6 R+ i
  111.                 }
    ' S, v5 v0 A. Z# T1 x" {; I7 E$ q
  112.         }
    : r! N2 Y. y2 `* Q- R
  113.         if (writeparam(mac, stbid) == 0)
    + q. b7 c& m% B* B' N
  114.                 printf("Parameters changed.\n");# F1 F* r6 L' \" ]1 s; k4 U
  115. 1 c1 l+ X- ?# B$ e0 q+ E8 ]
  116.         return 0;
    ( p- K3 J& I. C3 j7 r/ f8 ?6 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 ; X+ w' M" R) V( V0 a1 c$ T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 S* V7 w, Q0 E# I
你用的编译命令行格式是什么?
: S6 }. F" |( Q. ^* [! X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-29 16:30 , Processed in 0.027355 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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