查看: 16625|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ |9 L7 V; ~/ R3 Z+ `$ u( P8 [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - z0 I- c  j& A; y6 M' ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 v" f, F. j% p# j, @2 `usage: himr <address> <value>. sample: himr 0x80040000 0x0
/ W; U/ J; U) w3 f1 |6 b
1 p6 g6 }1 M& e$ D! m6 d9 U1 T, P( O
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( g3 h5 j+ ]( @/ N
: L8 p3 J4 f- R2 R补充内容 (2012-3-8 09:42):
6 Y0 x! W9 P& \7 O2 ^! L$ Fhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. w! O3 v+ p7 d0 f+ g
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。; M" t  A" u& _2 V% b, {. d+ q

; x5 {; ~. f( [! Whimr <address> <value>. sample: himr 0x80040000 0x0
5 w4 b- N) g0 n+ N1 W8 f7 C  n& c# q- h4 h  {/ U( H; T( h* X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
" q: U# b) Z- M/ d, \( g$ whimr 0x80040000 0x00# K$ X! q( a& e' C# m, P2 N, c: c( }- U
himr 0x80040001 0x11
& w9 {+ s& a2 ]9 o& Zhimr 0x80040002 0x22
/ G" i' _; ?  U- w, B" j+ {himr 0x80040003 0x33% l: ~: U3 X. o% M6 T% L& e
himr 0x80040004 0x44
) [, C, F$ M0 [himr 0x80040005 0x558 F. M  Z+ ]9 r8 ]; Q

2 j$ Y" [" w' o8 iSN也是类似。, \3 d/ w5 ~/ V+ l" {

9 _+ |/ g* f8 l( ^4 F8 l现在主要是,谁告诉我们MAC和SN的地址?
! V$ ~' x8 U) y: h8 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
7 G7 T2 U, x5 X, b0 h* P1 {一直想找到运程修改MAC和SN的办法,苦于无解啊
. ^* E& S/ r/ l, u3 Y' O$ r
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 K& S( B9 L+ s" `# q* b. `; q7 u" [8 N
修改的代码早有了。到今天不会编译。, ]! P& B) S* y' r. ~1 y: _" y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( x, K9 F' ~& L) i8 i! }
  2. #include <malloc.h>( ]4 H5 x! P+ W+ C0 `
  3. #include <sys/types.h>
    . `7 o" N' X9 T. }
  4. #include <sys/stat.h>
    , n8 m( I! r; v2 |0 ?" Y. U
  5. #include <sys/ioctl.h>9 t3 T. m# H) I$ B: B
  6. #include <stdio.h>
    ( L# O1 a+ R  f- N" z6 J
  7. #include <string.h>
    ! Z+ h, V7 f+ O2 K  a$ R" A3 c0 t
  8. 6 ]  U9 g/ v5 m. P: V0 w
  9. typedef struct {
    8 g/ k$ X2 T+ d# n  k6 A
  10.         unsigned int        e2prom_cmd_sub_addr;
    % t" z5 k, m* V" W" z  m
  11.         unsigned int        sub_addr_count;& E$ K2 E& @( C2 r% d6 r9 U  T
  12.         unsigned char*        e2prom_cmd_data;
    6 q, t" d+ Z) A8 L( F
  13.         unsigned int        data_count;
    5 n4 L# }8 W; @" z/ X, ^8 B
  14. } e2prom_s_cmd;
    # H* g& f5 G9 U6 [3 }
  15. ' Y# s) m4 a# D& M+ v( x* c
  16. #define E2PROM_CMD_READ 1
    # U2 z9 g7 [) o- G. Q
  17. #define E2PROM_CMD_WRITE 2. Z4 F# x/ ~9 p6 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % Q* `. U1 o  h8 D! O, _$ |
  19. % ^) p$ C- C2 x" R0 Y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 _- U% b, T" K4 u1 W. x
  21. {
    % v, J1 _/ @' y% C
  22.         int fd, ret;1 w2 }8 C, B7 G; ?+ }
  23.         e2prom_s_cmd arg;
    ' L- j; l5 s4 O4 e7 b& X. {, r4 @4 ]! {8 ~
  24.         unsigned char buf[0x18];
    * N7 y+ v; |* B( c/ ^2 D7 O
  25. & G& i* }% N; h1 @
  26.         fd = open(E2PROM_DEVICE, O_RDWR);3 P5 _$ W6 p0 \3 e, L
  27.         if (fd  < 0) {7 z( O9 U5 \. F6 M- i5 I
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . T* b2 v% p$ v# c: r  |
  29.                 return -1;% ~' V, F$ h. D3 U% b, }
  30.         }' o- A0 Z6 O/ C/ }8 g
  31.         arg.sub_addr_count      = 2;7 k' U$ u9 K5 T; T8 {( K  `
  32.         arg.data_count          = 0x18;
    0 @  _$ b2 T3 c% s0 b$ D8 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;# j) w# Y/ R/ w0 [5 I
  34.         arg.e2prom_cmd_data     = buf;8 F9 ?% c' C$ I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! r3 O; f  H  P3 z5 E
  36.         if (ret != 0) {
    ' {" F" `( f0 z& d7 @1 X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / T6 A# ~8 ~$ m" `
  38.                 return -1;
    - d/ Q* c8 d# [" B5 y( R
  39.         }
    , V: J  z0 \2 Q* p4 i5 Y% D6 I
  40.         memcpy(mac, buf, 6);
    % v# a) `- W6 w6 Z  @( y8 ]+ G. X
  41.         memcpy(stbid, &buf[6], 18);( m1 h2 `2 j; _: Q' _0 A
  42.         stbid[18] = '\0';
    6 S$ w1 n. ]9 m1 t
  43. . d, O5 ^- t8 i+ f/ N9 ?
  44.         return 0;
    5 f3 t9 ?. k0 l, C
  45. }+ `1 R2 K( Q+ H, U9 e  w

  46. : }* O5 J: c9 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 a  v' C+ G2 E9 t
  48. {
    ' c9 S! t" b- ]# L! h9 o- F
  49.         int fd, ret;
    8 k% F& R; {1 B# a% |6 p- B
  50.         e2prom_s_cmd arg;) w3 p3 c; U3 S& p( N* r
  51.         unsigned char buf[0x18];6 K8 l' R( R+ y# _0 T: E& j8 O

  52. & S$ j9 U# L) J* D2 W! k6 z
  53.         memcpy(buf, mac, 6);
    . t- @$ E5 i) s
  54.         memcpy(&buf[6], stbid, 18);5 v0 b) k, l. Y3 d: F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 M  ?, D( o6 \
  56.         if (fd  < 0) {" G1 b7 p. A5 B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);; T3 J7 @7 e( e3 Z' b0 y1 k
  58.                 return -1;7 i6 w$ z% v" _
  59.         }7 x! B( w; K+ e3 [
  60.         arg.sub_addr_count      = 2;
    3 L* C+ y' P6 n- q4 R
  61.         arg.data_count          = 0x18;0 S  S- `1 w( [+ ]/ \9 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 d1 ^3 T6 H6 b# q2 o' ]
  63.         arg.e2prom_cmd_data     = buf;
    / Z, p2 R- l9 @. B
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! R! U0 h3 s; H; p; @
  65.         if (ret != 0) {! j3 F1 w& A  \" }' c. N( c+ I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( j$ C( F; [8 {  [
  67.                 return -1;
    0 D- g: z# V9 o, ?" H& p
  68.         }
    7 H3 ~5 y) t$ o4 n9 y4 Y' y* ~
  69. / y" ?0 R( u/ F9 V1 j
  70.         return 0;' x/ }' p& `( d4 C1 P" ]
  71. }
    / |* E& S% p; _1 D& I$ G  p6 w
  72. / g' Z: w0 S% j7 n9 U
  73. int main()
    ) }/ y9 [- ?- G
  74. {. t" W+ _, s7 d& a- h* I
  75.         char c;
    ) \3 }; |6 s( M  |
  76.         int i, macs[6];, ]: ~1 |+ S/ P: f
  77.         unsigned char mac[6];
    ; ~5 L! e5 T4 X: b6 d( j& N' z( X
  78.         unsigned char stbid[256];1 j' D, Z: _, m2 t3 K
  79. ( A( i! q: K4 g, d
  80.         if (readparam(mac, stbid) < 0)8 M% v2 ]) i( z0 A4 q% T9 W) M
  81.                 return 1;% `. U9 r3 |- l/ w& W) D0 Z
  82. ! N$ P* t8 N4 k$ u: u; p0 o
  83.         printf("Current parameters: \n");
    8 _- A3 B2 U" y( e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , {1 {' ~+ F4 E& C7 @, n* H
  85.         printf("  STBID: %s\n", stbid);
      y) A) m2 c" p2 V7 X/ V  D% v
  86.         $ u( |2 v, P7 k" X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, {( F/ C7 L* Q, \8 [. |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 ?% ~" n3 d$ @, l0 A5 c
  89.                 printf("Input MAC error\n");. |7 r4 i0 O! q- s$ d% ]. f. A
  90.                 return 1;7 P+ _) W- X' z! B/ J
  91.         }4 p; H1 U8 l% K$ P8 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    8 R) M* w: i4 Y
  93.         printf("\nPlease input new STBID: ");
    , p: Q* }9 S6 f
  94.         scanf("%s", stbid);
    - n+ `/ e3 a$ z5 w
  95.         if (strlen(stbid) != 18) {
    " H$ V: C7 U. y( @
  96.                 printf("Invalid stbid\n");8 i: p. f- x- v
  97.                 return 1;
      t. G- L5 z* T- t% Z# b) b. F  Z
  98.         }
    7 @) ]& d( s, A1 \  U
  99.         printf("\nNew parameters: \n");
    : a9 ]; S% G1 l$ P) y- T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 L1 E0 u' B* E% n. x% C3 d3 G
  101.         printf("  STBID: %s\n", stbid);
    2 @. u" A- G5 j/ A

  102. * H3 C. v- D8 O2 z* \$ W4 R
  103.         printf("\nDo you want to change paramemters? (y/N) ");# }/ x$ j# w1 O/ L6 \
  104.         for (;;) {
    . S0 G; r6 j7 L  o2 |: w2 Z
  105.                 c = getchar();+ p5 K# u4 g3 M5 `( C3 @% K& {
  106.                 if (c == 'y' || c == 'Y')8 E' C% X- p- P
  107.                         break;
    2 b0 f& t6 e: |
  108.                 if (c == 'n' || c == 'N') {
    2 h! W8 \2 K4 M! ^
  109.                         printf("\nAborted.\n");
    : v) T% [5 l5 C' b
  110.                         return 1;
    0 n- J. P% P/ D2 y$ o- p5 J
  111.                 }
    ; u3 K2 \: K& I' h" T
  112.         }
    + k  W" |" \) n; F0 b
  113.         if (writeparam(mac, stbid) == 0) 6 N5 O; Y9 }* n" N& v
  114.                 printf("Parameters changed.\n");0 q& Q0 z# D: k+ _! {% ~
  115. ; f% k# U7 g$ J0 [
  116.         return 0;
    # k: l/ y0 z7 l( f
  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
* J: z% h- z$ o在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 \0 t6 _- g/ Y0 u你用的编译命令行格式是什么?  Z% d' [8 T; R% A6 T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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