查看: 15880|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 q, m; I$ g8 G! T8 A5 y6 a8 c4 C: {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 c# N8 @/ T+ a$ W2 o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! s/ F& }+ J5 B. g# b( T0 z/ C4 Yusage: himr <address> <value>. sample: himr 0x80040000 0x0
+ {# e6 P1 [1 ~3 O, J  q  R. T0 {0 F# u' X$ @0 f/ Y$ O2 X

' Q" B$ r0 e1 d" j不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 n) u( F% x6 U3 J, |0 A5 @3 @- f; f# t( i" W6 x
补充内容 (2012-3-8 09:42):
+ x6 ]7 J/ ?: w- I3 rhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 B1 [$ @5 c& `) }- q- `
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* i2 A, v6 Z6 P) g
! `6 E' i# P2 {9 D6 W9 y$ U* v
himr <address> <value>. sample: himr 0x80040000 0x0  |, _  U# `! B6 i

' v6 v/ b9 n* u) q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. ^$ ]8 s9 I* t* ~2 t: N; f$ C* [
himr 0x80040000 0x005 S9 m. }& ~% b1 ?
himr 0x80040001 0x11
" @! C0 G: n2 Z; l  nhimr 0x80040002 0x22
2 t; s$ V* c) ]7 }* hhimr 0x80040003 0x33
7 E: ]4 v- v; L+ v: p5 ^8 Yhimr 0x80040004 0x44# a( n* H1 Q/ I+ m& A+ j
himr 0x80040005 0x55
5 k$ l4 i, @0 g" d: k- G" n( T0 V* k* e( t# A9 @2 q
SN也是类似。0 }0 ]7 m1 g- {: O3 _% @: l+ U

7 R+ t* f2 B% y- s/ G- A) X% U现在主要是,谁告诉我们MAC和SN的地址?
* Y; t! T  R4 B" O; v# I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 Z8 `, X$ X- N" i一直想找到运程修改MAC和SN的办法,苦于无解啊

6 O/ Z. g: Q7 A7 u4 F5 t源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ G" R# M4 v  _- {: u4 C; p
! o0 E: T2 \1 F5 c% h* N( ?) ?修改的代码早有了。到今天不会编译。
- @: g" \2 {0 P% v$ u- e" O# p需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " V' h5 J+ [& U7 t+ R
  2. #include <malloc.h>
    ) ^4 W" t5 |! d- C
  3. #include <sys/types.h>
    $ O9 ^8 f$ M6 C; {
  4. #include <sys/stat.h>
    ! b' r  R: x6 |$ E3 h
  5. #include <sys/ioctl.h>' H- b  X4 G9 P& y$ w3 Z
  6. #include <stdio.h>3 q# a- {/ A& F
  7. #include <string.h>
    1 O6 A% h5 h  S' x' W

  8. 3 L/ n: S  C  m, M3 l/ W9 x9 Q
  9. typedef struct {: V% e& J# I7 M8 H4 W/ C4 f
  10.         unsigned int        e2prom_cmd_sub_addr;- l. A7 [+ |- d1 T$ c
  11.         unsigned int        sub_addr_count;
    8 y8 |3 V. B8 J$ c! ?" E1 ^. C
  12.         unsigned char*        e2prom_cmd_data;7 t" a9 g# ]! ~( S. U* H4 r4 d; e0 k
  13.         unsigned int        data_count;
    0 K) @  F: k* m5 U' G: L% R
  14. } e2prom_s_cmd;
    6 m1 b" l5 B$ ~

  15. % G1 ?; `' X% j. f
  16. #define E2PROM_CMD_READ 1, s' M  `2 F" G" }3 ^& Z: t/ x4 M
  17. #define E2PROM_CMD_WRITE 2( n# N( C/ `7 D+ M7 o# P2 ^5 q  b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' |! \+ S) F' t  z6 i# I$ M4 e4 M9 n

  19. ' ~! W: T& Y& Y) ?6 G) Z0 Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ a& U- N! |/ z5 h' l
  21. {
    ) L- G# y! d/ T- w' r1 t7 I
  22.         int fd, ret;
    ) @3 ?+ E+ A3 V5 Q2 S* V1 a
  23.         e2prom_s_cmd arg;9 y$ O8 t$ G; c1 l7 `
  24.         unsigned char buf[0x18];- z7 s# [2 w5 Y: O! z) B

  25. * Q8 |- h% z( ?5 O4 D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    % }: Z. _# y9 v9 u; ?/ B6 C
  27.         if (fd  < 0) {
      m. P% L8 k. N3 }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 x% K* w" g  I& F' P' N
  29.                 return -1;
    & \2 H% \0 F+ V9 E8 o9 }
  30.         }* V  V4 }; {, T: s# P( L
  31.         arg.sub_addr_count      = 2;
    7 d8 p0 z* o$ m* b# J# Z' J4 W
  32.         arg.data_count          = 0x18;' |3 _5 O1 b" t$ w% \/ i2 |
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ P/ z" W! `( s% b9 p" ?. R
  34.         arg.e2prom_cmd_data     = buf;
    & V2 I% b9 b. T2 _+ W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 ?# L4 l: C0 ~( s& w  A, T  r
  36.         if (ret != 0) {5 E! R& d" Z, U% o2 w2 G/ E. k
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 j5 @3 U4 i( J+ r7 X' o
  38.                 return -1;
    % D- u1 {2 ]$ n, O5 ^  j* m# t
  39.         }3 U  q5 k" V$ r- K! G. d; G
  40.         memcpy(mac, buf, 6);
    0 R7 X7 L4 |" ?! |4 y# p- z5 F' ~
  41.         memcpy(stbid, &buf[6], 18);) h- F& w/ l/ @* q
  42.         stbid[18] = '\0';
    # j( G! D  S( N2 `7 e8 J. \

  43. ! X$ u& P% U* l2 F/ q0 h6 |, n
  44.         return 0;
    9 Y3 H: j+ b3 c
  45. }
    ( }1 @* f: g$ f1 g: c
  46. ; K' U1 ~" ?8 Z% Z2 l8 y+ x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # C0 N$ V2 `" {/ m) e0 h  b0 C
  48. {1 L6 l2 W+ G" A, w. w! \
  49.         int fd, ret;
    / t* O- L+ `2 ]0 P" p5 m# f
  50.         e2prom_s_cmd arg;  @% @1 }! B" l2 S
  51.         unsigned char buf[0x18];4 H2 H% z4 {2 `4 U5 J: b" u+ e
  52. , J$ ^) Q; L; J
  53.         memcpy(buf, mac, 6);& l1 g( W0 D9 D0 t! e0 d! c; A
  54.         memcpy(&buf[6], stbid, 18);! l* w: W" r8 E: y+ |( x. c+ z5 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ k5 P- z/ r, N( Q1 L. N
  56.         if (fd  < 0) {
    * \! F' u2 Z4 k/ |/ Y9 S$ M' s, f: t$ p
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * T* e' _% u. _; u% f
  58.                 return -1;
    ! K1 q6 Z" b) f
  59.         }6 [0 `0 O: Z2 W* N
  60.         arg.sub_addr_count      = 2;
    : V! Y& D2 E  y7 V( K. _
  61.         arg.data_count          = 0x18;
    0 H9 h% e7 b  K& u5 S, e) K
  62.         arg.e2prom_cmd_sub_addr = 0x290;: B$ y+ L  @7 Z. l7 j( S
  63.         arg.e2prom_cmd_data     = buf;4 w2 Z9 x* w" P- |/ m
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * P, H4 W* Q' t/ N0 R
  65.         if (ret != 0) {% M  m$ Z+ {* M1 Q" Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # Q# \: N4 X5 P! B
  67.                 return -1;) k& {8 n/ ]$ b$ y
  68.         }' e9 ]1 W/ Q0 D  H

  69. 2 X0 i1 I* ^" g" n9 ^0 k& j
  70.         return 0;# D4 Y3 E+ ~+ P  B9 p9 o9 A1 u
  71. }/ Y' o' N* d5 R% Q) x0 j

  72. . y( B, |! _* H( P3 I, h# `; w
  73. int main()8 \' B1 [. @) [
  74. {  s; B' m2 Z7 F$ J
  75.         char c;
    5 {4 s1 H. Y+ E; f6 V) G  F1 d
  76.         int i, macs[6];
    - X) U, t* {/ q+ o. o2 o, T
  77.         unsigned char mac[6];% [5 q/ z" U; S  D. }) ]; q/ R
  78.         unsigned char stbid[256];
    0 \  y0 N% c% W3 l
  79. # I" T- H( q4 e
  80.         if (readparam(mac, stbid) < 0)) g8 ~  K) ?* k- \$ Q
  81.                 return 1;8 n: O; n" B+ F  s8 ~+ m( O  ~9 [1 J! A
  82. 3 U4 ]: ?! q6 a0 s
  83.         printf("Current parameters: \n");, B' x) S9 T/ `" z$ T4 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : Z8 S, K' T1 ?. |
  85.         printf("  STBID: %s\n", stbid);
    ; r9 e5 o  E* V: T& p
  86.         4 Z5 |3 Z1 D9 n0 i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ r; m1 d/ D$ |, h" q% u; w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ q3 A$ K0 J8 G8 q
  89.                 printf("Input MAC error\n");
    ' j+ ?3 u7 i. d& U  ~" D
  90.                 return 1;
    ' ?( W/ {2 @6 E5 m  U
  91.         }
    * ^* L! {$ N( L7 s3 V# p* g0 X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( |' M2 O6 u4 v& ?
  93.         printf("\nPlease input new STBID: ");
    0 S4 h& P( l/ @! V
  94.         scanf("%s", stbid);
    " ]' U+ |6 N- }0 U8 n) [8 L1 {
  95.         if (strlen(stbid) != 18) {$ y+ `+ X1 `) i5 m
  96.                 printf("Invalid stbid\n");# t$ ?9 i2 f4 I0 u6 x: |9 g" o
  97.                 return 1;" _, R& Y6 N5 c( H# K4 ~
  98.         }
    ! `7 ?" [3 t6 C1 n! L4 q  `7 e
  99.         printf("\nNew parameters: \n");
    : X: U# u- ~# R* _) u+ \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; Q# J0 ?$ J+ K! h  c; d
  101.         printf("  STBID: %s\n", stbid);- y' N$ u" C% i4 |

  102. : p* R; a$ |6 i' P8 ^6 @+ ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + \0 H/ ?2 o; ]/ E
  104.         for (;;) {- m  z' N7 m& H
  105.                 c = getchar();
    3 Q/ U: g/ J- H' M( _4 R
  106.                 if (c == 'y' || c == 'Y')
    * O' A# F% I% x+ Q. e" b0 f
  107.                         break;
    + O; K( G7 P' `  |
  108.                 if (c == 'n' || c == 'N') {
    9 ~# E. V# Z) Q+ U
  109.                         printf("\nAborted.\n");
    8 d* M7 l1 u, l# h
  110.                         return 1;8 f0 W2 D5 S/ v8 U
  111.                 }- |. C3 q3 s) w
  112.         }4 e+ M: O/ K& I) S; @0 ~* p
  113.         if (writeparam(mac, stbid) == 0)
    # r/ l1 S0 z0 V1 d
  114.                 printf("Parameters changed.\n");
    % g) B4 d( X7 }* Y; b4 N
  115. + K7 Y; ]8 ]5 i
  116.         return 0;5 Y0 i7 ?4 O/ L/ q
  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
# z" Y. z2 Z: t( R- B1 n0 M在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 C9 k! M$ N, Z. ?  W你用的编译命令行格式是什么?' e9 H7 x( d5 B' G( Q$ Z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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