查看: 16293|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 j, a) l/ m2 b# l2 l) q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 z. L- O) Q& o- B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! V* c0 Y2 O. i0 ]! gusage: himr <address> <value>. sample: himr 0x80040000 0x0
- L4 t2 V$ y/ c! O. U( a% D8 U2 W. Q) D7 J* x( G( w7 u+ @

0 e4 |" q: A6 T0 m. V' e$ z. C' W不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 o& u/ J/ }9 F* O% X- N! q  F  n$ v  V7 v( j2 l
补充内容 (2012-3-8 09:42):, z, f7 w0 d1 a8 m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ H8 |+ B; w9 J( e# k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。8 S; b& Y/ W) E) L2 u5 N) ?: J

4 w6 E/ D' x; [6 p# Whimr <address> <value>. sample: himr 0x80040000 0x0+ S9 \* y# Q4 i- R+ p
; P( u: F8 @3 h) X* ?
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, W6 ]0 G8 m* ~# _
himr 0x80040000 0x00
% n; E) c  l. V( L7 s4 [% v/ k8 lhimr 0x80040001 0x11; A3 H7 e$ ^' H# M( U' Q. w
himr 0x80040002 0x22+ T/ p) Y, I: p# h# m& M
himr 0x80040003 0x33; @1 ~# s# R) k9 N
himr 0x80040004 0x44; a: t: y7 s* W$ a" V: J+ r( V
himr 0x80040005 0x55
* `, y# Q; L# C' b/ e! z" b3 u3 {) Z% ^, M" j$ `3 K
SN也是类似。; }5 @  |, P4 X& Y( |
. z1 i/ s. c$ g5 ^9 ]
现在主要是,谁告诉我们MAC和SN的地址?% S) c1 @0 M& ?$ z
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 o+ u/ M2 q1 c7 B. D一直想找到运程修改MAC和SN的办法,苦于无解啊
. q# V4 u$ Q8 o$ N& @
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& a5 [% A) e& Z3 I9 E4 D
- E( g; `* I6 A5 ^! _修改的代码早有了。到今天不会编译。5 {# g# g6 D; W" s+ d/ z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! N& M$ d0 s2 p9 `6 s7 a1 W, O9 P
  2. #include <malloc.h>% j' V" G% l- v: T$ `! p9 T
  3. #include <sys/types.h>, v$ \/ O9 `) a# H- z' }8 K0 O
  4. #include <sys/stat.h>& A4 G* \1 y2 ?7 Y1 h
  5. #include <sys/ioctl.h>: {- \- l" {7 R
  6. #include <stdio.h>
    5 S1 D; `' m7 y, E
  7. #include <string.h>& U1 n) `: v% \' C3 i# f

  8. 6 i- w. a8 z) D# O9 {( R* S2 I
  9. typedef struct {. E/ o+ ~1 W6 @! z* d# v8 u
  10.         unsigned int        e2prom_cmd_sub_addr;
    / j8 l" g. c! U5 R* v, H
  11.         unsigned int        sub_addr_count;2 i/ t- }2 o( F! ]& f" l
  12.         unsigned char*        e2prom_cmd_data;0 \9 x8 B$ G7 L% N$ v5 l& ]) _: p
  13.         unsigned int        data_count;
    3 F6 y6 d" A$ R6 J$ s
  14. } e2prom_s_cmd;
    8 \" X& }$ P0 z" O- |
  15. - y3 D4 c( _/ ^+ s# \
  16. #define E2PROM_CMD_READ 1
    5 u! z$ F' m' K; p# L  Y+ D
  17. #define E2PROM_CMD_WRITE 2
    3 ^. r7 c& N* x
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( B# q3 @, ~# w: f

  19. 6 ~+ ^9 g* B: j6 t6 i4 @+ c. e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ o0 j# c. a6 V9 K! h7 A; e# k
  21. {
    . {3 q7 b3 E. L4 j' d2 N' Z$ j  @
  22.         int fd, ret;
      v1 O( l4 O( P" m9 u8 w
  23.         e2prom_s_cmd arg;
    , `. E; O& j6 h# }8 G
  24.         unsigned char buf[0x18];
    $ `4 K1 a8 D8 b  T8 v

  25. * c7 v( v0 i% ?) W7 g$ U$ J" y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' A) [& b5 z3 w5 [4 U
  27.         if (fd  < 0) {! s- Y7 ]9 F: V9 K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) ?2 @9 b) z% H' _# c: u
  29.                 return -1;' G' x9 m9 e4 {. y, J. c& P" X4 Y: `
  30.         }
    , M$ C& ~- X( f
  31.         arg.sub_addr_count      = 2;
    1 V2 M7 n3 p- l
  32.         arg.data_count          = 0x18;0 N9 G) ]- D5 S- c0 x& S
  33.         arg.e2prom_cmd_sub_addr = 0x290;% q# C# c0 v! ^9 J' P. h# x+ C' d  b
  34.         arg.e2prom_cmd_data     = buf;2 X. N: A+ l! c) _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' p3 g( h, N2 }8 L( d
  36.         if (ret != 0) {
    7 K9 x' P8 F5 T3 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 {" W/ a6 M, j. m* l) R4 k
  38.                 return -1;
    6 I- A, ]5 C! `( d" E( x
  39.         }
    0 E' h+ f: E5 z2 A5 i4 b/ j/ u
  40.         memcpy(mac, buf, 6);4 `) D6 a$ R: f0 }2 {' C
  41.         memcpy(stbid, &buf[6], 18);
    4 i4 O: l) e8 q: {" K3 L
  42.         stbid[18] = '\0';: O4 _: \& J4 h) ^( M
  43. # l! t+ P' I! ^: k; f
  44.         return 0;
    6 J/ Z4 [9 I% o: N! B
  45. }
    $ v2 s' _5 T2 q
  46. 2 W* O3 D! M+ a5 A: V6 v/ o8 {
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)% c, s7 Y7 ~+ U* T8 d- \9 L
  48. {( A' X1 U4 n& @8 H0 m9 s$ d
  49.         int fd, ret;0 o1 m. u3 u3 l6 L3 g* P
  50.         e2prom_s_cmd arg;
    - f# t% _. q8 P. k/ v4 k( m! o: Y
  51.         unsigned char buf[0x18];
    & H. ]$ o; r# O; H: f) x, \

  52. ! z; e+ ~# M  }4 p
  53.         memcpy(buf, mac, 6);) M0 p  G8 g& x1 H( v: Y
  54.         memcpy(&buf[6], stbid, 18);
    $ G8 d  ?, _9 Y0 Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 ?. X4 Z" n& C  ^$ C
  56.         if (fd  < 0) {+ |+ |7 k1 J  J4 h- i( ]$ C5 ]' I4 W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 {: J! r$ F" N, k0 @
  58.                 return -1;
      k$ f( s) S* Y% G
  59.         }
    ! A7 t; V5 o1 |7 @4 F
  60.         arg.sub_addr_count      = 2;
    * `- O$ x* I# ~( S8 Y+ Y5 z
  61.         arg.data_count          = 0x18;
    + J1 O; m5 e% H/ X& z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' p/ R% }& V1 h* J  z# h! t: S5 N: ?& S
  63.         arg.e2prom_cmd_data     = buf;
    8 a7 [& S4 H3 g) F
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
      Y" F& [) q. i. j: K2 \) N/ {
  65.         if (ret != 0) {
    * H+ l  U" _6 X. p0 S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 l. ?+ b# y% s  J" s7 F4 o& P0 d
  67.                 return -1;! _3 a5 g5 r' O
  68.         }
    $ d2 |3 t" D: q5 x6 U3 \% J

  69. 7 s, X. B7 G* i# U
  70.         return 0;( \9 q& f; W1 @2 y9 d8 z" I  Y
  71. }( Z) n2 K: `: P% B6 X+ Q! {

  72. & n6 |$ g1 W4 R7 ]3 C7 k
  73. int main()
    . \/ _) g/ G& N  E9 |4 Z
  74. {$ C1 @7 B$ ?: U
  75.         char c;
    4 V* w* W" h- M, @% j2 I$ |
  76.         int i, macs[6];
    ; M' p3 s% W# g, j. M6 q2 W
  77.         unsigned char mac[6];
    % A: p/ B* S% N$ E9 ]  t, y
  78.         unsigned char stbid[256];
    . G* i# K+ s; l. I7 e5 Z
  79. 7 C8 Y+ t' f; z0 d4 E- s% V* F
  80.         if (readparam(mac, stbid) < 0)
    9 |: j( V" H9 @# [
  81.                 return 1;. W( n5 v, A0 Y" k$ c- o2 K" b" X
  82. : e. J+ X7 }1 o! R7 P
  83.         printf("Current parameters: \n");
    $ s( @0 [7 V% V3 e0 [  {! D# r* Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ _8 a8 {# f1 o
  85.         printf("  STBID: %s\n", stbid);: G; R- l: B- Q; W
  86.         9 `9 p2 k1 J* _$ [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / P1 i4 `/ K, }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * J3 k& Y0 v$ s
  89.                 printf("Input MAC error\n");/ U5 N# d9 n, z$ [/ x; p+ j" L: N3 w
  90.                 return 1;7 n1 q4 C/ f3 v! J' b- P( x3 y
  91.         }! u' V! i3 H, R+ @, p" u* u, a+ b
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( p7 u: t  M* T
  93.         printf("\nPlease input new STBID: ");
    , p# q! a1 F7 L3 C7 c
  94.         scanf("%s", stbid);/ u& y( @+ V# O7 v2 m# v
  95.         if (strlen(stbid) != 18) {1 P# t2 N2 ~( \& B9 W( Y$ G/ d2 e
  96.                 printf("Invalid stbid\n");
    , D: G) T% x' q7 L. o; b
  97.                 return 1;
    " c; c' t" h* m
  98.         }
    4 }# k, A  W, Z5 ^! Y% x/ Q
  99.         printf("\nNew parameters: \n");/ F6 ^& a+ i$ _& ^1 _/ c3 v5 T" u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . W1 w5 g$ v, G7 e
  101.         printf("  STBID: %s\n", stbid);: j0 w; P8 ?+ G2 N, P4 h, V9 N, L- Q
  102. 6 C5 F4 U+ D5 f& h3 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 o( W0 k% G! ]4 l8 n& I* t; x" m, y
  104.         for (;;) {
    4 N: q& E5 g  e
  105.                 c = getchar();
    7 Y# J! C5 a% e5 H' c
  106.                 if (c == 'y' || c == 'Y')
    2 z9 K& }, s6 A( P( O
  107.                         break;
    ' x$ k; q* U; D" c6 y$ y
  108.                 if (c == 'n' || c == 'N') {
    . G( m$ S% O) a/ @. G6 i
  109.                         printf("\nAborted.\n");* o  j% L! x8 K( {$ t: z0 `- A  [- b
  110.                         return 1;# g6 p7 I  Z0 A- L7 N
  111.                 }. s  T* K! Y' P; z$ h! j9 k
  112.         }8 o, m( b" j  _/ ?  b
  113.         if (writeparam(mac, stbid) == 0) 2 U: \- y+ b9 L2 i. P( z
  114.                 printf("Parameters changed.\n");9 b) W& {$ _4 O; J3 A6 C

  115. - p' u+ t7 i# q
  116.         return 0;
    & T" ~' K' X/ P3 ]
  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
6 s5 R# ?( v9 i$ ]( U在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
$ a5 q2 y% Y9 W+ q! A7 s
你用的编译命令行格式是什么?
" u+ T6 F  _8 M: {, {
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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