查看: 15957|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr! C9 b$ t$ `2 h* G5 s& T) C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # m  X3 u& C8 I1 k, k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 E6 w: ^! M- S  R! L4 t, Z) pusage: himr <address> <value>. sample: himr 0x80040000 0x0% W* u; y8 d0 r

7 ^. f! P6 X- a& T9 S! s  }
# L# ?" [. `* u  _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
, ^0 Z2 e8 t% |. |1 L! ~) ^! a6 l& a; }! V! X$ C4 @
补充内容 (2012-3-8 09:42):
' d2 ]" O0 N  a8 _# ]) b# g3 T' Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& t7 O+ U: t" E$ {! K9 J这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。% }% w7 l2 d0 _3 K: m6 Q: Z8 ~- n

6 W3 s( k' v+ d" I- P! Fhimr <address> <value>. sample: himr 0x80040000 0x0
; w% ?& v* M! G7 G6 \" I8 O
& A  `( T; Q# H2 W* D例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ e+ T& w" R" ?# A' x
himr 0x80040000 0x00
% {' l5 ]' x- g, ~0 _' bhimr 0x80040001 0x11
- Z" C; ]( b6 `; ?, vhimr 0x80040002 0x22- _8 _' Q/ Z7 e. t1 t0 {
himr 0x80040003 0x33
. A7 Y4 w, ~: b% T4 S: Q' E6 T  vhimr 0x80040004 0x44
- r. s$ k7 c& w  Dhimr 0x80040005 0x55
$ k5 _/ T( Q. D! B) _4 l8 P
7 h' L; M7 e; N% @SN也是类似。  i$ l$ u/ M; a1 @0 k

" E9 Y' E' Z$ r1 G1 k& k现在主要是,谁告诉我们MAC和SN的地址?: j8 v  h0 [$ G- w9 ?6 ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 h, ?* ]4 _* N9 U8 U一直想找到运程修改MAC和SN的办法,苦于无解啊
: m3 @( L8 B/ P. ?
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . t' p, {5 n3 e% ^* W" j1 f
1 ^8 K% r9 {$ ?* g+ c1 P" @
修改的代码早有了。到今天不会编译。
- z, k0 Y# `! Y7 {( g需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % M+ F% R: ^7 \: |' m8 u3 U
  2. #include <malloc.h>1 H4 S) O' n; [/ _7 {- ]- p# n
  3. #include <sys/types.h>3 ^7 n$ @1 s" B6 U
  4. #include <sys/stat.h>5 a- Z- E4 Y4 o) ?
  5. #include <sys/ioctl.h>
    7 H; I- u5 @$ {. ~+ n$ t
  6. #include <stdio.h>' O. Y, r$ Y- n, C. q" _$ N+ x, H
  7. #include <string.h>* V( s2 u' ^& o" L0 o+ _

  8. ; o7 n0 z8 S+ |3 O8 N
  9. typedef struct {
    ) I2 S2 B. v* M% o/ V) Y( N9 M1 q
  10.         unsigned int        e2prom_cmd_sub_addr;% H  h2 g7 z3 U1 F
  11.         unsigned int        sub_addr_count;
    4 G) x) p5 _2 a2 W# y
  12.         unsigned char*        e2prom_cmd_data;  l4 F! M+ T% T6 j) A# M
  13.         unsigned int        data_count;3 B+ k4 ^( {8 f# d+ s
  14. } e2prom_s_cmd;0 d, V: V0 ~) v1 T$ I
  15. 5 d, s& K3 {5 H1 [; s9 ]
  16. #define E2PROM_CMD_READ 1% W( |. W# v3 A3 x. p
  17. #define E2PROM_CMD_WRITE 22 {- {" U* M1 ^/ M
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 {) L1 R' i( l4 Q$ U

  19. / V& s% \% \( Q" {* z* U$ Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 K+ \6 A2 Q: Q* i
  21. {
    & v- g6 P: m& ]" s' B
  22.         int fd, ret;, M: E! ?! a3 a+ x1 R( J/ D: q
  23.         e2prom_s_cmd arg;
    5 U5 N1 `2 k2 H: \) }" B
  24.         unsigned char buf[0x18];
    2 I4 c6 t0 @) p3 A" Z+ c6 Z4 V" C8 u
  25. 3 N  Y6 v  X7 E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 I1 G8 R) Y& y' @
  27.         if (fd  < 0) {/ N5 T- n2 w( g: D: q3 y* N; Q
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ c1 r  V3 M2 z, [
  29.                 return -1;6 K9 ]5 {8 H7 h7 S
  30.         }
    " ^# G0 S1 i9 J$ o* t( Z
  31.         arg.sub_addr_count      = 2;- A+ g/ }; c9 x
  32.         arg.data_count          = 0x18;
    ) U. u( Q! s; `8 f( @) i
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 w5 x3 _; N; ]" u& y) j7 v
  34.         arg.e2prom_cmd_data     = buf;
    $ F' l3 f) P* ~' a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; b4 P% E# O- t: d' x
  36.         if (ret != 0) {/ |& q& W7 A9 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # v$ ^% f' q: J3 a2 ]3 i1 C( q, {
  38.                 return -1;
    6 {0 l$ ?! n; `. D
  39.         }
    6 K/ v* b: l+ Z! b. d' B$ `' \
  40.         memcpy(mac, buf, 6);
    . B# c4 R0 x% m) _5 \. {. q
  41.         memcpy(stbid, &buf[6], 18);
      L$ j( w* {/ Y+ O; H" F2 ?
  42.         stbid[18] = '\0';# h$ q0 c+ P3 r" |" a- M, p

  43. " Y1 c6 P* N6 B1 _
  44.         return 0;& ^8 ]! t# x; g
  45. }
    ( f; a1 C& K" [6 D! v5 j! J9 n
  46. % N9 N. Z( s3 U$ d% F- a
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 s. s" F' C3 K" ?
  48. {$ s! Q5 s  ?" I1 R1 a; |7 ^+ f
  49.         int fd, ret;
    , l% y8 Q8 X/ m' F8 \+ z2 w
  50.         e2prom_s_cmd arg;
    ! I& A7 _" S' s; G+ d
  51.         unsigned char buf[0x18];( P% e" V& J) D. j9 [/ r" T

  52. 2 H% [& |+ d( G: \9 Y# Q
  53.         memcpy(buf, mac, 6);/ J* y4 J, D/ p% @/ O( R: N8 A
  54.         memcpy(&buf[6], stbid, 18);
    : R5 t0 D# \+ [3 B8 R8 w" v- U$ P+ {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # L& m  ]8 F+ F2 m& ^
  56.         if (fd  < 0) {
    ( {; B2 Z0 P, o7 x' R$ q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);% v, ^1 g8 h* u$ h
  58.                 return -1;
    ; ]- q4 W% X2 g: i% M3 h- X
  59.         }1 V/ m0 E. v7 Z# O5 C; \
  60.         arg.sub_addr_count      = 2;
    9 L# X: i& D0 [( V+ Y( K; g, W1 ^! p
  61.         arg.data_count          = 0x18;
    % @/ s5 v1 ?4 e, {: o; p+ T0 v! H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & p% s. i: y* u3 l7 \# C
  63.         arg.e2prom_cmd_data     = buf;  _# k5 P0 H9 a9 S+ s
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ A9 ?1 a7 z6 g, M. v
  65.         if (ret != 0) {/ ~* k. n- a9 H/ T0 {/ t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    9 j8 Y. a! M# Z% W) q/ ^
  67.                 return -1;
    % |7 u* [$ [; t/ P- f( b' i
  68.         }
    4 r. h4 N# b* m4 E* g( y+ N
  69. 8 O* ~* ~% m6 `& C, s3 t& O9 O
  70.         return 0;3 D" r) k( }; s6 W0 f/ e/ z
  71. }
    8 p  |+ s6 z4 \) B# x1 M: T- u

  72. * {% [* K; R9 x- a2 \" E
  73. int main()
    - I; B( S7 _  B/ X5 \& o
  74. {
    ! x6 J) h% |) ?- s8 y" e( a$ R" @
  75.         char c;
    ) z* b  `; s' ]( D2 _% T6 W' [6 n2 u
  76.         int i, macs[6];
    " p/ n8 T+ k+ S; G7 R' c. N
  77.         unsigned char mac[6];
    " U* t7 E& W$ u& z0 c( w- S
  78.         unsigned char stbid[256];, p% E0 X5 s5 T

  79. ' u0 j& E) v5 Z9 L% }) i
  80.         if (readparam(mac, stbid) < 0)
    - j4 Q2 o6 K! k8 O  z+ F( u, E
  81.                 return 1;" p" F. n- \3 n/ M  P/ @
  82. $ `3 |: E% ?# C9 ]& {, B' Z$ y! }# M
  83.         printf("Current parameters: \n");& b7 U5 f+ f9 E$ i) N- U$ i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % L3 v# N. g! }0 \
  85.         printf("  STBID: %s\n", stbid);! s1 I  |2 }; m( h
  86.         * p  ?; I, _  I! D* z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 o! F4 |, \0 w1 U0 `  E" H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % d: x8 @5 s3 u' y9 f
  89.                 printf("Input MAC error\n");
    8 R) m1 L. `0 E- B! B( U
  90.                 return 1;
    , K2 C( K9 X3 l( g
  91.         }( s( n3 F+ a+ u2 `' N
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% U5 r5 ]* n# k) C( q. t* d% i
  93.         printf("\nPlease input new STBID: ");
    ( X" N) C9 L' x
  94.         scanf("%s", stbid);% S+ Y' k. p9 \7 W
  95.         if (strlen(stbid) != 18) {
    ( s1 _" R0 W& l% m$ N8 [
  96.                 printf("Invalid stbid\n");3 V. w( G, e# k4 Y
  97.                 return 1;' B3 v0 o$ u$ A" }7 F" {
  98.         }% e! q0 C' J7 z7 {" D5 y- R
  99.         printf("\nNew parameters: \n");4 ^: ]0 x5 z: Z- ?" h1 @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - n) R! D: j2 F4 F$ y7 W' {
  101.         printf("  STBID: %s\n", stbid);
    ( ~  X+ V/ j' m. D. a0 P, \3 W

  102. ( V* u. x- \" L
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 C% |& S5 M# R9 w1 f+ p
  104.         for (;;) {! w% H+ F' Z+ [0 m9 V  s( T5 y) K0 _
  105.                 c = getchar();" I$ x# A# R2 [. Y1 w
  106.                 if (c == 'y' || c == 'Y')
    . E# P% q$ v5 j1 `3 Q
  107.                         break;: p: W! F; N* }" s
  108.                 if (c == 'n' || c == 'N') {* |, S, I, Z$ a
  109.                         printf("\nAborted.\n");
    5 C7 ^0 y! [( n: a: J
  110.                         return 1;2 Q. ~- z/ X, S
  111.                 }
    3 o6 N0 H, r7 J
  112.         }
    $ b; L1 }7 ]6 K
  113.         if (writeparam(mac, stbid) == 0)
    4 A( a' n+ ~  y/ z  |0 n' H
  114.                 printf("Parameters changed.\n");
    - x0 C5 ?5 ]9 L! N1 i1 @$ S
  115. 7 K4 |$ o* q. V, [. @4 p
  116.         return 0;# |5 z4 d0 z; |$ C) L
  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 ; s6 k$ B6 E! y  \% _9 O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 b& A+ y* d1 X9 t7 l9 j" ]/ ^3 r& E你用的编译命令行格式是什么?6 F3 A+ w4 Z  Q5 z' R& i6 c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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