找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15245|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      P# w; X: O1 B3 d; ?  h# g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : L1 V8 Z+ h1 G, Q( \) u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# Q# v2 H" o# L# zusage: himr <address> <value>. sample: himr 0x80040000 0x0
1 D' s4 c" `8 i7 f0 c4 I. |( V) c3 c" _3 d

. D- l, P# M, p! I$ n& L: `不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* A  e3 i% K& z4 r, B+ D

  @! Z7 ?7 J8 R3 S2 b; [- ]补充内容 (2012-3-8 09:42):/ W0 G' }5 l- d2 U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( F! t1 {) B( j
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- L- U9 \2 K; c6 m6 {: U, N
& ?7 l7 q9 j3 K0 b# Lhimr <address> <value>. sample: himr 0x80040000 0x09 N4 I7 e# J: V  W$ _
) P/ C- i8 y! w9 X6 b& [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( N  l4 c8 I. Q2 S2 {
himr 0x80040000 0x00
- @6 T: w2 o, e' ^himr 0x80040001 0x11
9 C5 ]5 e2 a9 f' V, uhimr 0x80040002 0x22; Z% I- P( W6 g* n+ U" A7 G
himr 0x80040003 0x33
, |5 a0 z4 X; ^6 A# g7 Dhimr 0x80040004 0x44* P+ ]; t! M+ y. }, w' V; k: e
himr 0x80040005 0x55+ i8 E1 A, x! _; g( [' ?

% w$ T+ Q' G4 e) b0 i$ r+ C/ V0 \SN也是类似。
0 {9 E6 U, |+ h5 C; P1 X8 ]" v& w) P9 i6 H3 A& S9 c
现在主要是,谁告诉我们MAC和SN的地址?/ Z3 `. K- z7 M' o* x$ n9 a% R7 m3 q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' [4 m7 z( a% k( @, X( B一直想找到运程修改MAC和SN的办法,苦于无解啊

6 H7 e* `) |6 l/ i& o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 u6 @# \9 [: b  c( q$ ?
' g! \: @/ S+ `6 ?# H4 u( G
修改的代码早有了。到今天不会编译。
; u2 Q5 ~8 u3 y* R. b/ J& q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 P0 ?* a- R( W" N+ W. I
  2. #include <malloc.h>" z' g, \( S% V. x' D( {' G/ p6 H
  3. #include <sys/types.h>" ?1 P' e! G$ z( t
  4. #include <sys/stat.h>
    8 z* x- H' G; ~9 L
  5. #include <sys/ioctl.h>
    . D0 b1 B2 Q, W- I0 k4 P4 p; z
  6. #include <stdio.h>
    - A" Z) e' w1 K& f! a
  7. #include <string.h>
    2 F+ d8 v; _$ }6 Q$ G4 o8 G
  8. + |" ]- j: H- F: D. P' n( G* P/ M
  9. typedef struct {2 J4 {3 r9 x7 T7 x0 X
  10.         unsigned int        e2prom_cmd_sub_addr;
    : _3 @" }0 U1 l. ?& o  i9 d
  11.         unsigned int        sub_addr_count;/ Y% `1 K$ \9 _, d0 Z3 y
  12.         unsigned char*        e2prom_cmd_data;
    2 L1 H3 d& a, W, E
  13.         unsigned int        data_count;8 ]7 o. m8 G5 Q7 q
  14. } e2prom_s_cmd;1 S0 ^  z' L' I( x9 m  j7 q. s: u
  15. ' y8 H4 r. ~) {) _( |9 q' i: g1 z
  16. #define E2PROM_CMD_READ 1: X6 _' l2 L! Q' b5 [9 }! c2 p
  17. #define E2PROM_CMD_WRITE 2
    4 v7 \: R- r2 O2 w* l6 O2 F% O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# S( b3 i, X1 S" y" e) ?

  19. % |  w6 C6 q9 n/ H6 s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)1 c4 u7 S- S( C+ W
  21. {; }3 r% I1 P- N0 v' |% s# y
  22.         int fd, ret;
    3 S( _! Q  \! b+ `1 p
  23.         e2prom_s_cmd arg;
    + a& J2 V6 w, X# ~: s) c  Q& n
  24.         unsigned char buf[0x18];) l* c& m5 P7 c3 n: e$ n
  25. ' k4 m- D% L  f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);* J; [0 S. u2 n6 T9 ^2 P  M/ H, ~
  27.         if (fd  < 0) {
    % s$ F+ b& q7 q- O. w& w' f, q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ t9 U1 _* N0 P% N" e7 D
  29.                 return -1;
    5 P3 l! R3 J* x& _
  30.         }2 j, k2 W. `8 I$ e3 [8 e5 I9 O7 Z
  31.         arg.sub_addr_count      = 2;5 o* ?0 `" p: S* N
  32.         arg.data_count          = 0x18;
    4 {; E+ P: a, s* }+ W
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 B* E& n. ^+ O" P6 Z+ N" H6 T
  34.         arg.e2prom_cmd_data     = buf;
    ) n3 A. I2 u5 V" M8 B
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);- X* K( _  l% R) B' q" Y; @( {
  36.         if (ret != 0) {6 ^7 C  l. S9 t, F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( R  Y5 \/ L- v! L; G
  38.                 return -1;- h- w; j, _% \# d& [! n. @
  39.         }# N: h" d" M, d) i5 P
  40.         memcpy(mac, buf, 6);
    ! V3 O+ ]# ?( ^# {
  41.         memcpy(stbid, &buf[6], 18);
    , ~2 p+ w  ?; ^- J
  42.         stbid[18] = '\0';
    1 ~3 j# E9 \# ?

  43. : P5 J/ S: _: m$ ~& k1 P+ o
  44.         return 0;% Z8 Q9 m  z; A; y9 ^
  45. }
    * P( g; |4 q8 s& J) [5 ?, {3 X+ I
  46. ! Q: V0 G- f+ a# g6 k5 }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , v! f( F. t  O+ x& Z# x( v
  48. {  G% K, M$ ]/ g3 H
  49.         int fd, ret;+ `! p$ A# \5 x- ^1 F# X
  50.         e2prom_s_cmd arg;
    # V7 m# ^' Z+ Z! b; z6 l( j7 J
  51.         unsigned char buf[0x18];
    7 _6 L. S+ j+ ^. N
  52. 7 D( f% w8 \0 H2 ~1 {
  53.         memcpy(buf, mac, 6);3 Y2 }2 p& K& f: Z% q( [5 w
  54.         memcpy(&buf[6], stbid, 18);
    ( u5 c* d# P6 P7 j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);2 D2 j# K/ g6 X) E" G
  56.         if (fd  < 0) {& i9 e" ]6 ?2 i% ]( t3 P5 v1 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: l; ?* n, `2 f8 t
  58.                 return -1;% v! g7 Y  b9 Y0 ]* S. b1 Z2 V; I
  59.         }
    5 p! M5 u& }, A) a. E. _
  60.         arg.sub_addr_count      = 2;
    5 n' Y2 ?- g. q. v) m+ O" S
  61.         arg.data_count          = 0x18;% b! j7 A2 u% ^$ v- r! c9 t2 B
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 Q" [( k+ [% s9 ~3 r
  63.         arg.e2prom_cmd_data     = buf;) K& @0 y4 X" E, v" O4 q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , x+ }# |& E4 O
  65.         if (ret != 0) {
    9 o2 R$ |. V$ A) E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    7 G: W! R; K# x, v3 T7 L& `9 R" n
  67.                 return -1;
      ]3 U3 x3 D3 R. U+ O/ D
  68.         }' f8 @+ c) W. o
  69. 6 p& I6 F9 }/ x" z8 M
  70.         return 0;
    6 [# G2 b1 |( G7 ^2 `5 v5 P
  71. }7 I9 m* b+ ^3 M+ G
  72. & R& z# p7 s: x  {$ b& K1 c& R
  73. int main()# q1 g) q4 A3 P6 R& m8 m# p! }  S
  74. {
    7 S  P% E5 v, k: F) o
  75.         char c;2 |: O, g; e/ g8 ~
  76.         int i, macs[6];$ ~7 H( K& `2 Z% h, ~
  77.         unsigned char mac[6];
    2 L2 q  F- H* e$ p
  78.         unsigned char stbid[256];* r; h( O" G9 M# |. a" L3 R+ e/ n

  79. 0 m. Z  M. J) i5 G2 z
  80.         if (readparam(mac, stbid) < 0)
    ' k$ ^% e0 ^0 I7 C- O" \
  81.                 return 1;# e6 a# ^* y: }
  82. . t$ f" a4 H: a" T7 m+ w* a. r* S
  83.         printf("Current parameters: \n");/ k( ?. F6 J) w1 j7 w$ {0 X, Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; H( h. D& h; W! h2 x
  85.         printf("  STBID: %s\n", stbid);
    ; R4 P# Z6 a( |9 D4 x! M% z! W
  86.         & h; D2 |( w8 K: m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 `. \# P# a1 S) \8 \+ `6 O8 Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! O# ]2 s. F$ W0 m5 F9 |: z
  89.                 printf("Input MAC error\n");
    8 G. L" }3 @  P  Y' ?8 E: f
  90.                 return 1;! D7 e& S' V9 S$ q- |
  91.         }
    ; V5 Z7 M# B( q* k
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 h4 A9 ^% |/ y- F  w) n3 [* ~% W& [" {
  93.         printf("\nPlease input new STBID: ");
    % x( D. m" G: y
  94.         scanf("%s", stbid);
    6 j4 Y/ ^0 H9 y# T& }$ D1 E
  95.         if (strlen(stbid) != 18) {
    8 r. L* q8 ~6 e5 i
  96.                 printf("Invalid stbid\n");
    , R# [3 ]# g' O, _/ |$ L
  97.                 return 1;5 F- }, I- y7 R  e" @. j
  98.         }
    9 O1 q/ D) Q  k6 [# @8 q1 }
  99.         printf("\nNew parameters: \n");
    4 Y# Z- T; T9 B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 ~7 J. O6 S8 ~3 K9 q) _. Z% M
  101.         printf("  STBID: %s\n", stbid);
    , ]  x' Z. p( V3 n  z" h" Z

  102. 7 O/ j$ p3 t3 S9 J6 |# Q, U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ C! j/ K, c% I% }; \1 B
  104.         for (;;) {
    % v; U) n; c* }0 t2 |
  105.                 c = getchar();' j! |9 `  b6 h3 K$ @, c, S
  106.                 if (c == 'y' || c == 'Y')% m8 {3 V, ?5 e9 G. z9 e
  107.                         break;: Y  W& @: {- R3 C
  108.                 if (c == 'n' || c == 'N') {
    ! W3 a1 ~/ l1 @4 c! V  P
  109.                         printf("\nAborted.\n");
    5 F& o7 v2 z6 D! E% Y
  110.                         return 1;% w1 l; {2 {5 @- E! K( g. A
  111.                 }3 i' _9 i6 M' a
  112.         }7 s! M8 K. Q7 W+ n& g3 ~6 m
  113.         if (writeparam(mac, stbid) == 0)
    ( f3 ~* Z3 m# ^! H$ F2 u3 f
  114.                 printf("Parameters changed.\n");
    ( s( N: k+ V. d/ d: r

  115. $ h2 f1 v, M3 J+ b, L( Z
  116.         return 0;  i8 I7 m) }) d7 Y. N+ ~+ V& b5 \. |
  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 ! q0 u% u) R8 A: t. S1 Z" H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- j, u1 S# a1 U. a- }你用的编译命令行格式是什么?
% ~) g6 [2 k% P) r% E: q$ k* z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-12 01:05 , Processed in 0.024990 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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