查看: 16663|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" I7 m6 y8 S; }/ q8 U, F6 t4 g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ S/ n% ^2 X3 B$ w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# ?4 Z0 v, M8 \
usage: himr <address> <value>. sample: himr 0x80040000 0x0
! u4 B2 O) J7 X' Q/ P9 [) m, v* r
( L& q7 V9 g2 H1 i0 g7 h# F5 t# E3 r9 V6 n8 d4 E. S& q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 G2 v3 a5 G( U! i6 e# V4 L
5 r! \# k/ m6 n5 p4 n8 Z
补充内容 (2012-3-8 09:42):+ Q2 U! W# [9 ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' I0 ~! Z, j9 E7 _1 f" K8 |! X
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。" ^4 Y3 [$ C& P- I  g
/ c: T6 l3 O3 P1 x
himr <address> <value>. sample: himr 0x80040000 0x0
) S( t" Y6 g/ _9 [5 [4 f5 g6 b2 {+ b6 R/ |" P
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
8 I9 y+ ]  L4 F# h1 |! l* m% thimr 0x80040000 0x00
% r; U" f) h3 X, O! phimr 0x80040001 0x11% s0 Z- J4 A4 ?% q  w
himr 0x80040002 0x22
. i2 i3 H6 d) @himr 0x80040003 0x33
4 x. |: H0 ]/ R* M8 p) u1 a- ihimr 0x80040004 0x44
- F7 \+ b0 U2 q: c/ I: u9 M3 [himr 0x80040005 0x556 w6 X0 ?% |4 L. E

' {. g* s! w; r7 aSN也是类似。
  D3 U( L2 B8 k) o  u8 k- w7 ~1 @* Y: u7 X$ W9 V8 a: R0 L5 r1 _7 t( m
现在主要是,谁告诉我们MAC和SN的地址?
; U. Q$ O+ V( a$ V2 W2 Q; y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . N# X! \. b& c& a- p# f% q0 J. p
一直想找到运程修改MAC和SN的办法,苦于无解啊

3 S, J' l: E  V2 c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 j$ }# n% K- P  j+ o2 J6 }9 K% A. y0 r2 N, {0 c: |
修改的代码早有了。到今天不会编译。
/ r! U" T& z6 R5 R, m/ m需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; I" V2 v) N" u8 u
  2. #include <malloc.h>
    7 `5 F6 J) P$ j. a2 k
  3. #include <sys/types.h>% d$ m, m& n5 r: a, T, x
  4. #include <sys/stat.h>
    $ I* v+ n, a) W- Q8 ^9 n  u+ O+ Y
  5. #include <sys/ioctl.h>
    ) [3 G: L7 L$ r* q" x
  6. #include <stdio.h>
    5 c" t# N" W# C
  7. #include <string.h>
    % d6 W# n9 G; ]" }7 C: D

  8. & p5 ~: ^* j# P1 `5 t& d$ l5 J1 N
  9. typedef struct {: \  o+ t5 `/ \( m6 F; c3 `4 i% I( a
  10.         unsigned int        e2prom_cmd_sub_addr;/ h7 Q  S9 [& E- P) _0 q
  11.         unsigned int        sub_addr_count;8 J* e, J9 c! v0 e1 E0 c+ B
  12.         unsigned char*        e2prom_cmd_data;; Z4 K9 l# g7 k5 q) T, n) `* x; ^
  13.         unsigned int        data_count;
    1 o: x" v. R: l1 N' _6 D
  14. } e2prom_s_cmd;
    ; b6 k0 X  C! K  f# j9 v7 J4 }$ s* [7 Q

  15. + ]; d3 w$ x0 u) \% E5 |$ N2 K
  16. #define E2PROM_CMD_READ 1
    % G! K) n& u2 [# x4 a
  17. #define E2PROM_CMD_WRITE 2- d: Q' {/ h! l0 ]4 [' G- D! R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 r; a; Y% \* ]3 ?/ {: X: A
  19. . j) ~. D+ G: Z! d% i8 m# f: L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- o" U; ~- d* A4 p+ K0 z9 x: r
  21. {
    5 |$ Q5 G: s( [# H+ @" s
  22.         int fd, ret;
    % m8 x( B9 E) m7 U# E3 C
  23.         e2prom_s_cmd arg;+ Y9 z# b9 z3 M7 b: ?8 t" L2 {
  24.         unsigned char buf[0x18];
    - s, V! V2 v! Y8 n% V8 S% p$ h' J% r

  25. / c8 |, K8 i" A8 H; T, s% ~6 ]( g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " B  t4 P) Z; y
  27.         if (fd  < 0) {2 F2 d( B) Y9 ]! K0 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 u$ b% m" O6 o2 f' Z
  29.                 return -1;4 b' _/ q; t9 _) T# u* q5 q4 p
  30.         }4 O* p0 c9 l/ f( e
  31.         arg.sub_addr_count      = 2;
    : F1 ?$ A$ ]3 q
  32.         arg.data_count          = 0x18;
    , |6 j) Q( {! P$ m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! }4 z( g( W9 S& ^! L/ U
  34.         arg.e2prom_cmd_data     = buf;
    ' ]* p; d0 ~% h3 B: }& F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  Y: g! d7 r  U  V- E$ |; J: s
  36.         if (ret != 0) {3 g5 y9 q9 u% T6 i5 C. o6 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);! b& I1 C7 D. U! x" Y
  38.                 return -1;
    , N, A3 q$ U4 M4 R( H- @8 s
  39.         }
    & A% V7 O; E1 x# P  j9 L
  40.         memcpy(mac, buf, 6);
      d7 ~4 J; p+ y& {# U
  41.         memcpy(stbid, &buf[6], 18);( F7 g2 ]/ V+ i0 W! m& H
  42.         stbid[18] = '\0';
    + k# q" B+ l2 W' p& T9 _
  43. 9 u; f& ^7 [& K) U9 H$ E! [- F
  44.         return 0;$ w; D/ m2 s9 H+ S7 S# |
  45. }; r) U  ?; I5 g, q7 |
  46. 0 [+ Z) Z3 R% `3 x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)3 i. t- [! I/ O& `0 H7 y4 m5 P( r
  48. {
    ! L" i; y/ ?6 u7 P1 R
  49.         int fd, ret;7 w3 c# x. [8 T* n1 g5 K( D8 m
  50.         e2prom_s_cmd arg;
    , g+ ~4 W7 M) N- A8 V: r  |
  51.         unsigned char buf[0x18];
    6 {$ h3 G4 f! H

  52. , U. R' Q5 U8 Q% X* L
  53.         memcpy(buf, mac, 6);, E. _% c# @# I; q* v" ?" N
  54.         memcpy(&buf[6], stbid, 18);
    - {# q3 o) E1 J' v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- h# b$ l# {0 ?' {, S
  56.         if (fd  < 0) {/ P# T& F- @, S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 H- M/ V$ v5 h
  58.                 return -1;' x8 l" i  e+ r; B1 t8 Z; U8 }$ E
  59.         }
    1 n5 G; k: b% n& d
  60.         arg.sub_addr_count      = 2;6 g. Z) z1 h% F  H. q7 ]% H6 ?
  61.         arg.data_count          = 0x18;
    - M3 N( z" N$ Y7 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;+ h9 o0 d1 w# ~/ I8 M$ X5 I
  63.         arg.e2prom_cmd_data     = buf;( Y( a2 N( v2 E( W. Z# ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' t* Z0 u# S! v' p' q* d8 D8 V
  65.         if (ret != 0) {
    0 T! L8 q. L9 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 W  U/ W* @, _2 |
  67.                 return -1;
    " W) @5 _$ B( S  h: O- U) B3 U
  68.         }
    2 r, J. |6 F9 a  v  r
  69. 0 j7 J% N+ W9 b* E* V$ _- o  V
  70.         return 0;
    4 ^( n' a4 f5 a4 a+ h2 q
  71. }
    1 L6 j! K* m# o  u/ c! y9 A) C
  72. " }* b6 h, ?1 q# B5 w9 |- D
  73. int main()2 V5 @' x, w& M6 \4 a( t9 [7 ?
  74. {
    7 Q% e. J9 Q/ D/ U6 v: h
  75.         char c;( y' n4 h7 Z) V
  76.         int i, macs[6];
    4 W9 Y2 {; o- O
  77.         unsigned char mac[6];! J2 a: n+ v% u# C
  78.         unsigned char stbid[256];7 D0 m( f! ?, h, t. w. s
  79. " ~% Z9 I9 V: j+ G* n
  80.         if (readparam(mac, stbid) < 0)
    3 F- ?( a/ u% e) z# d  Y0 g
  81.                 return 1;' A% h0 T" V  c! E8 J

  82. 5 Z5 z% x" n) z9 e
  83.         printf("Current parameters: \n");+ L1 W& h5 H$ E! T1 Z1 R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ k! _5 ]+ O3 L. I/ F" |, g. }
  85.         printf("  STBID: %s\n", stbid);
    ( _/ R# J8 D" b+ J- A  E8 X$ ~1 G
  86.        
    3 |) B- _+ B7 q6 O4 S; f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      p/ p8 \0 H4 |' p2 J* |* m3 t& ]( {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 ?; ]( i' s. _
  89.                 printf("Input MAC error\n");' J, }  C- a/ I$ k" o" W. D+ `. i9 E
  90.                 return 1;+ R9 E$ i$ f2 r+ N6 B
  91.         }2 y" b( V1 W% g$ l7 y0 F/ {5 F
  92.         for (i=0; i<6; i++)mac[i] = macs[i];7 S! }# w/ y' z4 F2 g
  93.         printf("\nPlease input new STBID: ");
    ( o) l$ }6 A6 v8 A
  94.         scanf("%s", stbid);0 R% j* z: }$ F8 w: l0 X5 H3 {7 }6 Y
  95.         if (strlen(stbid) != 18) {' C6 u- ~4 N- D- `/ z* g* J( @& }
  96.                 printf("Invalid stbid\n");5 N' f" c. x' A; J+ O3 W9 M; ?
  97.                 return 1;7 R) g; m5 q$ t, _
  98.         }
    5 l- g' [- ^  ?
  99.         printf("\nNew parameters: \n");$ V/ e, B/ P/ m5 s/ U: c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; i) I+ @, a8 l9 T/ P& L0 F
  101.         printf("  STBID: %s\n", stbid);! {& l, U1 t; s* g( C+ ?2 G1 d: |

  102. . m! y$ N* M7 h5 s# l( g. G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 C  Z# o% `% m' w! ^
  104.         for (;;) {' @* G+ Y8 Y9 R$ X! d' t
  105.                 c = getchar();: E: L; Y, T' o8 E! j/ y
  106.                 if (c == 'y' || c == 'Y')
    ( l* L, Z$ W& g# z$ C6 N& b& D& p* P
  107.                         break;* j) j# i+ a. Z
  108.                 if (c == 'n' || c == 'N') {" W1 ~1 D6 {: F+ H) {
  109.                         printf("\nAborted.\n");
    ! c& H- ?; O3 `2 `3 ^# L' s
  110.                         return 1;+ N$ b$ \+ Q$ Q7 W1 a4 F
  111.                 }5 w& N" e1 `0 M& m* t+ i/ |8 T
  112.         }
    + k5 X5 J/ T; x8 ]+ B+ c: s; q* T
  113.         if (writeparam(mac, stbid) == 0) ) _; q; b7 h& J2 C) m' c$ U5 p
  114.                 printf("Parameters changed.\n");  h0 k. E  s. p6 N5 P1 Q

  115. 0 t( g- R8 K# c+ m3 Y7 w& ^
  116.         return 0;$ F  R! v7 @1 z( ], u! _+ }- s
  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
  E# T! i9 @3 `. j( X% |在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 v& R2 z* u$ ]: ^/ q你用的编译命令行格式是什么?
9 v9 D* K2 C" w( d: R; _9 q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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