找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13998|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ( [) u1 N: C2 C$ E& f9 B, ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# G# i, X' \& T. g. T7 l) }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 ?8 P5 G* F! B1 M
usage: himr <address> <value>. sample: himr 0x80040000 0x0, ^' I0 M5 d. e& U9 [0 G9 F
; s# E& h& o. V6 q3 K

5 P. i+ M( [& P0 w; R8 G不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 t6 ?9 {; I0 C% e# L* L

% e; n3 r6 u" e' u% p1 J补充内容 (2012-3-8 09:42):# W' p( X; n$ K8 E% A* `+ C' p+ k
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 a7 z& J% s8 z/ q& Q- _这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 e2 a- \; p. `! R$ u& L
* ^4 J9 L  M8 r! J, M+ T
himr <address> <value>. sample: himr 0x80040000 0x0
0 i! d  W" Y: t) ?
0 T  s, `* {5 D4 u  p& b) J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 q, U1 o. j  ]himr 0x80040000 0x00
8 _2 G+ S! t1 J+ x: \3 Q* F! o, Thimr 0x80040001 0x11/ h, k. ~2 [% t/ h
himr 0x80040002 0x22; @0 n  h% h: A* b2 M/ A% Y1 D0 o
himr 0x80040003 0x33
" R: {& Q3 v4 Y8 g# d- {% q& S0 Shimr 0x80040004 0x44
  N4 V) y* w+ W) I! ghimr 0x80040005 0x55
/ [# Z5 h8 e! p3 M% r- z) B+ V7 y& s: {& \" a9 k; p
SN也是类似。
7 b0 M# L+ s( k, {, E9 S0 s) m) J6 I2 u
现在主要是,谁告诉我们MAC和SN的地址?
# N5 x8 X% a, @& B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 0 q) A2 E9 J' n1 I' y
一直想找到运程修改MAC和SN的办法,苦于无解啊

2 l" c  N# G+ t源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # V% T7 N" d4 x. C6 ?1 V: O+ I8 n

# j2 ~) C0 i4 A6 ^1 K修改的代码早有了。到今天不会编译。
1 ~  t' F; c! E' {% P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 B5 @" a; z& r) _- f- C
  2. #include <malloc.h>, ]* ]5 D7 @% K8 L0 [0 b) S6 V' {
  3. #include <sys/types.h>
    ' z. z, f5 b( j
  4. #include <sys/stat.h>: B8 u3 O2 A" U" e! M
  5. #include <sys/ioctl.h>
    4 Z% h* d6 K4 V6 U! K8 w
  6. #include <stdio.h>
    - o& Z( \# Q0 k5 X; t1 }- q
  7. #include <string.h>  K3 T" H8 _2 K& x! s4 u2 t
  8. 4 a2 M) \0 \  r4 Q& Y
  9. typedef struct {6 h9 m5 }7 O  j' S2 J5 M8 R! _
  10.         unsigned int        e2prom_cmd_sub_addr;
    " R/ U. H+ _4 _5 L- s' n
  11.         unsigned int        sub_addr_count;
    / h0 }7 z2 ^& h( ^4 }$ E
  12.         unsigned char*        e2prom_cmd_data;$ s5 |, a1 I5 G
  13.         unsigned int        data_count;) ~; s4 `3 n( R
  14. } e2prom_s_cmd;# [. o6 w- P9 u: C: ^
  15. ' `+ |6 e( i3 {% S2 m6 B
  16. #define E2PROM_CMD_READ 1& k& O9 F2 |! ~7 w/ E% X+ U; o
  17. #define E2PROM_CMD_WRITE 2, A* N, _1 u+ Q: D5 J
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) v- m: h. w* m4 b
  19. ' b  Z6 O0 N9 i! f9 k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    - \3 O& I& M' {( c$ c& h; X# [
  21. {# Q+ Z1 z+ _) e! a, a  b# f6 U) f% f
  22.         int fd, ret;# f- Q' x3 W; G/ \0 B
  23.         e2prom_s_cmd arg;
    1 t- l9 h1 @$ [: K6 r7 I. u4 N
  24.         unsigned char buf[0x18];4 X# ^5 Z. |, _4 R

  25. 5 _8 f; \, `) O, \8 U- e2 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 Y; J+ [7 R7 d/ J% P# ]+ e
  27.         if (fd  < 0) {3 Y' N6 S, h6 D- G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 K0 W7 [3 _1 B! S
  29.                 return -1;6 V$ R( v7 t: D. z
  30.         }
    , k; K* h' S; u5 w3 A
  31.         arg.sub_addr_count      = 2;
    8 a8 o# I7 M* a* F/ L
  32.         arg.data_count          = 0x18;; v( R5 i0 T& x, p+ `! h: z
  33.         arg.e2prom_cmd_sub_addr = 0x290;( E2 A4 w5 q) i# c* O  I0 Q# l
  34.         arg.e2prom_cmd_data     = buf;
    , [0 Z. r$ t" g" \; J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - S- m6 U& k) e- _; ]0 k1 Q
  36.         if (ret != 0) {
    / }, e! O8 o' V2 N% z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 g6 Z7 F) }: G
  38.                 return -1;9 k. f. f: f( d  m
  39.         }1 w# U/ w- y+ D! D0 d
  40.         memcpy(mac, buf, 6);9 N+ P& T: [' Z/ N
  41.         memcpy(stbid, &buf[6], 18);
    , G8 Q( b1 V2 m- J
  42.         stbid[18] = '\0';
    0 ?5 z, x$ M4 m
  43. 8 F! l) `5 n2 r' O' I
  44.         return 0;
    4 ^7 l- W' d/ R1 @
  45. }1 G: e6 [! }! W7 R

  46. , l, e; G6 }' S4 t, n
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - [4 ^1 q& @1 W5 j, w0 u$ S
  48. {
    , G( z' f  K& M7 x) O& M7 D
  49.         int fd, ret;4 A& T! z$ E; r6 r9 S
  50.         e2prom_s_cmd arg;
    3 G6 p8 J: z: i+ p- P% s
  51.         unsigned char buf[0x18];
    % [& ^, L, F( q
  52. - v( {, H: n8 x% F% M' l7 E
  53.         memcpy(buf, mac, 6);
    5 T5 l' A+ Y( _- C( j" n
  54.         memcpy(&buf[6], stbid, 18);& C* N4 }( B( {" q+ @
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ Y1 d" W1 x, [: O: o2 e% W( a
  56.         if (fd  < 0) {* H5 W1 H7 W. B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 w  u9 u& s5 ?7 V! s
  58.                 return -1;
    9 d1 ~) [$ {4 l& j0 L9 |
  59.         }( z6 F1 H6 `" h& C6 V& R
  60.         arg.sub_addr_count      = 2;
      S) |- A$ h+ _
  61.         arg.data_count          = 0x18;
    - W3 ^& l8 |3 `4 Z9 ^
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 X' v" `2 ]- W( p; U6 [( m! E
  63.         arg.e2prom_cmd_data     = buf;
    ' I* _& f. o( I
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' j2 \; K0 j' ~3 h; D' ?+ w
  65.         if (ret != 0) {
    # o3 J1 T# e# C( D8 V0 b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * ^1 ^' J4 u7 z& o
  67.                 return -1;$ q, r6 ^' a5 S8 T/ r
  68.         }7 z5 r) J1 @: t& S9 Z4 w# h

  69. % T" ]0 q2 l- z! ]# |% S  h, {
  70.         return 0;% ~! C$ l' \& l. C4 y
  71. }4 [( n& ?: T! T( v: P9 P/ Q" N
  72. 1 m/ b* Y  P& U8 i* y" B! ]" ]
  73. int main()
    : u; {3 x1 [6 G" R' h
  74. {
    0 u1 s8 Q/ f4 c
  75.         char c;
    5 z" }9 D$ z8 y' X
  76.         int i, macs[6];  O$ l4 V0 a/ A5 [) C* u
  77.         unsigned char mac[6];
    $ M9 c+ u" T* x
  78.         unsigned char stbid[256];4 |( ]# Y6 I4 ^9 v: O" a; W( @
  79. ( v- \! K3 n- F& q. m% ?
  80.         if (readparam(mac, stbid) < 0)
    ) Y' y/ _. w3 s* N# O8 q
  81.                 return 1;7 U9 l3 S& A" \- ~5 A5 ]
  82. + Z! p2 ~$ s# H
  83.         printf("Current parameters: \n");
    ; q6 G' \5 E& _5 A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 h' Q: y, Z; b: P" R: |/ B0 c2 O9 G8 E
  85.         printf("  STBID: %s\n", stbid);
    ( r1 v+ `: ?* X  V
  86.         * P3 S# k  Y2 f4 }! m; g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 B. e/ k# S  s- P0 F
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 n4 A' P& w: ?! ]8 I/ U
  89.                 printf("Input MAC error\n");
    ' a1 @9 Q6 `1 q  T
  90.                 return 1;
    . e1 Y5 C) b* M6 K2 g5 v& l
  91.         }
    ' I4 i* q" l- T2 d( t' R8 l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 x: L7 N, [  H2 P- g, s5 c9 V
  93.         printf("\nPlease input new STBID: ");
    6 s# j$ v$ z0 X+ c! b- G3 C
  94.         scanf("%s", stbid);
    2 C6 v+ X) F& E0 K/ \
  95.         if (strlen(stbid) != 18) {
    / [: L* `2 ~: f9 s. t+ B" Q; |6 V
  96.                 printf("Invalid stbid\n");% a) n+ f+ W  |6 [3 M( |
  97.                 return 1;% ^3 w: n, o9 S
  98.         }: z$ {8 |( _6 X, r
  99.         printf("\nNew parameters: \n");! V/ C; l# c5 H: ?- m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; V4 @- x. B  |' I) r: U$ M# v
  101.         printf("  STBID: %s\n", stbid);
    2 `8 b$ w: ?; y/ L' J" k

  102. ; c* l* t9 f( E7 e+ _3 {; ^. ~6 E/ N
  103.         printf("\nDo you want to change paramemters? (y/N) ");1 P2 \+ t! h3 i# }
  104.         for (;;) {' x8 M# Y# u* Q* H5 @
  105.                 c = getchar();
    . C: k8 a# a1 ^* N
  106.                 if (c == 'y' || c == 'Y')) j  E, o. C) @% U4 }  Y# n& q
  107.                         break;- ]  j; |* i. A1 m+ W3 k( F  ~
  108.                 if (c == 'n' || c == 'N') {
    + Q7 x- v( Y% I) v# N  @
  109.                         printf("\nAborted.\n");
    " `2 b; N* z1 ?: Q
  110.                         return 1;
    : ]% D4 Q8 c, f8 S4 Z
  111.                 }4 g' D' f, W2 B( O  {$ |, }3 w" T& {
  112.         }
    0 P; @: S# @$ \3 L. v; ?4 U$ w
  113.         if (writeparam(mac, stbid) == 0) 9 {9 n% S- {/ S/ _$ U
  114.                 printf("Parameters changed.\n");4 t5 Z( p2 G; e! z( ^/ L3 F% @+ t
  115. 8 K  ^9 b7 [4 _1 L
  116.         return 0;# u7 j5 ~1 R; q3 Z" p/ s5 n! t$ o
  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 3 g; N& p% B# @& ^
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% k/ P( r3 j$ L: k9 o7 O' g
你用的编译命令行格式是什么?
; h& w' Q1 y  x( m5 }7 O, C
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-17 15:26 , Processed in 0.029645 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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