找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15112|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr: Q3 Y9 }2 C( q: U( m6 B- |+ }
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig  I; c0 d  U1 @7 x8 w& y' h  f7 D/ w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 b. ]3 X# w- y! B2 ^0 n2 \$ @
usage: himr <address> <value>. sample: himr 0x80040000 0x0( E; [" ~4 d! c6 _8 m" T

  H  u& Y8 y3 _+ p8 g, H7 A  G) P& p! e7 p( f( }4 t& {
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% N+ Q' c" i" V5 C# `9 p; k2 B
3 B0 Y! c1 f; o4 \' I/ ^1 c( j9 h/ A' ?
补充内容 (2012-3-8 09:42):) C: o- h1 A/ k; F* W
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  C& V& q$ W1 x( b, y: [  a
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, N+ z$ J/ D( [) {* R4 `6 x8 _. @# ~
himr <address> <value>. sample: himr 0x80040000 0x0  D! n. I+ j: c- s

5 h1 y2 Y" t" c7 H2 }例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( |* L- D. T7 Z4 X, _
himr 0x80040000 0x00; W0 r9 `3 n& ^* d9 g
himr 0x80040001 0x11' ~7 r0 ^; W: t1 h  n
himr 0x80040002 0x221 M1 I8 E6 u7 ~/ S! g  ^' D. i4 p/ C% q; m) @
himr 0x80040003 0x33- I1 x& S# T6 W- f9 i) p6 A
himr 0x80040004 0x44- u1 ~/ U, R' z3 p7 }
himr 0x80040005 0x55. ^9 L# l% n- o
+ Y# ~1 L% G% f- ]8 Z
SN也是类似。3 p' N) Z9 i/ _
, V2 q5 i5 s$ [! t
现在主要是,谁告诉我们MAC和SN的地址?1 s) O: Y( u4 m: p) q0 B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& k6 X, X! u8 U  Y5 g一直想找到运程修改MAC和SN的办法,苦于无解啊
% \! p0 n- Y6 w6 X
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 , m1 t$ w- T, V/ A3 [, _1 X

) y, Y; x, `+ l修改的代码早有了。到今天不会编译。. c/ Y1 h6 y. ]4 N6 Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # q5 l/ q; B9 v5 E; J
  2. #include <malloc.h>
    ' ~8 O: b4 i) Y3 Q7 k' h$ V  R
  3. #include <sys/types.h>
    0 U& U2 h+ d4 }4 H" y3 y4 \
  4. #include <sys/stat.h>: |( H5 O9 ]) \3 O  X1 y
  5. #include <sys/ioctl.h>
    4 y! b  ^  _/ A
  6. #include <stdio.h>
    1 e! A+ M0 O- L) F
  7. #include <string.h>8 j( C4 [  i5 G5 T% V+ F

  8. 6 O6 m  p3 J8 y) W: \" L
  9. typedef struct {0 n' {- D' u0 H" S: o, }1 i  n
  10.         unsigned int        e2prom_cmd_sub_addr;; p5 B2 j6 F- A) l- I
  11.         unsigned int        sub_addr_count;
    # W- M2 ~7 L# P% I: w. z+ o# E
  12.         unsigned char*        e2prom_cmd_data;# W: e+ v) x7 H. Q% I
  13.         unsigned int        data_count;
    # _! n! P. N6 t5 e- N% ?4 b
  14. } e2prom_s_cmd;. A8 z3 z. [: \* p! b

  15. $ C4 q& h! i4 C+ u" J! e; f
  16. #define E2PROM_CMD_READ 1. v: h- ]/ G  g9 W: {$ c
  17. #define E2PROM_CMD_WRITE 20 ]  h. ?: Y4 Z  P& A! i8 _! i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 {* J9 H" o* Z1 S
  19. . x1 k8 z2 W" y# H% }9 b) e
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    0 o7 g6 O+ k& e7 B
  21. {- e0 ?. G9 w: C1 f
  22.         int fd, ret;9 X% [/ r1 @# w  \' H5 h$ }
  23.         e2prom_s_cmd arg;
    ! ?( ]/ j0 Q9 ~% o- a9 S% O1 A
  24.         unsigned char buf[0x18];$ }. U+ _' _) \6 B& V2 v3 [

  25. ! [& E/ p8 C- U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 I9 N9 A* e3 H: l; P" ]
  27.         if (fd  < 0) {% s9 c) O! `# U- P  E$ f' R. {7 i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 t1 o) R5 X" o. i/ a9 j" C; L6 K
  29.                 return -1;
    % u1 [2 C0 h  C* V- I. ^
  30.         }
    + Q2 h9 H1 W2 ]' ]( T) ]
  31.         arg.sub_addr_count      = 2;: q5 P3 q1 Q4 l" ?. K* |
  32.         arg.data_count          = 0x18;
    & _0 s5 d/ Z) p# R
  33.         arg.e2prom_cmd_sub_addr = 0x290;. C: ]0 m! N2 _5 s9 ~2 q" y. ^* B
  34.         arg.e2prom_cmd_data     = buf;, b, h4 T& l! `7 G
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% h' E: T0 v9 V3 D# ~
  36.         if (ret != 0) {
    , b4 o, ?' t+ {0 O5 k8 Q" G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) J1 R1 R3 J! i& v- w
  38.                 return -1;5 r2 q5 l% D6 N2 @2 q
  39.         }' b  }4 q  f; D1 b" q8 z
  40.         memcpy(mac, buf, 6);6 I" I+ ~5 R% `/ h8 }' D
  41.         memcpy(stbid, &buf[6], 18);+ Z8 \4 i6 j8 d
  42.         stbid[18] = '\0';
    6 ~: u9 N' w! Z' {. d8 z# u3 s

  43. & ]* [/ _9 ^; k
  44.         return 0;8 ?" ?* G* B4 v: l# G# g3 R
  45. }! [1 n2 @9 A/ f3 d
  46. " m# p6 x" N! }$ {5 v- p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 L7 j0 Q( T9 b+ `" {" k& c- g: ]. i
  48. {
    , d1 N3 m0 ]1 F5 j* T. y
  49.         int fd, ret;
    * `6 c9 m3 N- y  C; N2 g8 u& M
  50.         e2prom_s_cmd arg;
    ! d6 }' F% y# r% i9 E, k: R1 o
  51.         unsigned char buf[0x18];
    ; ]% D( k2 ^; F

  52. " k0 `+ X6 `3 e3 x( o
  53.         memcpy(buf, mac, 6);! x, @+ i- ~. i. n/ u; c9 Y2 r
  54.         memcpy(&buf[6], stbid, 18);
    ) n7 G3 z0 c5 @7 Q7 r' ?% q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; v/ r6 p/ n: r$ w4 u9 U6 ]' T
  56.         if (fd  < 0) {% j& s& M$ O9 a3 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) f2 S' E8 u& N) i7 q2 y+ X
  58.                 return -1;" y+ S2 q3 a7 Q- U- R- y& y
  59.         }6 M* _1 ^5 U+ D% ^5 G5 P( L
  60.         arg.sub_addr_count      = 2;- e& K7 K2 Z( q' s
  61.         arg.data_count          = 0x18;; t: p2 c' g* ^! {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 P' q7 _# I1 Z
  63.         arg.e2prom_cmd_data     = buf;
    1 I' A! ~1 j7 e
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 K" B$ F; F4 e' @! |' i
  65.         if (ret != 0) {
    * d3 t; X3 q! E) ]% Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & J/ R4 ]& V2 A3 ]7 S
  67.                 return -1;
    ! l/ P9 U' {7 W: v$ M% h6 J4 e
  68.         }4 ?: @% |# [5 E- \

  69. 9 _0 r- o2 M' x1 H
  70.         return 0;
    . n& v" W7 v& N8 l4 D+ E
  71. }
    9 S, @/ E% F3 |9 O' Q
  72. 0 N3 ?" U4 c/ N1 L# E8 j9 h
  73. int main()! ^7 u: j! e: ^
  74. {
    , ]& |  R7 k* o# f: k3 R: N
  75.         char c;
    , h9 d) e, U1 K, V5 x
  76.         int i, macs[6];
    ( ]; I8 b' Q" a$ G' ^1 H/ e
  77.         unsigned char mac[6];6 R' o8 f& }" V" Z2 c0 e1 w8 F
  78.         unsigned char stbid[256];$ ]: ]1 ]4 k  U$ B& H# {+ P
  79. 8 F% P* t* x: B2 i% ?3 T$ d. k4 z
  80.         if (readparam(mac, stbid) < 0)6 b) V6 [$ @5 G: c7 }' g8 H) F
  81.                 return 1;
    ) B/ |1 y" ?$ |" I( X9 H, ^2 l" n9 y

  82. 2 z0 ^) N+ n- H- J
  83.         printf("Current parameters: \n");* c+ T( C- B: T' A1 ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 d  k) e# N1 h1 f1 d' ^
  85.         printf("  STBID: %s\n", stbid);' \- r& c0 O1 \! d# g" k0 c8 ~
  86.        
      Q0 Q9 R% @: B8 T8 c6 A0 J( F) V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - F( _9 z9 n& g  X# K( ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) }7 y, t* b( k; C" ]1 L
  89.                 printf("Input MAC error\n");. R& k+ e2 h; |: Q" @
  90.                 return 1;
    " Y1 y# o1 F* H! N7 G; J1 \
  91.         }6 n; m9 A) _+ Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    . f7 _/ Y4 \. O9 O7 o+ |
  93.         printf("\nPlease input new STBID: ");
    # x2 X: O4 |5 M3 |) V/ \
  94.         scanf("%s", stbid);
    ) e. T6 l0 c2 E) I, z
  95.         if (strlen(stbid) != 18) {, L0 ?$ @% H& ]1 x% F1 T- j& _( e- {( T
  96.                 printf("Invalid stbid\n");- Y+ b) P; f* {9 y
  97.                 return 1;
    # }$ b3 e. V  D& Q  j4 D
  98.         }
    6 Z( I9 r, g# A# F% \3 u: L' e
  99.         printf("\nNew parameters: \n");# u9 W  p5 {5 e, v" Y$ t6 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " T1 N6 m. |8 v; g4 q" L
  101.         printf("  STBID: %s\n", stbid);
    3 W6 H9 d1 N" I6 u5 S
  102. 7 E! a( R+ p6 i* H
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + P' N7 l2 B8 v- H- A2 o: r9 N
  104.         for (;;) {5 P+ w. q# _' r- p' g7 `
  105.                 c = getchar();
    + x. o8 f  F6 o/ h
  106.                 if (c == 'y' || c == 'Y')
    ! c; h+ Z4 T4 |6 u: Z8 e
  107.                         break;
    " k9 G+ ]* b" b5 U5 c
  108.                 if (c == 'n' || c == 'N') {( D1 b* [, \" U" y' h0 Q
  109.                         printf("\nAborted.\n");
    ! N& T4 i2 F- l$ x* v  k* Z4 K
  110.                         return 1;; n5 h+ h" y- v- C& [6 A
  111.                 }. Z) y; ?9 u8 C, l9 u
  112.         }
    : q# Y$ ]2 C2 f2 ~
  113.         if (writeparam(mac, stbid) == 0)
    ( ^9 p. ?' N/ D0 v- d
  114.                 printf("Parameters changed.\n");2 s  }) g! f& Y; h/ [& @8 Y3 C
  115. . i7 M& A+ Z- O/ Y4 p$ F
  116.         return 0;5 t, V% f( U  \- }
  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
- B6 O6 @, Z  q- k5 C3 A  c在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
- \  V, g, y% k9 _, w
你用的编译命令行格式是什么?
; o5 |1 ^' U- t
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-22 15:59 , Processed in 0.050282 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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