查看: 16148|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 F1 `. O) R* m2 y8 t4 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( o. V& [8 f) F  m  v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- ?1 X4 P5 u# y% ?; d1 lusage: himr <address> <value>. sample: himr 0x80040000 0x01 q% ~: O) F( a9 {2 b/ p
% L/ `5 Z! W7 i- X0 _+ _( d4 E

. F( c4 ?' f. {) |1 @不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 ^- _4 I- O) e7 t4 M) q( ?

' @6 ]: C  p- }8 o$ U. B3 t) N补充内容 (2012-3-8 09:42):% h( Z2 K4 ^7 n' ?; ^/ M% }  A1 _
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  O6 a3 J1 F+ m; P
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
3 \! }. K5 ]% I6 k: ]' n
* [: d' H* T1 Z3 O) l/ Qhimr <address> <value>. sample: himr 0x80040000 0x0% Y" A5 U( R/ Y1 w8 Q' u0 b

2 u( C1 y3 Y  i5 R6 |* a+ f( [例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; ]7 h7 q; e2 y# p' Q; S( X$ R5 dhimr 0x80040000 0x00' Q9 \; h6 `, C; X7 X
himr 0x80040001 0x11
# z& |( f9 B! ^8 X2 d0 ohimr 0x80040002 0x22" r$ K0 k1 a9 c. |+ c% s) T
himr 0x80040003 0x33
. Q4 w2 D0 o* G' d7 f8 y# \0 Hhimr 0x80040004 0x444 k/ u7 p! v) S5 Q. l8 g3 K' _
himr 0x80040005 0x55) @) e0 }, m5 F
) W" A$ |' T. i; T. }& v
SN也是类似。
* X$ _3 ?) |$ E
' \" i6 Q0 v5 P5 W! q( \1 p$ A- _现在主要是,谁告诉我们MAC和SN的地址?
6 D" ?+ Z. J4 Z& C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 |5 y+ m* j* w5 F, P一直想找到运程修改MAC和SN的办法,苦于无解啊
5 m; [( O7 r: C4 R2 A. y/ ]1 v
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 O1 A5 z$ M3 o  M
' T! C; T8 H  X7 T# J7 g$ _
修改的代码早有了。到今天不会编译。3 y2 ~3 p  E4 W5 {5 G; h# p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 k0 x* V9 W* `$ Q
  2. #include <malloc.h>' o, C% L4 r! e; x& n& S
  3. #include <sys/types.h>
    ! F7 g- I6 i6 s0 |$ G
  4. #include <sys/stat.h>' V) e( r% H3 H' y- h% J3 B
  5. #include <sys/ioctl.h>/ \- K* M  N7 ^  G% D/ _' x/ N) X
  6. #include <stdio.h>
    ! D) \9 c1 M- t0 e) I
  7. #include <string.h>5 H5 ]* g* G* _
  8. / e: }: r& [5 u; p9 k
  9. typedef struct {/ q" {% w  n6 j' ?. s+ m
  10.         unsigned int        e2prom_cmd_sub_addr;% S3 H5 c& y/ I# M. L0 ?$ b9 W
  11.         unsigned int        sub_addr_count;- E+ {( L1 A+ R/ E; B! T
  12.         unsigned char*        e2prom_cmd_data;
    - e: V, P2 o; \& b9 D* E
  13.         unsigned int        data_count;
    # W0 c6 N2 t0 f! M! A* a4 ~
  14. } e2prom_s_cmd;
    ; Z0 N/ l/ V: T# K+ H  q2 G# s
  15. 3 s6 G! K* s6 u  r8 K* }  V2 T
  16. #define E2PROM_CMD_READ 1! q# \, e7 H4 S' ^( l" A  }% E
  17. #define E2PROM_CMD_WRITE 2( }- x  b9 i4 R3 R8 j3 R
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) |" {  g6 G0 y
  19. . T2 {+ n8 v! p; X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& @! B6 `5 h* f  `
  21. {+ X: v  g% u6 D' P# M
  22.         int fd, ret;3 C* T; [: E& t& N8 [
  23.         e2prom_s_cmd arg;
    # A6 P# {7 I: ~% h0 c9 P/ F
  24.         unsigned char buf[0x18];* w9 U0 K% Z$ v/ e6 ^6 d
  25. $ c. O. y$ j3 z' k3 ^+ X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 ?6 O7 f! ^; F1 A# v
  27.         if (fd  < 0) {- Y$ z1 n6 O$ E! c# a& \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);" \6 I/ t+ h  w! Q: l
  29.                 return -1;% f4 g' z' h9 Z+ i' O
  30.         }
    / @0 T. O2 `& u
  31.         arg.sub_addr_count      = 2;
    & P  O4 A3 F% z( r/ Y  X9 U; S
  32.         arg.data_count          = 0x18;
    4 H/ l) T1 o. ^: V0 J2 |6 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;" K4 w8 v2 c. Z9 r& E2 R2 }0 _
  34.         arg.e2prom_cmd_data     = buf;
    / @9 v) x& q# w& w  ]
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , v8 U) V; o: s. B
  36.         if (ret != 0) {
    ) n+ h; f/ ^$ }0 {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( ^+ b* r7 |$ J  ^
  38.                 return -1;% c% k% F, m) }1 u1 j5 G+ `" b, C# [
  39.         }9 k1 L6 E- I' ?) m
  40.         memcpy(mac, buf, 6);" t. n! q& H' {; M
  41.         memcpy(stbid, &buf[6], 18);
    + g1 G! i6 x0 M, m# x, q) V
  42.         stbid[18] = '\0';
    0 W% u9 l8 t& {$ E

  43. % K$ A+ `6 C& G5 N4 C
  44.         return 0;
    & ~# S/ M& f9 j4 W9 w1 `. I3 a% o
  45. }
    ' `( g! S3 u1 v% }( ^% a4 S; z
  46. ' f$ B& W. f  ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; A, p8 F, a1 X& E- }9 v1 q
  48. {
    7 J8 M: u+ f$ o* y  M
  49.         int fd, ret;- E  K4 m- ~) N$ M/ Q
  50.         e2prom_s_cmd arg;7 n! G0 N- [# p1 D7 F
  51.         unsigned char buf[0x18];
    ; ~$ e, t1 k3 J4 Y5 v/ Z- n6 H
  52. 7 i* e/ U, k+ d" V8 t; D* D
  53.         memcpy(buf, mac, 6);6 t8 w+ f+ ^' N- K; Z" G
  54.         memcpy(&buf[6], stbid, 18);
    ( Z( @0 l3 ^' e4 I- S3 q6 e2 P8 {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);& j. c0 _  e$ p9 B* f- D; Q
  56.         if (fd  < 0) {
    % U. l2 k3 F( C) }2 v7 o  L
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);- }- a, @) A3 r6 h* P4 i( F
  58.                 return -1;
    2 Y* G: ~7 j6 C  j( O! E7 H
  59.         }
      n4 v$ K5 _: }1 a  B' W% o# K  T$ _
  60.         arg.sub_addr_count      = 2;, A, J5 S5 e% ^
  61.         arg.data_count          = 0x18;
    9 n! _* V" s$ B/ T0 |
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 Q& h  ^0 |/ I9 I1 w6 h# H+ x
  63.         arg.e2prom_cmd_data     = buf;
    ' P5 ~# s: D) l1 R: q% N1 l8 j
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" Z9 f" S' `: D3 Q6 s
  65.         if (ret != 0) {  m; Z1 e  x* u1 s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 R& d" k3 g- ^2 z" j( Y
  67.                 return -1;5 M7 I5 ]  k; k+ N
  68.         }
    . ~: r5 W0 Q" u$ _/ G  A# B
  69. # Z: R* A" h2 p
  70.         return 0;! r  g4 ?' @: N2 {  }/ H- I
  71. }
    2 Y* G7 E9 O* v* W% T! t

  72. - `/ W1 \$ ^9 z- e# C' \
  73. int main(), B, w3 \3 _8 I; d' ~8 V
  74. {- i. w$ |( M5 P. j
  75.         char c;" I$ ]7 O9 F  @, v& s/ S9 @
  76.         int i, macs[6];
    , O3 i4 D! E3 d3 @
  77.         unsigned char mac[6];: x2 E$ F5 o; w/ P: I# `
  78.         unsigned char stbid[256];
    9 g0 i1 S  Q7 e

  79. . |2 s% Y" D# V! j) p0 s
  80.         if (readparam(mac, stbid) < 0)
    * r7 i$ n/ U. O) u4 m
  81.                 return 1;
    * x: H% m- ^- n  j9 a3 f/ C
  82. $ V' ~$ q3 o% R/ K
  83.         printf("Current parameters: \n");
    ' O- G! L% W4 G* i( ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& b- R; f0 ?4 t# d  ~) y0 E- m1 `  |- d
  85.         printf("  STBID: %s\n", stbid);
    ' \' i& a! L: T# o( ~  @. f
  86.         $ Z" R+ K! ~/ _4 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");! M) C& ~( w8 S, P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 S9 }1 ?4 H& W# P2 u
  89.                 printf("Input MAC error\n");5 F8 L( y9 |4 r, p
  90.                 return 1;
    " I+ z% R( l- _. y2 H
  91.         }
    - j- T& M, _# o5 y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    5 ]2 n4 ?' S; ^  u  y$ ^+ r4 g3 c
  93.         printf("\nPlease input new STBID: ");- L2 C1 U* C4 v. g3 i
  94.         scanf("%s", stbid);2 t+ o: b+ @5 n4 w7 p$ o6 W+ D
  95.         if (strlen(stbid) != 18) {
    2 m* _( t4 [! P: B
  96.                 printf("Invalid stbid\n");& g& J' g+ U& v2 r7 L/ T
  97.                 return 1;
    $ A% l( Q3 n& v; U8 }; U, Q
  98.         }
    1 U% O+ |  ^0 m4 Z; i% W8 _
  99.         printf("\nNew parameters: \n");3 g6 P. T, P1 d+ \2 H' T& J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 }' W5 d: ]! V+ U. [2 K0 W5 f; j& X
  101.         printf("  STBID: %s\n", stbid);  F$ {+ }4 O, s1 j3 S

  102. 0 l! r" Z+ o  _! f
  103.         printf("\nDo you want to change paramemters? (y/N) ");! w( h3 m' E; ~* Y+ n2 A* J1 |& Y1 x
  104.         for (;;) {
    + I% y( z: c& v% c, }) H/ J
  105.                 c = getchar();. u4 Q% f+ U4 n1 e/ ?
  106.                 if (c == 'y' || c == 'Y')( f7 j, k! F6 L0 P* N
  107.                         break;
      n3 d" M4 {* v% c5 M% {) v. \% T
  108.                 if (c == 'n' || c == 'N') {
    ) I9 W, u$ C" v- _; N4 _
  109.                         printf("\nAborted.\n");9 ]: ?/ ~9 P3 N
  110.                         return 1;
    1 t) Y6 q* |% j+ A, ?
  111.                 }: J# S: D: m* |0 q
  112.         }
    " B: d& _1 ~% ?3 H* t: C0 c
  113.         if (writeparam(mac, stbid) == 0) & ^1 w9 Q6 U9 e' M# g, }0 |
  114.                 printf("Parameters changed.\n");
    . K, w% D. f7 q
  115. 6 D" k9 W7 Y3 l3 X
  116.         return 0;
    # B8 }1 _8 V: l& n" d$ ]
  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
" L; d- |: ?. ^& D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! P; ?6 G$ @' \9 J你用的编译命令行格式是什么?
7 W3 V: q) P  n6 U* U
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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