查看: 15946|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% F/ }3 z7 v2 i+ F& E- d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / e6 N- K( b  F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# M( ]/ c5 ~- Eusage: himr <address> <value>. sample: himr 0x80040000 0x0& S6 S5 |% d% L% A

/ \! k. l: {0 R' J3 g. M( F4 O" V& a* g& \5 r. s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 a' y7 t* U- m4 Z
7 \" Q' j) R9 t& Y: P补充内容 (2012-3-8 09:42):7 N7 I) N; ]6 x9 ?) `
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 a' o7 `4 S+ ^7 _" G+ G
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ q* {# Y. k% |7 s+ E' E7 Q+ W

7 b( ^' }, i" y/ `) a; \himr <address> <value>. sample: himr 0x80040000 0x0
% j* m5 i- Q; S% e/ I4 y0 G4 A' o1 }3 F0 l: }" i" R4 i4 ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, L# q# q, z( Yhimr 0x80040000 0x00+ ]( _$ y5 j. J8 E1 O
himr 0x80040001 0x111 m1 T* u2 j/ r9 k5 {  A  _' V
himr 0x80040002 0x226 q1 V  x! q/ d% ~- s( }
himr 0x80040003 0x33
, q/ l1 Q' p8 b5 }* ^, Zhimr 0x80040004 0x44
$ T; o2 K: [/ Rhimr 0x80040005 0x55
" {+ r6 a3 l' Q" O+ A5 _( Z! r: z& x& A- M
SN也是类似。0 ~. [; g5 C, l% a

0 `  S' ^" M$ F; n3 b, P+ k% H6 L现在主要是,谁告诉我们MAC和SN的地址?7 L5 t& J. y5 T7 V. D; u" `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 L5 V5 B5 b' H; @% N
一直想找到运程修改MAC和SN的办法,苦于无解啊

) P7 p( ]. E) I/ J( L, B8 C# ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 u2 h$ \: \/ N
- x# N5 l: a. o/ ^; a修改的代码早有了。到今天不会编译。
" D, f+ P& M& E$ _9 \* b需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( y6 G( o) O( }: I
  2. #include <malloc.h>4 R+ q: V( N- U$ g9 i
  3. #include <sys/types.h>  f' w: K4 ?' _, \+ c
  4. #include <sys/stat.h>
    * }/ C5 Y! ~: v* @# W  V/ R, C* s
  5. #include <sys/ioctl.h>
    ; ~! n0 I% X. K; @) n
  6. #include <stdio.h>
    1 c0 h' U; K# N: m+ F. y7 [
  7. #include <string.h>
    % C- q9 H: T2 e6 r: M& `

  8. + S$ }* _* [7 ], J0 v' P/ j
  9. typedef struct {
    5 D! `* V1 `6 F+ T0 T1 O2 s7 h
  10.         unsigned int        e2prom_cmd_sub_addr;- @5 W( F1 ?0 ?
  11.         unsigned int        sub_addr_count;) f' \* [. G; ?2 l  I' J$ {
  12.         unsigned char*        e2prom_cmd_data;
    . G- J* ?( v# b4 b8 f% B
  13.         unsigned int        data_count;
    7 b3 N! e; F  I
  14. } e2prom_s_cmd;
      r+ _8 }: z' e4 v
  15. 2 U2 P2 u9 w7 r  Y7 ~$ D. P
  16. #define E2PROM_CMD_READ 1( H9 y' n) F% R& r' t
  17. #define E2PROM_CMD_WRITE 2  L# `$ [6 w4 p- u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; E$ i4 P8 O" v$ Z
  19. $ Z! i) |' {6 U* D. x
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 X: ^; s+ F  J- m  v4 Z/ t' ^
  21. {; M3 |: Z# @2 U6 x6 f6 v5 \
  22.         int fd, ret;
    9 M+ ^8 u3 p# |& {6 S& @6 Y3 L2 B
  23.         e2prom_s_cmd arg;2 i  M  k$ f4 }" }: u7 Y
  24.         unsigned char buf[0x18];
    5 w* j0 ?5 A6 r: x: o- W) ?+ z

  25. 6 u4 C# p: z  w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 p& z+ q5 _% c2 D' f% ?
  27.         if (fd  < 0) {
    2 N/ W# Z( F% V* D) _" F- k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 B/ u; t% A# M- y8 ]9 a
  29.                 return -1;
    " X2 D/ w4 h5 d6 {) H0 ~2 Z* `0 D
  30.         }$ w( X" [3 `; x: f
  31.         arg.sub_addr_count      = 2;
    ! K* q' n/ t* Z1 _% m. G2 i. w
  32.         arg.data_count          = 0x18;
    * h" k" \, g" z9 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / e0 T8 _% W/ c( f: X* a9 Z6 a
  34.         arg.e2prom_cmd_data     = buf;5 \% I7 A* g1 B, A2 b: f% C( X; t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* N$ P9 [$ }% a/ m
  36.         if (ret != 0) {
    " u/ I/ R* w8 U3 c3 {8 y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 Q4 n2 z" c" F" y
  38.                 return -1;6 O4 D- Q* k+ U+ P2 S7 n
  39.         }
    ( \( r, u4 Q8 e' P
  40.         memcpy(mac, buf, 6);
    / f' q5 T2 n/ K- E8 S7 g
  41.         memcpy(stbid, &buf[6], 18);# v3 j9 J3 r1 H2 N! e1 `& |
  42.         stbid[18] = '\0';
    1 |" J4 @- \" w7 y
  43. / g7 h8 ^" e  k6 t' r
  44.         return 0;& H  [9 R( d, M: Q+ m0 ]
  45. }; \* K1 x; i8 j# f
  46. % c. l4 _% V1 ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid); S4 Q, G' W7 C0 Y
  48. {
    ; d7 {! W6 i, W& ^- N' J
  49.         int fd, ret;
    ; T  E( |4 _) \$ n( }  P
  50.         e2prom_s_cmd arg;$ G1 ]) }1 r6 {0 ?- M. \
  51.         unsigned char buf[0x18];
    , I. V* _1 N9 G5 p& I/ B* O6 R9 W

  52. 6 G9 F8 C0 `* {- X6 U# C
  53.         memcpy(buf, mac, 6);; x5 C& @1 d* H7 M; e  q$ J. T/ X
  54.         memcpy(&buf[6], stbid, 18);3 \) m) f/ c0 O% u0 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; E  x% D& Y* f
  56.         if (fd  < 0) {; q  t: `/ Y$ s& X/ l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % X5 F6 M4 v* c6 \' I; r
  58.                 return -1;
    ( s& m) P. K/ o
  59.         }' v# x. Q7 D# r  M
  60.         arg.sub_addr_count      = 2;5 W) ^7 ^2 N; K0 h: N
  61.         arg.data_count          = 0x18;
    + s. q' c$ |) J8 z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 [/ v! V( w% @$ {* c- ~
  63.         arg.e2prom_cmd_data     = buf;% [+ U" T( e; X8 `! ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; ~. y8 K/ I5 X) h2 A3 c
  65.         if (ret != 0) {2 ]) ~: [# j) V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( C! b' ]/ Y, s7 g* U% K
  67.                 return -1;
    9 t6 i3 u/ n  v$ h, N: L; ]
  68.         }
    8 i5 u. u0 p, N8 u

  69. 3 d% U! f  j& h! ~3 [; Q
  70.         return 0;
    ! A5 D9 F$ P# C! }5 L
  71. }
    + z3 g) w: i) q

  72. 4 M" x9 d. w; N) d. e/ I) G
  73. int main()( |6 K: X' J! {: x( e9 c9 r& I
  74. {
    # N- K0 L- w: D* J! f( M( ^( _# A: F
  75.         char c;( U) v" ^: s; V5 @! m; {: E
  76.         int i, macs[6];
    ) O/ O7 @! x7 l8 ?, [8 n
  77.         unsigned char mac[6];
    : w* c# @- I& w2 Z% j
  78.         unsigned char stbid[256];) X3 e  d+ J! b* h6 q6 R# M

  79. * r' o( a, ^" ^7 {# B% F
  80.         if (readparam(mac, stbid) < 0)" G0 b5 ^' ^, J7 g( i
  81.                 return 1;
    / }: z6 h# q' M  {1 r
  82. + ~  T9 Y; L8 m0 F& O
  83.         printf("Current parameters: \n");
    ! z: X8 j) |/ }) x) s3 r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , c, E- q- H4 }$ ?$ p0 X" n; b
  85.         printf("  STBID: %s\n", stbid);
    , O! ?+ r; q& v$ l7 I- a: Y
  86.        
    $ F+ F2 Z8 T- d5 M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ X4 o& B# u5 q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' u: v* x/ T& b
  89.                 printf("Input MAC error\n");$ O! d( N) P5 U" K/ ^. o% t$ e0 J
  90.                 return 1;
    + x6 m2 a2 i! L
  91.         }
    " {" Q2 Z5 X2 M; V" ~  a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ V( n/ {6 T  {2 U, x% N
  93.         printf("\nPlease input new STBID: ");# ?9 w' e& y) q# t: A5 L/ `- p
  94.         scanf("%s", stbid);) ]* Q3 ~0 y4 z5 I4 p: A' Y: W
  95.         if (strlen(stbid) != 18) {
    6 h5 }3 e1 w. V; C/ v
  96.                 printf("Invalid stbid\n");+ X" F' C! I7 O9 a9 |5 u$ e
  97.                 return 1;
      A# i$ ]9 p6 j# m
  98.         }
    : B( C$ C" M$ V) j' q/ W4 x
  99.         printf("\nNew parameters: \n");
    9 g9 n  z4 i( w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- v& t$ g9 L8 A2 B
  101.         printf("  STBID: %s\n", stbid);
    ) T! n7 I* M4 d# C" z
  102. 2 A% p  j! O- t2 s/ c* X+ i! h8 Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; N1 b: G- s& N7 t( Z
  104.         for (;;) {( k1 g- y2 \$ I+ X$ e
  105.                 c = getchar();+ M, I2 W" c' K) i4 l5 o$ x' k
  106.                 if (c == 'y' || c == 'Y')
    ! r( t! T" ~  o( Z- N( t
  107.                         break;8 w# X8 u4 d$ @
  108.                 if (c == 'n' || c == 'N') {$ d+ D# o2 l! E7 @& m
  109.                         printf("\nAborted.\n");( M1 s: v+ L+ ?( I) `0 d; Y
  110.                         return 1;" k& A0 y! z2 T$ y. E  ~
  111.                 }
    5 i/ I5 G$ d  m$ I
  112.         }
    ( S. o! P' ^! x# w
  113.         if (writeparam(mac, stbid) == 0)
    : w  ~( J7 [7 J% e- e- ]9 k, C
  114.                 printf("Parameters changed.\n");7 \6 p) }4 F' ^" G
  115. 2 L  a0 A* i. J% e' ~3 u
  116.         return 0;, Z3 c7 p" K( c/ D! [
  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
1 a% p0 ]5 n. v) ?+ u- C& {* \$ Z2 O在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 Y+ X5 b/ ]/ I# H4 ]  F: |
你用的编译命令行格式是什么?% L$ g$ T; G6 N' M8 J3 S
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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