查看: 16556|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 R! e  Y) r) ?* G2 d+ G- b& S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % P/ T: G, J( G1 L( _- j3 R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 C" S9 a6 h+ b7 F4 c
usage: himr <address> <value>. sample: himr 0x80040000 0x03 F5 l& i4 I- Z  a& u

9 ^" ]( m  ?' M! @* _' _% ?, f/ [' p& ^3 w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: }% u& t9 W) c) q/ ~
, @+ y8 g- F8 A% ~0 `
补充内容 (2012-3-8 09:42):
* f) a# b/ a- o* ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  J# E" E' i* ^+ l/ ^# e这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 i( f; u% s- @0 k0 q

8 J0 ?( ?* s6 u3 ~/ G5 Q: ~7 @himr <address> <value>. sample: himr 0x80040000 0x0( M0 L7 `# R5 P& e$ o% F

! G9 j5 b) T2 {' B例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。9 U* o' k2 Y1 k' ~6 I
himr 0x80040000 0x00/ O) @# x- N" [6 i# t0 v% P
himr 0x80040001 0x11
) F% Q* r% D! X9 S! t/ b+ D. phimr 0x80040002 0x22% \4 {) h. z4 A4 z6 z* y& t2 r( A
himr 0x80040003 0x33
. V# ?5 ~/ E% z6 ]6 {2 _9 fhimr 0x80040004 0x44/ O( g( o. {( K: X8 k
himr 0x80040005 0x55& p3 ], c6 h5 _( x8 M0 Z& Y" O
5 r8 p3 g! w$ y2 `  ~7 R+ I4 k
SN也是类似。$ C+ y, U( H) L* D# e) w  z8 ]9 R

% n1 d/ t( e6 _# ~  M2 F现在主要是,谁告诉我们MAC和SN的地址?6 U: z2 H/ h+ w! X0 q# \- |
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . b+ X8 \4 s. q2 }
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ w: I, e( G) C' i" k6 o# `源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; B6 I3 B0 t$ d7 ^# t- _! @* \
) ]0 A3 S# {2 T. [% c/ L
修改的代码早有了。到今天不会编译。3 h2 {9 Z3 L* m0 J- s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + j4 \: I4 O6 b2 I$ q5 J1 m& d
  2. #include <malloc.h>
    2 p) f6 x7 W6 e  {
  3. #include <sys/types.h>/ T4 F2 l0 c* t/ e! J' A
  4. #include <sys/stat.h>
    ( Y- O2 |; m0 n* A7 W
  5. #include <sys/ioctl.h>
    / O" n. q5 q" c' z5 {1 d7 o7 o
  6. #include <stdio.h>0 E5 p0 J; R/ n0 }$ |+ G) g
  7. #include <string.h>
    " ?9 F+ a7 O$ D' V1 [) |8 C

  8. & e" y# D/ D( \% `
  9. typedef struct {9 ^  J/ v4 f( A% u' X. C3 l" |6 J
  10.         unsigned int        e2prom_cmd_sub_addr;
    $ N9 p0 E0 S  J! t$ ]) n5 G1 Q
  11.         unsigned int        sub_addr_count;5 W+ K2 s. o2 P" J4 E( x# U
  12.         unsigned char*        e2prom_cmd_data;% Z4 ?3 ?8 P. ^7 p4 A
  13.         unsigned int        data_count;
    4 V( h7 n" u8 p" l6 n. S3 r' r" f! S
  14. } e2prom_s_cmd;
    3 M) `+ Z9 {5 `+ S5 E. j4 m
  15. ! N5 D* C2 X- A0 i' i0 e; ?
  16. #define E2PROM_CMD_READ 13 v8 l6 n+ ~8 l3 @7 J/ `. m
  17. #define E2PROM_CMD_WRITE 24 |, J( ?+ |( ]2 ]. i0 G
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": I) i8 A7 W: v. o8 ^' @# s7 a

  19. ; r: @1 F' t. o0 X& A, t
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # S8 J3 ~' e. D  F2 m  d: x
  21. {- \* d( H3 ]2 |( L9 A
  22.         int fd, ret;
    ' u% Z- {- {* _5 A5 a! I
  23.         e2prom_s_cmd arg;
    . J/ r/ {; Y: C9 W
  24.         unsigned char buf[0x18];
    2 D! G$ d$ I4 j- r" Y

  25. % T  A$ e) |) V$ i/ u6 D( {. B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 i/ A3 M7 o& E7 s4 k
  27.         if (fd  < 0) {
    & x9 _# `! R; i. x+ G3 N
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ h2 W: r, T( w  M4 E: G6 ?' b
  29.                 return -1;  I# o" ?: `) p0 D. h5 v9 |
  30.         }/ j0 z& u7 J5 m( G4 G9 N* N1 q9 N
  31.         arg.sub_addr_count      = 2;( d) p$ S& ~  Q* S
  32.         arg.data_count          = 0x18;, h0 d& `9 }$ j. [! @
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 x3 f3 I1 `" f
  34.         arg.e2prom_cmd_data     = buf;- V! m7 u* i; o/ ^- |0 z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' N& K; H) a- g! r$ }5 F/ f, D
  36.         if (ret != 0) {( L5 q1 {9 v8 ~4 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; V( L& y( N8 a) {  [+ w
  38.                 return -1;
    2 x) i; ]1 P8 m- P! K2 y
  39.         }, R) E! {" P0 I# H2 ^/ ~5 S
  40.         memcpy(mac, buf, 6);
    # G0 ~+ e  w- Z) Q1 U& a. {
  41.         memcpy(stbid, &buf[6], 18);
    + B( x$ c0 ~( a
  42.         stbid[18] = '\0';8 _* k+ ]3 f6 d2 h
  43. 6 W5 ~4 P& x: j7 B2 e% R
  44.         return 0;: ^8 B( d) Z9 O1 a4 b( X
  45. }, Z2 m: u* o4 d; }

  46. % h" g0 Z; d6 D! \: h
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " Z7 c+ g& K; R: i
  48. {% K/ T$ U! K. Z! T6 q
  49.         int fd, ret;
    1 O0 k: c& J9 c& w5 }7 D' o
  50.         e2prom_s_cmd arg;" I% k1 B. z3 q7 B
  51.         unsigned char buf[0x18];
    2 O' t( ~8 A# n1 F
  52. 8 b. |3 S. E- @: t  g: P
  53.         memcpy(buf, mac, 6);. e9 @9 n" F1 \
  54.         memcpy(&buf[6], stbid, 18);
    , Y) P, {& {$ z, b1 v( N
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : r' n0 p3 l7 K1 v; T* F
  56.         if (fd  < 0) {) x: W' p, }2 z& J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' W0 M0 E2 d& r
  58.                 return -1;
    0 n( ^  p6 l) B. {
  59.         }
    ' ~% W  g; ~, _5 d$ H
  60.         arg.sub_addr_count      = 2;+ \7 g5 ~0 \& U) w+ V; @7 e( s
  61.         arg.data_count          = 0x18;3 M  B3 h" G/ t* o. K% ^  i1 e* m: C
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 x% @7 M" v+ j: J9 e
  63.         arg.e2prom_cmd_data     = buf;
    % }9 ~" e$ G0 l- ]9 U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, p3 s+ x; U( c
  65.         if (ret != 0) {
    - `3 ~$ o. o4 G! B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    1 g5 p! R9 k+ x. {0 ^; O3 l
  67.                 return -1;7 n  O  q: h$ s1 m% \7 O
  68.         }4 {2 E# E5 G; b% m" E! k5 Y

  69. . V8 \$ \" R4 W
  70.         return 0;" E, z- I  {$ @, a4 G! ]% U; Y$ N
  71. }
    - x* H8 c' x0 f& [! s" |

  72. 5 J3 }( V9 P/ Z
  73. int main(); t: V4 D0 f  |0 ~: _
  74. {
    : T1 |; l( [# a3 D3 l1 U; Z1 u
  75.         char c;
    6 ]4 r9 b* ^$ w( N2 K6 B1 X
  76.         int i, macs[6];
    , _, Y+ C/ r4 k6 _, k6 Q& t
  77.         unsigned char mac[6];# q0 R) ?5 T* M
  78.         unsigned char stbid[256];
    # N# Z3 ~. c% \. ?8 g

  79. 1 b) L+ L0 n+ S, m2 ^; u7 B
  80.         if (readparam(mac, stbid) < 0)
    " c& b1 B4 t( Z" U- ^
  81.                 return 1;
    9 t9 y/ x/ s" I, a' q4 ~9 Y

  82. 0 @5 ^- o# ]8 e5 v2 _- M
  83.         printf("Current parameters: \n");
    # F1 v4 L4 p  x# p! L2 s% c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 D, M/ i3 T; {, I9 ~
  85.         printf("  STBID: %s\n", stbid);
    4 L- c8 ?+ V, g; a" F
  86.        
    7 q6 n8 n7 b% O. f( f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) Y9 }0 h! D" W0 G1 a4 _, |- @$ P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {/ t' Y5 e: Q% K
  89.                 printf("Input MAC error\n");, M9 f7 s4 h2 g  o2 e8 ~% X
  90.                 return 1;
    * ~3 A. N7 ^% P, Q4 @2 |
  91.         }
    % _% x9 }9 c( v! D1 O$ b& H, K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 Q! v) f! `* ]# @1 K8 ]4 C3 ~
  93.         printf("\nPlease input new STBID: ");$ |; V: d: T: i, o  |. B
  94.         scanf("%s", stbid);8 X5 i7 N* t: L/ t- {7 `
  95.         if (strlen(stbid) != 18) {2 ]( D" y; m. M8 X
  96.                 printf("Invalid stbid\n");
    2 q! @  p# e+ Q5 X; O! x
  97.                 return 1;2 F: j+ E' u% f$ J9 I% T$ i
  98.         }
    ! ^2 }0 r, P( y: q" u) z
  99.         printf("\nNew parameters: \n");/ T- Q% S  ^3 F9 V0 e5 J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 V  Z7 i/ ^* \) ]8 p+ m
  101.         printf("  STBID: %s\n", stbid);
    6 `/ `' J) I+ |' a
  102. ( a7 p& k& Y+ i# b
  103.         printf("\nDo you want to change paramemters? (y/N) ");% V0 M2 T! R( |+ N- @
  104.         for (;;) {# z! X! a+ o% E1 z
  105.                 c = getchar();% [" i/ I/ P; {" c) E
  106.                 if (c == 'y' || c == 'Y')
    # e$ |) k) g; v9 n, s; D
  107.                         break;" [* N% {4 Y/ P: U5 [$ a
  108.                 if (c == 'n' || c == 'N') {
    4 i# u( a# g# m$ R9 ^2 s$ q, ]
  109.                         printf("\nAborted.\n");4 T4 |' d% @) {3 N( Q, I
  110.                         return 1;
    , ?( u5 s( Z3 C8 O$ R* Y! {
  111.                 }0 x. J7 T5 O: ]' {6 _+ {9 {
  112.         }
    $ Q  q9 F) N( @9 V/ r  l
  113.         if (writeparam(mac, stbid) == 0)
    % O8 U3 k% q" V0 W
  114.                 printf("Parameters changed.\n");8 [1 q/ N5 L+ K0 `* M' d$ [

  115. 2 }" N9 `5 s6 F+ v2 I" v5 a
  116.         return 0;
    ) U6 P0 }; E. P4 q0 N- ^
  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 ! c6 f& _) X+ a
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 y+ X0 k- F& h% k; o$ a6 Y你用的编译命令行格式是什么?% _+ v  K) s3 N2 ^, U) S3 t) e) X
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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