查看: 17037|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # R; y! R  n0 p6 k  V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig0 G+ u8 g5 c8 A  Y/ C+ a. d4 _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( k! q+ d0 j- N" d" I3 uusage: himr <address> <value>. sample: himr 0x80040000 0x0
, o  m( J! Q; M9 D: f5 o% n: L4 U  H9 v

/ I8 K4 L' T2 a5 P9 S不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- R. A0 a& [0 A/ E! G2 z
" B9 m$ S$ g3 m( M+ Y$ l- y
补充内容 (2012-3-8 09:42):
. `8 I6 R9 ^/ R, P4 P3 D/ U# A2 ^http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  `+ e# y  M: i( ~- K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。6 ^0 L  i7 P3 @: L# t! K' i! y( {
( c0 M- `2 J& u. _
himr <address> <value>. sample: himr 0x80040000 0x0
' D6 }$ I1 l3 x( Q
, X. ~, p& W% r( U3 D) G例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 D8 n: a' n" }. ^9 s# _
himr 0x80040000 0x00& P; n/ p1 }$ {4 [
himr 0x80040001 0x11
9 O& z# M; ~! g* R2 ]% a$ Thimr 0x80040002 0x22
6 Z9 O9 |7 r. |, y* s: T- E/ j. j/ Bhimr 0x80040003 0x33
& u. f* A& ]. Chimr 0x80040004 0x44; B/ [2 Q- P+ }# j; f/ f0 i
himr 0x80040005 0x55
) `' C( Z, X0 g
- }' s/ \) o" `! l# U' J* J  nSN也是类似。+ s5 v7 F" I1 o' c# h6 a' t
5 v+ ?2 w9 g# Q! W$ K2 _& n
现在主要是,谁告诉我们MAC和SN的地址?
; w. v0 B; r' @: E/ I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # _0 T5 t& }3 n- u' W7 }( T
一直想找到运程修改MAC和SN的办法,苦于无解啊

' W$ u0 G& E+ N) P" ^$ X6 O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & j: v0 v$ o/ Z5 h2 u" F; F

) F! s; t) X6 `修改的代码早有了。到今天不会编译。
6 n: f: t0 C- @1 m) B0 q  _需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; v" D" Z! o3 y  V( k& @4 Y/ K& U- I
  2. #include <malloc.h>8 \" f3 r* ^% A! g; m, X1 C2 l
  3. #include <sys/types.h>
    , J6 \6 k9 A0 I4 u
  4. #include <sys/stat.h>4 X. D5 j2 r( P8 X! u4 q* t  D% o
  5. #include <sys/ioctl.h>2 [8 D7 x- Q9 [- k' E
  6. #include <stdio.h>
    , o7 |9 X! ~1 ~* `8 e
  7. #include <string.h>5 V; w$ Z0 l- K6 B, g" s$ i4 T3 w
  8. 8 X6 a# m) v4 n; g
  9. typedef struct {; q: ^; \) _6 X# r
  10.         unsigned int        e2prom_cmd_sub_addr;
    # U4 n& M; |$ J- t0 E& s
  11.         unsigned int        sub_addr_count;
    ' o4 `( D3 ^- l' N1 z
  12.         unsigned char*        e2prom_cmd_data;7 D( c+ x, t" a4 D5 u5 l3 h
  13.         unsigned int        data_count;
    - {3 {, ~3 e4 k; W
  14. } e2prom_s_cmd;
    7 A1 ^1 i5 M+ p1 V# S

  15. 7 j" R2 T! m8 J1 |0 @. `7 H7 f1 R
  16. #define E2PROM_CMD_READ 1
    2 y: J+ M$ z: P2 S
  17. #define E2PROM_CMD_WRITE 2
    4 l& P$ }* S* M, F/ o) t( m0 ]
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . S, V+ J0 z) j! u
  19. 0 J. d# A: v7 T: F5 P. G2 v/ {. r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 \$ |& u' _7 v. t2 S1 W; z
  21. {/ u" M9 B- J! k7 ~: R. ]
  22.         int fd, ret;  F, o/ e( B5 P/ }1 v
  23.         e2prom_s_cmd arg;
    7 @4 @! H- C: ^4 D% S" d6 b
  24.         unsigned char buf[0x18];
    $ P( z. v) d7 Q/ \5 p1 h
  25. 3 F2 Z9 h* u, \  _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 b8 K% z& `: J/ r( h
  27.         if (fd  < 0) {  r. r0 d, u7 t" y& N7 P0 L
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 a/ }1 U! x6 c# n  D" n
  29.                 return -1;, p/ w( J2 g( q, _4 q1 X0 T
  30.         }
    8 @9 Y- d" |0 ]9 `) ]1 ]5 u
  31.         arg.sub_addr_count      = 2;
    0 e* `/ G0 `: b4 s8 O# z
  32.         arg.data_count          = 0x18;- e' D# @. d: x& R
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 v& d, M3 V9 a1 M- p0 y. V8 f
  34.         arg.e2prom_cmd_data     = buf;
    6 L  u9 \) O5 d: g% g  j" @) ]! ?
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! ~: `- M2 _: O. S: v8 e
  36.         if (ret != 0) {+ J4 }" J% i2 l6 h+ E: @
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , _8 ~3 }, o% U0 L
  38.                 return -1;
    ' w8 m0 d" N5 U5 G' c- v: O) X. \
  39.         }
    8 G  H7 f2 J* q/ h; p! c
  40.         memcpy(mac, buf, 6);; H- h1 [# J) [5 m+ W% F% Z
  41.         memcpy(stbid, &buf[6], 18);; ^* Q4 R; v- @! V6 W7 H; G) |
  42.         stbid[18] = '\0';" w: X5 I$ L! q

  43. 1 d8 J1 C: l# x7 i
  44.         return 0;3 y/ U. r( }8 w+ s3 t9 h
  45. }
    : b3 m/ y0 `) e' }+ ~) A
  46. - ~# ~$ f7 z) s" y8 a* g) B: W9 l
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) @. K9 S  Z( K3 G9 ^! J7 p
  48. {
    & O6 ~1 `2 `% G+ g/ H( F
  49.         int fd, ret;( s3 ?$ u( \$ {) U8 n; [
  50.         e2prom_s_cmd arg;
    ; d% r" ]& l' q2 u+ h8 w" l
  51.         unsigned char buf[0x18];, X' P- k5 n4 p$ R8 i. w) v
  52.   K3 H, i2 ?% p4 ?
  53.         memcpy(buf, mac, 6);! V+ P8 S$ G; z( w/ [
  54.         memcpy(&buf[6], stbid, 18);
    " `1 u' ^! h# R; ]. v! m
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      s7 n2 O1 i9 {% Q& K* P6 z
  56.         if (fd  < 0) {
    5 J% q5 t4 I. s' l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- z2 B% R; y9 _5 K- r9 p
  58.                 return -1;
    " \) q( p4 ]/ ]8 |& g! g) D
  59.         }1 C6 N) w$ ~" m/ V
  60.         arg.sub_addr_count      = 2;
    & k$ d# e5 b# o; m' [- ~5 j$ E; o* o. q
  61.         arg.data_count          = 0x18;9 B8 n) m) f: Z. x: o. W3 X1 \4 m) M1 P
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 x; t( O7 R6 I' ?6 i/ U3 `
  63.         arg.e2prom_cmd_data     = buf;& o3 X! o$ d6 R- i2 z. ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " M' ]7 E0 D4 E( I, r+ s: h& F
  65.         if (ret != 0) {! a  l0 G9 v" g! ^( O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);3 G5 C: }# G/ k$ N
  67.                 return -1;
    4 S! @4 z; E( e& N! O1 W
  68.         }: \: X  w0 w  s2 \5 s6 x
  69. / e& ]) l, n% k/ ?! z; e3 {
  70.         return 0;/ c2 c( ^! k; }  k6 V
  71. }6 J' Q6 n1 _- E3 B" @9 v
  72. , |9 l9 V1 |3 a/ Z
  73. int main(), [; u1 ]  V3 F
  74. {* Y( {" w- ~- }7 C4 \
  75.         char c;
    3 R0 x9 m4 y* r; S3 |
  76.         int i, macs[6];
    ! x5 S4 B5 w, z# b5 J- y( R
  77.         unsigned char mac[6];
    0 Y$ G& K7 i5 O9 Y0 L& ?
  78.         unsigned char stbid[256];
    ) \) y( x6 h8 L# x! x7 d

  79. ' o" V. T7 E( u5 U9 k
  80.         if (readparam(mac, stbid) < 0)! s7 h) V  F& a9 T
  81.                 return 1;
    : p$ V! K# l- m5 |9 ]: Z6 c
  82. 5 B0 d( ?+ i+ Y0 K, {5 x
  83.         printf("Current parameters: \n");( b9 p  Z* N7 s9 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' Z$ ]2 n0 v  @7 @% k9 g
  85.         printf("  STBID: %s\n", stbid);
    9 K: P( e$ k) g% ?: b
  86.        
    * L3 T8 W& S& |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      ]. i9 R: M. e$ U, L( B7 y$ s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- @  ^) g0 g# i
  89.                 printf("Input MAC error\n");' P& J5 ]7 j7 w! G  K) D
  90.                 return 1;  N7 W6 S: E1 g4 @! ?5 X  Y
  91.         }5 p3 i, L2 V  M+ [0 _$ d) Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# y! t9 }9 d8 Z% J1 J3 y# H
  93.         printf("\nPlease input new STBID: ");1 ~6 q0 l8 w9 X5 P0 s" r) @
  94.         scanf("%s", stbid);/ }- q+ C; e) C; Y" l# T2 K
  95.         if (strlen(stbid) != 18) {, u2 \" k" z" N& O0 \5 E
  96.                 printf("Invalid stbid\n");
    1 v  l5 V- P' s! L8 Q
  97.                 return 1;/ M* ~% R/ U. m1 J! u4 n
  98.         }9 m( ~6 m: R4 h, @4 u# c9 Q# g
  99.         printf("\nNew parameters: \n");3 @/ @& j; B/ t- Z; C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % a$ y- B8 ^+ U1 K9 v! r! c
  101.         printf("  STBID: %s\n", stbid);) E8 p  B8 N  F1 n6 o$ j- a
  102. ' z5 x. d8 g2 U7 m/ {# `
  103.         printf("\nDo you want to change paramemters? (y/N) ");' G# `. M1 D- b* h: z
  104.         for (;;) {$ i" M& O' r9 Q$ i
  105.                 c = getchar();
    . U9 [' x( H. ~2 n+ u: J
  106.                 if (c == 'y' || c == 'Y'), J% r: O% y' \1 S" Z& o
  107.                         break;
    9 A& p7 t: o: \, f( I
  108.                 if (c == 'n' || c == 'N') {$ S5 i& h( H7 A, B' v1 R
  109.                         printf("\nAborted.\n");
    # R( y$ B3 t; V& O( d
  110.                         return 1;0 Y8 n& z9 n' {+ H/ Y- e
  111.                 }
    2 a) o( s1 J% r" z- [: y! i: M9 ?
  112.         }
    ' \6 B+ r# ?) j% H. X" \, V
  113.         if (writeparam(mac, stbid) == 0)
    ! ^6 {, k: \$ d& U- c+ M+ T
  114.                 printf("Parameters changed.\n");: x4 h" P% |9 P  a% i+ N) {6 {( K. a

  115. 9 T& E) i* o- V* d3 p* j
  116.         return 0;$ K% v8 @2 x5 c
  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
' R2 h# O8 F1 `) h0 y0 {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 ]9 j. G6 G; h* V) v1 `4 p
你用的编译命令行格式是什么?7 Y  G0 l, T( R. Q: w, }
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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