查看: 16934|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr" l: u$ y. `# p  g& a: g6 ?6 _; K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 E3 t4 L% w3 A* Z/ ^0 k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 U. W: @4 }% I$ husage: himr <address> <value>. sample: himr 0x80040000 0x0
8 J( M, E+ L3 n# s* z- d/ k. f0 e
0 G+ G# {& R7 A. r6 I  f5 S5 e$ Q) @( r. k$ m) G0 g: L+ I* f
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?! t: ^8 n& @" M* X
! N* B2 J; F: N6 o+ A& r, h
补充内容 (2012-3-8 09:42):; A% U$ o/ r6 i2 R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 J9 ]6 o* h* f; }; b+ V! V- ^
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% S5 D) {' V# G( M8 Z
# V9 T+ `8 O5 c4 H8 n5 h: P" E5 V, d% Ahimr <address> <value>. sample: himr 0x80040000 0x0
! F8 m6 [/ z0 V4 f! A+ L' `
& p% V6 \. \( @8 @3 w+ P例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& o( X7 c# C: f+ ^
himr 0x80040000 0x00
: b" R: P& I" O8 W  Ohimr 0x80040001 0x11
, Y2 k2 A4 c0 M8 G: q, D% ]himr 0x80040002 0x22, q5 M# |: U- A$ `. ^1 \
himr 0x80040003 0x33* x/ p& `' o" F6 F/ [7 D
himr 0x80040004 0x44
& Y9 o4 x3 q9 F4 B7 C/ \3 Dhimr 0x80040005 0x55# t8 O; m2 ?' |2 i0 z$ V
) r; y% C2 z( Z  \9 U# Z
SN也是类似。4 C2 M4 L1 f  o# u' ~+ C; |  ^- g

" d9 V6 z* _7 u现在主要是,谁告诉我们MAC和SN的地址?) I4 d# v$ U3 \+ E
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 V% r3 g- y* S& {" Q一直想找到运程修改MAC和SN的办法,苦于无解啊
6 U1 F% ]8 A" e8 s/ p6 }  ^7 B
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) v1 C: {8 F4 f& F8 u
, s: X8 p3 s) x) ?- N# o修改的代码早有了。到今天不会编译。
9 u" E8 s- f+ `$ G7 @8 h+ U需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ! |+ O2 T) M/ r. ]! \
  2. #include <malloc.h>/ D' s# q) U6 N' ^9 u$ i
  3. #include <sys/types.h>) U( g, J  U9 c0 u7 ?1 y" ^6 V1 l
  4. #include <sys/stat.h>0 P( z' G6 Z, F
  5. #include <sys/ioctl.h>$ I3 P: k. J, K/ f
  6. #include <stdio.h>
    4 O! T, Q# p" M5 V
  7. #include <string.h>7 }/ Z2 A! o  `: x& C+ D3 X

  8. + I' |" W4 p: q9 L0 w
  9. typedef struct {
    & A8 i1 P0 Z# f. \/ `
  10.         unsigned int        e2prom_cmd_sub_addr;% m% [: k5 S, @: T% \
  11.         unsigned int        sub_addr_count;- D  E+ w* a0 Q* ^: R8 w- @
  12.         unsigned char*        e2prom_cmd_data;/ W2 Z. b; k* S7 h5 a2 \% L
  13.         unsigned int        data_count;
    9 Q3 M- K& ]1 h' V1 x; E
  14. } e2prom_s_cmd;
    9 \, X7 m( ?  r4 e7 O% g
  15. " N2 H( P: B; L( [6 V
  16. #define E2PROM_CMD_READ 1
    3 f; l/ ~7 M: N  W
  17. #define E2PROM_CMD_WRITE 2
    3 h& A, U! \3 s1 j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! `1 P% T- i; ]4 H" u
  19. ! T+ y; L3 h7 ]- w3 K: z8 `1 m
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! h9 E2 F- ^9 R! y: a
  21. {
    ( R. f8 B! D! k, P) V. m+ N6 U
  22.         int fd, ret;
    9 a, \; z0 _9 V4 V8 T7 M) A
  23.         e2prom_s_cmd arg;
    & v  ?% C, ~9 V$ Z$ z& o
  24.         unsigned char buf[0x18];2 N3 _. V! ?" s8 }# T4 X

  25. - m$ ~/ {5 M5 |  n+ d1 o+ c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & Z  H6 k- |  K7 h+ j. _8 C
  27.         if (fd  < 0) {
    4 e( N: D0 N% k7 N  U  j$ W" V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 e  c! Z; d& {! C4 @# y
  29.                 return -1;/ a1 @2 K" m7 Y( P" I; W' N
  30.         }; T+ z/ |5 u: M6 w/ m8 K- g
  31.         arg.sub_addr_count      = 2;/ ~) ^* Q4 d0 v! G6 @- R# o
  32.         arg.data_count          = 0x18;/ @8 V) B0 }& @! a5 a6 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    3 h3 J5 O4 D; ~8 J8 ^
  34.         arg.e2prom_cmd_data     = buf;$ @! j6 B# r( s% @. @$ a  L! d. M+ s: I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 g5 E3 w( A! k2 e6 h
  36.         if (ret != 0) {
    - C; u6 c9 |( {8 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " e; i* y5 I2 v) S- h2 ?( m
  38.                 return -1;
    ; O9 N# s" F7 l1 d5 D" D
  39.         }7 ~4 ^2 ~* R! ]5 |6 F4 k
  40.         memcpy(mac, buf, 6);
    0 M- N1 k/ b" V& ]  @
  41.         memcpy(stbid, &buf[6], 18);
    . D* K( W; E/ @. O( i
  42.         stbid[18] = '\0';
    % ~' ^' X, ~0 p) B+ T4 t

  43. 5 h4 N. \( P7 o$ U& D" b
  44.         return 0;) V2 _3 _5 N$ r
  45. }
    ( u4 {% {: w- `: ]6 H: j2 V  u
  46. 2 g4 z- `* d- z5 r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : j9 x7 b3 F$ U2 n, k; `5 X" C
  48. {
    ' i+ n! X% L6 @6 U1 j
  49.         int fd, ret;
      G+ _5 J7 `& y! w
  50.         e2prom_s_cmd arg;
    5 X$ q0 q% `# e/ n8 @6 w
  51.         unsigned char buf[0x18];& W  E8 O9 }- h
  52. 2 N! O8 z* o$ v/ L$ w( R
  53.         memcpy(buf, mac, 6);
    9 [+ i9 X8 p& p# A9 U
  54.         memcpy(&buf[6], stbid, 18);, a( W% L6 ~3 p4 q) \5 S# ^; p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# W# E7 N0 J! I5 E& o, p
  56.         if (fd  < 0) {8 ]3 G/ y! A" ^6 v: S/ A
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 W6 u* l2 G6 ?% \* [/ X
  58.                 return -1;
    / U) c; j. o4 R! G5 a; K4 s1 W
  59.         }; c4 l0 `6 D5 L+ i' z9 v- f
  60.         arg.sub_addr_count      = 2;0 z" E( S7 M4 @- `. T. g, g
  61.         arg.data_count          = 0x18;
    5 _+ j, }, I1 v& V- r( o0 O1 r6 M& s3 H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 t0 Q" j$ g! v: g6 Q$ `
  63.         arg.e2prom_cmd_data     = buf;0 `/ d! O8 i' F, A0 b+ }* C0 E" y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& ^' ~4 ]0 }# D4 J! h5 `3 G
  65.         if (ret != 0) {% r( s2 y3 T/ J' N$ A
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 x0 y0 {. ~% }
  67.                 return -1;5 n% N0 `% h2 f) X/ C- t
  68.         }: l+ M! o: O# l. }

  69. 1 G- j% M* W* C5 Y" _5 m6 [0 H
  70.         return 0;2 W& c  i$ A- v7 g7 P% c
  71. }, E) t, j, \! D+ C! O& @: p; D
  72. % [  E$ A) s, _
  73. int main()
    7 E( i0 k: L  P
  74. {
    ' {$ n* d  s" J& t; u2 i! J
  75.         char c;1 q! Y) ^$ n/ D; G$ {+ d# \
  76.         int i, macs[6];9 W9 S, z4 q' y: P3 [* G
  77.         unsigned char mac[6];1 S0 a' Z; r! y2 F; _
  78.         unsigned char stbid[256];; G& w1 ]- e# A" P$ K3 J# J( t( M
  79. 6 y; P8 c! _* m1 V# N$ N% \
  80.         if (readparam(mac, stbid) < 0)' I* \3 z8 V. S4 s3 k) Q
  81.                 return 1;9 l( l8 J+ j6 w

  82. , q% U0 ~# B; [
  83.         printf("Current parameters: \n");
    / ]0 Z$ c1 x" [7 i0 k& E( Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - C6 n* g) X$ n" x% K& ]8 r
  85.         printf("  STBID: %s\n", stbid);- h  |' u; Y# \) \. Q) B% C
  86.         / ~9 ^, ^% d/ j1 S9 T. A2 f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 U! a4 X, @& s; g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 h7 h  Q  b& h2 b
  89.                 printf("Input MAC error\n");* C: |* p" `  k
  90.                 return 1;
    9 B- ]. N; m' H4 R
  91.         }
    1 n  t! H* M; d7 }6 O3 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. V+ g# n! L  m
  93.         printf("\nPlease input new STBID: ");
    ; G" d# V* H- K# x# t
  94.         scanf("%s", stbid);
    8 c/ Y# N' t& E' ?$ G# T
  95.         if (strlen(stbid) != 18) {
    * H" T3 `+ j% Y' Q( r( {( b0 ]. ]
  96.                 printf("Invalid stbid\n");
    2 t+ n0 [/ k1 j4 f: z
  97.                 return 1;
    $ f: [- \' Q0 H: [5 X1 U; b
  98.         }. Z  i3 w( g  T8 U2 M1 K/ D
  99.         printf("\nNew parameters: \n");( T8 ]2 B' I( R0 S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* w6 N$ `7 r" `/ R
  101.         printf("  STBID: %s\n", stbid);# q; [3 g9 G8 B+ z$ L. x

  102. " u4 @& K$ [6 e4 [8 q+ Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");, n1 B( w0 o/ ~5 q
  104.         for (;;) {0 j/ |' f3 K6 ^
  105.                 c = getchar();' O$ J7 ?  D2 i; J
  106.                 if (c == 'y' || c == 'Y')" v  w, R! d; U. N- r
  107.                         break;
    & e3 ?4 y0 W) ^) h* M
  108.                 if (c == 'n' || c == 'N') {
    0 ]1 [2 f) C; i0 i4 S
  109.                         printf("\nAborted.\n");- Z+ ^' c1 a8 ~( I6 d( ~' q
  110.                         return 1;
    + Q' n# T3 y" W2 W+ q" i1 e
  111.                 }) O1 b# p) K; x3 h
  112.         }/ K" L1 W: \! ?: r, m: S
  113.         if (writeparam(mac, stbid) == 0)
    4 R, W5 L3 v  Y  n! ^. V: p6 r+ ?
  114.                 printf("Parameters changed.\n");& H% [5 {% J0 D' x( R+ F0 n

  115. ' L  v4 ]9 f4 q  D6 W# {& U0 ]4 c9 C
  116.         return 0;& O' M4 E6 u7 B
  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
! F* |9 q5 R& L, f" r9 d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# Z+ u1 I9 G4 e: ^$ d8 _
你用的编译命令行格式是什么?7 u0 j, m0 l2 H9 e9 a5 A
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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