查看: 17337|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * g# q3 W1 ~# G- j0 z9 Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 ]1 H  H% [: i' V; \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" g  g, B: U: ?! {9 l
usage: himr <address> <value>. sample: himr 0x80040000 0x0* D2 D0 Q% `7 J( U' F

$ e# [, I7 A8 v  v* k  Q& L6 K1 @) M0 J1 P6 `
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# Y+ v) t: y+ g) t- p! ]* e& C, B, O" @9 L7 c. r' K1 x/ y% E
补充内容 (2012-3-8 09:42):+ ~  j3 f1 F/ w" j( _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 ?1 K7 g0 W4 ?* ^3 F2 O& i
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
9 i  ~: Q* S) E& Y, n
0 {, G% X- _" T8 N5 ~7 B, khimr <address> <value>. sample: himr 0x80040000 0x0+ [# R3 ?8 t# W4 G% `0 ~- |

/ {7 G& u/ J  K/ V例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( O' }6 f. T  V
himr 0x80040000 0x003 i9 t; c* }: g  A0 D# P: V7 ]
himr 0x80040001 0x11$ K1 l! U5 b% G8 u
himr 0x80040002 0x22
/ o9 \. D2 L6 mhimr 0x80040003 0x331 R% e: T( \5 @  |: @- r
himr 0x80040004 0x442 s! ?0 q: ^8 W8 y& b( C: X
himr 0x80040005 0x55& X7 D0 }2 _/ }4 ?5 S: p/ Y7 ?
! _# c* _7 r+ F  T5 ^0 E
SN也是类似。: e$ s# r. v- e1 `% \5 H+ ^+ U

- G/ I; J& Y/ x7 C% r8 n- w3 k* T现在主要是,谁告诉我们MAC和SN的地址?
8 t! O; r0 U  J& A
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 C5 ?1 b5 r6 I" S; W# m: Z- N5 _一直想找到运程修改MAC和SN的办法,苦于无解啊
# s+ g/ v  h* I& F% W, a3 O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & G) l$ m  G2 F% k7 S2 A4 w; U
) u4 h  X! k4 E6 K, e4 k! N! Q
修改的代码早有了。到今天不会编译。
8 z7 `* _/ q$ i6 b4 G9 }需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; K% ~; u9 q! k! v) Y
  2. #include <malloc.h>
    " e1 r; m$ ]0 ~* j
  3. #include <sys/types.h>
    ! M* J* w& B7 U6 i8 Z! x: J
  4. #include <sys/stat.h>
    , M: j+ c8 z* P& r
  5. #include <sys/ioctl.h>
    + G4 o9 Q/ A" ^$ h
  6. #include <stdio.h>
    9 z6 r4 g6 [9 I. j: `
  7. #include <string.h>
    8 }6 P! |" z" z. o9 o+ [
  8. / X1 V3 _7 S2 _1 I
  9. typedef struct {
    9 [5 z. @; F5 \$ r% l' q; S* y
  10.         unsigned int        e2prom_cmd_sub_addr;) D, W1 S9 F# l: w& i4 e
  11.         unsigned int        sub_addr_count;
    7 B" f/ A/ L6 @1 T' n( m7 b0 X
  12.         unsigned char*        e2prom_cmd_data;* X7 e! W7 G5 @
  13.         unsigned int        data_count;' \1 r3 E& j5 r8 Y
  14. } e2prom_s_cmd;
    6 f# c5 U6 u! n& H* n

  15. * s9 |  \8 b7 T  M
  16. #define E2PROM_CMD_READ 1
    1 k+ x" H& F: d4 t1 k# _
  17. #define E2PROM_CMD_WRITE 2
    ) N; J  N2 {2 u! }- m
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& |9 |9 p& z0 r  h8 I

  19. ' k% K2 ~) i/ n  H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- ]* J# B( x! V
  21. {
    " i0 V9 v2 E: L: l
  22.         int fd, ret;4 e" [% k3 s4 ?7 S! G  w! L. @
  23.         e2prom_s_cmd arg;
    ! V6 ]8 U/ E9 b0 \/ _  n( C" v
  24.         unsigned char buf[0x18];
    : ]+ `6 x; ]* y4 x9 C6 E( q* ]" b* j
  25. 5 V: Z* W. @0 e* T1 u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);( I; p" Y% E, d% ~& g# U, V) H
  27.         if (fd  < 0) {
    * H5 U$ C  e; \% o# W
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : M/ @) I) a9 U, A: @% f: E/ c/ `
  29.                 return -1;
    * R0 M- V0 B1 _
  30.         }& E7 }6 p  J/ j. D. ^) V: N4 w
  31.         arg.sub_addr_count      = 2;; O2 ^! w; y- G- x7 f5 Z8 H, ~
  32.         arg.data_count          = 0x18;
    % \  n- r% y. Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : v$ ]# a8 Y8 U  ]: C
  34.         arg.e2prom_cmd_data     = buf;' j( z+ t" Q3 V. x2 b6 J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 h# |5 |" q4 D: h: U
  36.         if (ret != 0) {% J' P! M, }% [0 o
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; }8 B) S7 y/ }/ E  Z5 }1 A; V
  38.                 return -1;
    . ?  y* ^4 Z  }* T; E! h
  39.         }. P1 [* c4 S! H9 m0 ?' {
  40.         memcpy(mac, buf, 6);
    # d0 ?# O0 i8 S4 H& z  R# u3 R2 S
  41.         memcpy(stbid, &buf[6], 18);
    . [! h* {( n0 k3 |$ {  v, E
  42.         stbid[18] = '\0';
    ! I+ _  [; `3 K4 h( b" Q# q) ?1 i

  43. + d6 _# x  E0 f+ m7 @" C4 ^
  44.         return 0;
    0 V$ L1 E2 x# T/ T4 e
  45. }- G' a" p, o0 G4 r4 [% t

  46. 8 o1 L" n) o! G1 r# ~5 }+ J1 O& p& }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- ?4 I* U& \4 a$ k7 F& g: A7 j
  48. {" A% \; D" l4 g) u
  49.         int fd, ret;5 m4 C# ]6 C8 O3 V) |
  50.         e2prom_s_cmd arg;5 c, m) t1 A, \9 Z9 q
  51.         unsigned char buf[0x18];# }  S! f5 d+ g$ v; l/ T$ ]

  52. ' M& L1 T, A) _( d( j
  53.         memcpy(buf, mac, 6);
    7 M1 t8 J  T- r' t9 J
  54.         memcpy(&buf[6], stbid, 18);1 @8 J; C& f4 p' H
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % K: I# C0 L, }  i5 D- m) ?  S2 G
  56.         if (fd  < 0) {; Z$ O, @4 b& ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 E8 W) E, n, M( K- k# _
  58.                 return -1;* Y0 @4 T1 S1 ], \) [# a" D
  59.         }, ~' _* c) A% F) c3 I' Z
  60.         arg.sub_addr_count      = 2;# x' s" z5 D6 d; B+ G# a9 w# f/ X! h
  61.         arg.data_count          = 0x18;: ], O: Y( M, |* M- O! r: Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % _+ P& F5 f/ ~- A- W- v
  63.         arg.e2prom_cmd_data     = buf;
    , s/ }( W. c2 W3 @/ V1 i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( Q5 c* I" M6 Y% d5 B4 ^  k
  65.         if (ret != 0) {
    % N) D8 P+ ^7 g( Z, W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; z: i7 i; p% x& L
  67.                 return -1;/ V/ n$ t7 n- D1 ]3 C
  68.         }7 O' ?* l8 ]8 ?
  69. ' v& V# X9 X: A
  70.         return 0;
    ! c7 x- Z' i( Y( w" X: Z
  71. }
    * x5 M6 v# }2 d4 x

  72.   b' \; h8 _" i- d* S4 ?
  73. int main()
    0 v( E9 f/ i- X; p( j3 u0 V  m% u
  74. {) _. ~- q% z/ T0 |* J
  75.         char c;
    3 B) D& Z8 E0 B2 H$ e
  76.         int i, macs[6];" k$ C* Z7 O) W- b  F
  77.         unsigned char mac[6];( D; _  {2 N' Y: X8 n) ~
  78.         unsigned char stbid[256];& [3 g2 @" U+ T. b6 I# D5 p

  79. 9 R2 N5 p! d( T4 N- \, M1 q
  80.         if (readparam(mac, stbid) < 0)4 }+ ^# ^9 L* j* ]8 t0 b
  81.                 return 1;
    9 _* L6 b- \8 ^% b, c2 h9 U' s

  82. ! K) i4 h" ]7 w6 s
  83.         printf("Current parameters: \n");
    + k3 U' s6 A/ d' Q. S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % ^3 e5 G) M! K5 @+ F* }3 L
  85.         printf("  STBID: %s\n", stbid);
    0 k/ E5 c- F3 _. \6 I* p7 z
  86.        
    1 x, o3 ~+ _: r7 K0 C
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");. _0 }6 b6 j$ X* Y- b
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! }9 d9 k( V! g7 Y/ B/ S- z
  89.                 printf("Input MAC error\n");
    / ]1 l, X3 J0 C/ {7 [
  90.                 return 1;
    ; z8 d* Y& t) W+ D  e% ]. c- J! T
  91.         }* I6 ^/ J: \5 q" v" T+ G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( U) r( t3 l% I+ a7 g
  93.         printf("\nPlease input new STBID: ");9 ~& t& I% |% s3 Q! m  h9 H: w
  94.         scanf("%s", stbid);" n& z: M; Y6 ^7 C$ D
  95.         if (strlen(stbid) != 18) {
    # m3 f8 W6 ?0 ^. z
  96.                 printf("Invalid stbid\n");
    : J! k, I4 Y: ]1 e7 ?, ~
  97.                 return 1;
    0 p* a( ~1 D' [: o; G1 x1 G
  98.         }0 }/ v, _: Q& I- c  B) @
  99.         printf("\nNew parameters: \n");$ o4 \7 Q/ E) S/ r' a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 G0 Q: R4 T/ i$ k* h  _# L- U
  101.         printf("  STBID: %s\n", stbid);
    , ]6 |  o: x; o; d+ N

  102. . [7 v5 `3 T/ q% g2 o( A
  103.         printf("\nDo you want to change paramemters? (y/N) ");. M0 E( r& ]% m
  104.         for (;;) {
    % f) l2 m( C& N5 Y- Q3 K
  105.                 c = getchar();
    9 }% ]9 |( q% }$ S5 g
  106.                 if (c == 'y' || c == 'Y')/ _: V: O7 L4 S0 u3 V
  107.                         break;& d% I- D$ W$ I$ l" q6 G
  108.                 if (c == 'n' || c == 'N') {
    ! p' @  ^! {3 c! Q% `- H9 y. }' _
  109.                         printf("\nAborted.\n");
    ! G8 {' B  o- `% m
  110.                         return 1;+ v$ w# k% i4 F5 ]5 d& E
  111.                 }
    . y+ t; _# D, K5 E
  112.         }
    / V4 Y1 e* f% |% y  X
  113.         if (writeparam(mac, stbid) == 0)
    ) d8 p1 y1 b, d4 y: k
  114.                 printf("Parameters changed.\n");
    8 ?4 {4 t" h& T8 S! \* }8 Q. l

  115. 2 E+ \# t1 S* K" m# E
  116.         return 0;
    9 ]  G3 O2 ~/ v, R
  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 ( o' T2 D. @2 d" A
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, R, [$ S! s5 U* V7 O7 o- k/ Z
你用的编译命令行格式是什么?# T4 z  ^# x/ I) O
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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