查看: 16524|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 X" [7 j. G$ {) p, n4 g( y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 O0 D) J/ `# P1 r8 x! `% A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 t# r" [0 G; ]
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& E& t& K2 ?& ]5 {' }
4 ~$ D( U% m# K% f6 h! c. [$ H2 l; G- A
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  _8 ~3 B' c, V3 f9 t
1 l1 \( G: s' u4 G( P2 j/ p补充内容 (2012-3-8 09:42):& E9 ~& r8 m# e& N( {3 \
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; ~- v3 ~8 U! a6 z
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。$ G: L- F  |7 H

( g+ J9 B- \( K8 J& f4 yhimr <address> <value>. sample: himr 0x80040000 0x02 r5 y- N: I: O1 ?9 Y5 k
. r% f" z8 S1 G6 H3 \8 |1 ^0 R
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。# V' t8 K( n# |' ^; k# h
himr 0x80040000 0x00* s' O6 Q9 |+ a5 A% M; |  b$ i! I
himr 0x80040001 0x11
7 a9 ?5 H" M& I1 ~6 mhimr 0x80040002 0x22' c6 k) d% @# X) h- l# d: Y; T
himr 0x80040003 0x334 z) {2 D( |& r; O
himr 0x80040004 0x44
2 H/ O5 K( l9 z4 ohimr 0x80040005 0x55
$ m  h$ ~+ e" {$ V# A+ H9 c/ L! k! C  l8 S/ F
SN也是类似。5 s9 ]) z) g9 b( G& o  J

' y7 e. A/ F1 C7 z3 ?: h现在主要是,谁告诉我们MAC和SN的地址?
! Y+ d$ e, p, v9 h* ]9 C1 x* C6 @
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 ?; m. B. p, x4 J! ~7 |6 X一直想找到运程修改MAC和SN的办法,苦于无解啊

. {* X1 @% ?- x源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 2 E% ^: H; Z& P% M

$ e* e4 n& i- t5 @5 s修改的代码早有了。到今天不会编译。7 W, N$ {( [  [" Q+ r0 @
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / k* Z/ D3 R. }! E4 U
  2. #include <malloc.h>( w; H8 N. g, l4 q6 o( ^' F) |+ C: U  w
  3. #include <sys/types.h>
    # O* q& h6 ]- x
  4. #include <sys/stat.h>4 A8 @7 G- _, i9 Q+ K5 F
  5. #include <sys/ioctl.h>  `8 D# T5 T5 W& ~* d
  6. #include <stdio.h>
    9 v$ @9 V: k/ z% Q8 l$ y7 T
  7. #include <string.h>: E' L" A4 C% B% X) z* ^
  8. " R2 `4 @- c; y
  9. typedef struct {
    # X3 o7 l4 T+ x; c3 {$ y' ~  U' T
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 z% I& b* V3 P) W" p2 J3 y; G
  11.         unsigned int        sub_addr_count;
      t$ \0 j) x* Y; J" R; ~# @
  12.         unsigned char*        e2prom_cmd_data;& w) Y  o  s4 Z( t
  13.         unsigned int        data_count;
    0 A: z  v( \/ c
  14. } e2prom_s_cmd;
    ) E  c* D  [  c2 g6 m
  15. ; y, p% w5 {' x' n( U* m
  16. #define E2PROM_CMD_READ 12 J1 A/ u& ~% m* C6 J& C3 _; X
  17. #define E2PROM_CMD_WRITE 2
    , \/ x& p" A* F5 l1 Q! H, b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 u$ D# i' f# i

  19.   f; k) M% Z/ q  w( v: t" M5 N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ s- a" g3 A; y. y
  21. {* ]- _6 B9 ]+ P' ~1 C
  22.         int fd, ret;
    0 a7 M. m; `: x8 I
  23.         e2prom_s_cmd arg;8 q  o2 y1 A. }+ i. ^/ e6 V
  24.         unsigned char buf[0x18];! Y# v. u, h/ e# x

  25. 5 E1 K! b1 V; G+ w! k( X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# s: J* U$ \6 E4 C
  27.         if (fd  < 0) {9 I) ^/ f# a, i1 |" M
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 ^, _  p5 h: a. g
  29.                 return -1;
    # p4 i2 u- \7 Y" j8 X
  30.         }
    ( d4 z3 J5 h! i( [* g6 x# p+ G1 F
  31.         arg.sub_addr_count      = 2;
    . S  y7 l2 C& C6 q3 Y# u( Y5 |
  32.         arg.data_count          = 0x18;& Y: J& C' X7 D' d- j: y
  33.         arg.e2prom_cmd_sub_addr = 0x290;( p9 }' j  b* A; x' @- B
  34.         arg.e2prom_cmd_data     = buf;2 E/ I2 T+ o1 p- v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: T0 m) C9 q" B# i& ]6 K
  36.         if (ret != 0) {8 i3 J, `) |4 q6 u5 h" Z9 ?0 q3 c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 s0 J- j/ z: m8 `# l
  38.                 return -1;( t+ {8 W9 ?4 }% j  N
  39.         }& i: A& |6 ~* C9 b+ j8 K1 |6 N! t
  40.         memcpy(mac, buf, 6);
    + R' D" D& u4 m, }
  41.         memcpy(stbid, &buf[6], 18);
    ! u0 B* E3 V; j( ?4 @5 }& s
  42.         stbid[18] = '\0';
    8 H7 U* N' t7 Q+ Z2 G) `& @. ^7 b8 j

  43. 2 ]: e$ }% i* ~- u. S$ t+ G: r
  44.         return 0;1 p/ L6 S1 V2 R3 i" c
  45. }) F* b2 ~, M! k
  46. 8 k  ]% @$ m. X7 ?% C2 S" D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 l0 ?) t5 ?$ [, r4 b2 ~4 q! ?
  48. {
    ! n* `' ~5 s: a2 F
  49.         int fd, ret;; M/ V* @. |, x
  50.         e2prom_s_cmd arg;
    1 h7 U8 g2 P/ p& B
  51.         unsigned char buf[0x18];
    / u6 d. p/ O$ w& d- y% `

  52. : _2 F, a0 H- A$ D6 x7 F
  53.         memcpy(buf, mac, 6);
    & P9 P& V. C1 h* C, u4 B& R0 p& t
  54.         memcpy(&buf[6], stbid, 18);- h* \- f, j$ |  C$ T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% r* B- J6 G" ~$ r/ m
  56.         if (fd  < 0) {+ H: |/ P0 e- f! P" [8 j# e+ B/ q( d
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) C! _9 b( X5 }& i% ~, l: k
  58.                 return -1;
    9 r8 b) k9 U0 o. i7 B1 Y! S
  59.         }
    - V- n: R! G* l
  60.         arg.sub_addr_count      = 2;
    # Q* e5 h0 u( J* X& I
  61.         arg.data_count          = 0x18;
    # F! j3 B* W' o, L2 i( P6 T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % l2 }7 _5 A. e: Q, |- g0 Q7 N
  63.         arg.e2prom_cmd_data     = buf;
    , y2 ?* C: G9 Z9 r! f' `) x% u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    9 J7 O% Z/ h2 k. J& {5 N/ f( {
  65.         if (ret != 0) {
    + _0 e! M8 f# ?3 b
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # m2 d; @2 U. f! I( P9 {1 ]  U2 S
  67.                 return -1;
    / n  ?8 D5 @* A2 {% f2 ~& i4 |8 o4 c0 I
  68.         }, ~9 B, W* {, s( z" ?

  69. ( v3 U. H: J' S
  70.         return 0;# ^; O" ]2 H# l+ Y4 j5 e
  71. }- Y6 `3 {& P5 M
  72. % T' ?9 w1 N# D* y
  73. int main()3 \$ `$ l2 U: v+ Z1 @7 }9 j
  74. {
    % W+ b( O& L% w: W8 |
  75.         char c;' w  ~4 B9 t; g1 A: ?/ d9 w3 m' C
  76.         int i, macs[6];
    ) a' V9 U$ y. t1 c5 g4 T
  77.         unsigned char mac[6];7 W0 ]& @$ f* I) K
  78.         unsigned char stbid[256];
    , J! s7 V8 a+ [3 ?/ ~
  79. 5 b2 R9 [0 Y# ~) W/ t
  80.         if (readparam(mac, stbid) < 0)
    . L8 y/ ?+ H( C& |3 F3 |
  81.                 return 1;
    . }, G) G4 C. t1 ~9 J

  82. , Q: Y$ z& l! p5 z) d/ J
  83.         printf("Current parameters: \n");( v9 |0 M/ f; n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 T; p+ H. r& T* ?
  85.         printf("  STBID: %s\n", stbid);
    + s* Z, j6 ~  m( a7 }% c& n
  86.         " f7 {0 f, U$ K6 j5 X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% Z" J; {2 s* Y" s) a% b/ ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . ~+ E" h. d1 l$ a6 q
  89.                 printf("Input MAC error\n");
    : n& n: O! l0 T' }: m" U6 \
  90.                 return 1;4 v0 [4 g6 p$ f6 \6 O# u3 c) J
  91.         }
    & E1 `! I0 V* g2 d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];3 E2 L1 a4 n, O0 _6 R! f
  93.         printf("\nPlease input new STBID: ");6 j: ~1 l; n; Q' l0 T0 j
  94.         scanf("%s", stbid);' n$ f$ C5 n( g$ g
  95.         if (strlen(stbid) != 18) {2 }+ M, J1 y2 N
  96.                 printf("Invalid stbid\n");
    $ ]6 J+ U* b: n1 R6 F7 I
  97.                 return 1;
    5 J) F, ^8 m; a$ a' m
  98.         }2 s# p0 F  @$ u8 v9 P
  99.         printf("\nNew parameters: \n");
      l7 S4 Y, h- t0 [; `8 x! i7 Q4 d" l
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 H6 @% O4 X8 I& U0 E
  101.         printf("  STBID: %s\n", stbid);
    5 O! p1 ~7 @* c% D
  102. ( E* @- ^! \" M0 q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    , \  w; D# V! w. Q3 |
  104.         for (;;) {
    : M# M9 j- i& F* g
  105.                 c = getchar();
    : R( ]  F1 t5 y$ Y$ b. w9 Q
  106.                 if (c == 'y' || c == 'Y')3 H) G9 ~" N* `
  107.                         break;
      N3 V+ K2 d8 @: P
  108.                 if (c == 'n' || c == 'N') {
    $ p: h9 u1 V" A+ y; S. g
  109.                         printf("\nAborted.\n");
    : d3 k# O. _- R* `9 R3 G+ K
  110.                         return 1;/ |# u/ @1 K% w; Z+ Y
  111.                 }+ x# p; `- J) b
  112.         }) c7 S- r$ o2 r! z+ s: U, l; C  l
  113.         if (writeparam(mac, stbid) == 0)
    ) O9 y2 j8 ^, t* k
  114.                 printf("Parameters changed.\n");/ H( X- S+ p3 N. b

  115. - }" F, I2 J2 s  `" p
  116.         return 0;
    $ ]0 [$ ?5 A. Z: k- y
  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
% d5 M5 Q$ i% @在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
3 K# ?3 b9 E$ M- W% E
你用的编译命令行格式是什么?
: ]* F0 u% ^8 \9 A4 l1 R8 g; ^4 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客服返回顶部