查看: 16060|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    6 u" \  {/ n+ Y9 m4 j
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ C  L6 s1 V5 q' q# g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; |$ _( m3 Y* }5 b
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 c: n9 L% ]4 C4 M- N9 a* O7 ?8 ]1 K4 A: Y  _

" o5 j- a$ d+ e: B' w不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 G# c) k0 V8 `& t& I/ Z  c/ c. n8 A- \7 S$ G) h/ x; Z" ?; U
补充内容 (2012-3-8 09:42):; A* g6 K' f% s+ a3 \8 P
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' y7 ^) o0 j1 d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- j" @. J( x) }& D$ l

0 s" a- A2 V7 B! x" ^+ B4 ihimr <address> <value>. sample: himr 0x80040000 0x0
7 W/ ?$ V5 d2 T: i0 V' B' @2 P- A7 F& ^
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. |5 q9 C# I' T; h& M. xhimr 0x80040000 0x00
' N8 t# ?" x: y7 f) Ehimr 0x80040001 0x11* ~: v$ F9 O9 _* q1 r  x
himr 0x80040002 0x22. D9 g5 x9 [# n. x/ x0 \
himr 0x80040003 0x334 ~( n  h; J# ?7 t0 h! l5 I
himr 0x80040004 0x44
7 O$ @2 O* V4 I! Uhimr 0x80040005 0x55
1 i* x7 \* o+ j2 ]5 l- I; p  K8 Z" y
SN也是类似。/ E" m5 H2 V; x" U
+ Y( e, c5 P  Y5 m
现在主要是,谁告诉我们MAC和SN的地址?' D/ e, H' q: l* I) [5 L: \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
  k. j: ?8 K8 X2 I一直想找到运程修改MAC和SN的办法,苦于无解啊
; U& ^$ n# a# h' I
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # V1 u. l4 Y! x0 f

0 O2 o: ?1 U; r0 n& }) g& j1 f修改的代码早有了。到今天不会编译。/ Z- c% I% _" [
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 H4 j0 R! y. @5 ~9 Y
  2. #include <malloc.h>
    * k. `* D' F! m' A1 J* b2 q+ h
  3. #include <sys/types.h>
    5 i8 e; N9 {+ a
  4. #include <sys/stat.h>; _) W- y9 g+ X9 Y0 z
  5. #include <sys/ioctl.h>
    " ]' @& |0 |1 K' N
  6. #include <stdio.h>
    " p- d: h' o7 \: r1 K
  7. #include <string.h>
    ! D0 T1 F, O( ]4 l: H# c$ W

  8. 1 _4 v; e/ M- X0 c* {% X
  9. typedef struct {
    . M4 L6 @0 ^! U% D" t2 ^
  10.         unsigned int        e2prom_cmd_sub_addr;
    , T) d8 Z. n! q4 H( b
  11.         unsigned int        sub_addr_count;9 s) A8 N9 d! h$ ~- T
  12.         unsigned char*        e2prom_cmd_data;/ r" e' \  E6 U; a
  13.         unsigned int        data_count;2 N& O, [0 j+ m8 c& N* l% F9 O! s
  14. } e2prom_s_cmd;0 T% u$ J8 b  t/ v

  15. ( p. a# r8 h1 `( n& b2 B: E" A
  16. #define E2PROM_CMD_READ 1
    7 ^& O( F! \: P/ `. ^
  17. #define E2PROM_CMD_WRITE 2
    . o5 d1 a) w8 n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 a; n  |. F2 p9 }
  19. : y: d2 l* @; K9 {6 l& b6 h) n$ q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 H. ~3 H' G5 a) N# w' W
  21. {
    . O; O2 R, z2 M" O
  22.         int fd, ret;: u- D5 D& n% z
  23.         e2prom_s_cmd arg;
    $ N9 l1 `. j6 E2 \7 F$ s
  24.         unsigned char buf[0x18];/ O2 P# e, B6 ?

  25. ) I/ z, @8 Q; b0 d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ j0 v2 A% y5 t5 ~8 i" i9 j
  27.         if (fd  < 0) {5 X" k3 U5 V% j( y9 F4 C5 \& Q* ^
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 |9 V5 X' q2 x7 C! o
  29.                 return -1;
    . w' O- \* r+ w/ m
  30.         }% i; }  y' a3 T+ B* R
  31.         arg.sub_addr_count      = 2;$ ^% g! S$ j) s* _3 _7 v3 F7 F1 ]
  32.         arg.data_count          = 0x18;! a# m. k+ ?+ W  m9 l+ V) Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 w5 ^0 @5 S$ r7 k5 T
  34.         arg.e2prom_cmd_data     = buf;3 g$ G( v# S/ L2 W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* `8 H* {; f$ ]8 z* r& w5 C. h
  36.         if (ret != 0) {/ Q5 ?6 N* A' X( C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 e' j+ ^: {" ~( ^$ t, p
  38.                 return -1;
    * B2 F3 O, T8 b0 L& H" E8 r
  39.         }/ F& @6 G! T3 q
  40.         memcpy(mac, buf, 6);9 y1 P0 c7 _0 [  I. R
  41.         memcpy(stbid, &buf[6], 18);
    1 I5 r1 G1 h& a# i3 D4 T/ Z
  42.         stbid[18] = '\0';
    : C; T4 y9 x$ M' I; b

  43. 8 L0 r/ O! W* X6 U) y
  44.         return 0;7 r2 X; b; t1 {9 @
  45. }2 I- I3 {2 [" N+ Q
  46. 8 J  ~/ H9 |9 \
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - b$ A, x+ v& O! ?6 n
  48. {
    & S: S7 X5 m4 i: \/ X
  49.         int fd, ret;
    1 s, n6 Q! Z1 d  f: x1 C
  50.         e2prom_s_cmd arg;
    $ R' t' Z# |9 ^; E( {
  51.         unsigned char buf[0x18];( u1 v) n1 O$ ?5 S2 s& ]1 p

  52. 1 ~0 ?9 H$ o1 E6 Y/ H4 y( e) A+ t
  53.         memcpy(buf, mac, 6);/ V- z) O8 v  x0 w) V: G
  54.         memcpy(&buf[6], stbid, 18);
    2 ]( R0 \3 `" _+ W5 L$ D# q+ y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    & c: ^( v0 S+ U/ Z
  56.         if (fd  < 0) {( R5 k1 l4 _+ P8 u4 N$ E+ v+ {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ L! j/ p2 r% n
  58.                 return -1;
    1 _, R, u/ s1 R1 `( ?! ~
  59.         }
    0 U5 l5 J8 R0 }. R) @+ Y' m
  60.         arg.sub_addr_count      = 2;$ s" Q# p; S, L  r
  61.         arg.data_count          = 0x18;
    ; d# e5 v5 \" @0 K- j0 q4 C
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & m+ Y/ Y: ^+ S  d  |6 G- _
  63.         arg.e2prom_cmd_data     = buf;
    ; v- y) [8 j/ j: I/ ^0 k; Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 z; _+ R! p6 [& g3 d& L7 z! I
  65.         if (ret != 0) {3 _8 B+ \5 c( O2 W$ h
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 Z* Y. w5 s. _2 U
  67.                 return -1;
    4 n+ J5 S/ p6 N+ r4 z8 O9 r4 I
  68.         }
    # z% ~) w/ |' [9 v. L# F# j9 f" [

  69. * z. b7 g- y0 q
  70.         return 0;# X% J' O3 ]7 f! m4 S% s3 X
  71. }
    / t* b% f! F+ m& U
  72. 0 p; d+ q  Y8 S! a; B9 m, u
  73. int main()7 [" |$ [5 z" ~) Y  y
  74. {: m9 o. i: G' J$ l& [8 @  ?
  75.         char c;
    7 A" x% \: j+ B$ C8 G
  76.         int i, macs[6];
    ) y, f! c: B, t$ |) C/ M& t
  77.         unsigned char mac[6];0 x' ]; x! r3 W9 D
  78.         unsigned char stbid[256];
    ! V2 o2 q3 O: I3 P
  79. 2 M; T% L6 ]3 X9 o* R- R+ c
  80.         if (readparam(mac, stbid) < 0)% Z2 T7 f& u! |8 f$ A- L
  81.                 return 1;" r2 P0 X7 P5 l

  82. 8 `9 z' C) r8 |% ?* S
  83.         printf("Current parameters: \n");
    & u5 z, r+ V/ _# F/ ~4 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      J0 T4 W  Y. B: B( f) f( u7 y
  85.         printf("  STBID: %s\n", stbid);8 [2 z- M* |8 m# v  E4 Q
  86.         + t2 G( y' C/ J# x' P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( z: ~5 V: _* F  k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 A( G# v# z( H# S0 ~% J+ {
  89.                 printf("Input MAC error\n");6 X% D$ \& U; `! ^. r
  90.                 return 1;
    8 o. L! ~, Z8 a3 `
  91.         }
    / X" a. h$ |7 x% c
  92.         for (i=0; i<6; i++)mac[i] = macs[i];5 R; A8 T3 Y7 v- _
  93.         printf("\nPlease input new STBID: ");, \4 [  H! A+ M8 _; ]& k
  94.         scanf("%s", stbid);
    ! {- A9 d* L" i( }4 `
  95.         if (strlen(stbid) != 18) {( A4 z$ D* U3 n! M
  96.                 printf("Invalid stbid\n");3 n5 p1 G) y  r- y- S
  97.                 return 1;- ]2 F' G6 ^9 v9 [1 X* S
  98.         }
    9 B4 Q+ D' r9 X7 s- {2 c" T$ a! k
  99.         printf("\nNew parameters: \n");/ I, s6 ^1 @! t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);+ b- C" U, Z0 \4 c" ~: N
  101.         printf("  STBID: %s\n", stbid);. C+ K! ~: C! P/ c+ g9 ]4 ?
  102. 1 V4 {. N% Q, V6 \0 v: r2 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % U$ a1 s' |3 T
  104.         for (;;) {
    : [- B2 K8 X, ~! q  R6 p
  105.                 c = getchar();
    5 I6 L4 d  W" Q; @
  106.                 if (c == 'y' || c == 'Y')
    ) F6 A8 q5 _8 x* q9 t# D/ A) d
  107.                         break;
    ( M6 ~0 \4 q6 S# x2 M5 f
  108.                 if (c == 'n' || c == 'N') {% f% x  H1 p+ z  m% q, v4 S$ A  T+ `
  109.                         printf("\nAborted.\n");
    9 n# O% W/ p- L
  110.                         return 1;
    , P) e7 H& U* d* M3 @5 e3 l
  111.                 }5 y$ n; h5 U% l1 r) \
  112.         }5 ?' e0 w8 M, p- U" F
  113.         if (writeparam(mac, stbid) == 0) 5 N& j. s0 G; ~5 F) }+ g1 m" [" f
  114.                 printf("Parameters changed.\n");# g. t! b0 _! T4 e  [: a! x

  115. 9 e0 c, P# D" g  V, P! x8 h
  116.         return 0;! ]7 C: I* u" I$ [4 n% i
  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
4 }% Q& W' X) l, b0 O: U) a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 ?! W. p/ ?0 F& ]: B) H5 o
你用的编译命令行格式是什么?
2 u0 {0 _/ p) H7 {4 M! b6 E9 ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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