查看: 16031|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    8 `. P! K$ z8 L2 S; D  f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / H3 W. Z* b& B% ~2 o" e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 t& V' j# |4 n
usage: himr <address> <value>. sample: himr 0x80040000 0x0/ e/ _0 H7 |) c& i, `! T+ q- M
! r8 k' U# }; x" r, ^. \+ y
1 r! {0 @( L8 p; t2 c* n8 x/ }9 K
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: o! I, t5 x( }7 a" E& I

8 [2 X# L$ ?4 `0 D4 V补充内容 (2012-3-8 09:42):9 P7 j8 F! q% |( _! G. w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- B/ x/ Z5 q. L: c6 C这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。: n2 I% O1 b7 k: r; k6 F
7 A/ M2 s$ e$ F$ f; p
himr <address> <value>. sample: himr 0x80040000 0x0
) y4 H: r4 A  d( {- P2 ~
' {; |1 V; M, C( N例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# w" e- m' K: w& }: C) t7 fhimr 0x80040000 0x00
7 l7 r* Q# s! X" x" D+ Xhimr 0x80040001 0x113 F2 Y- H+ v! v' K( O; l7 F
himr 0x80040002 0x22: L* J- I+ D6 K. N; J* }
himr 0x80040003 0x33. v% r7 V; j1 [1 {/ j
himr 0x80040004 0x44
0 d2 t6 i5 v7 P" g% B# m0 v4 xhimr 0x80040005 0x55
2 o9 @7 K1 m( y6 w
) ]% H& Q( G4 z7 @- f: dSN也是类似。
6 Z; T) n/ ^9 ~- W6 ?* B# Q! L. d3 \" \" m! b8 @9 J
现在主要是,谁告诉我们MAC和SN的地址?* e+ G3 M* L# u; w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 g2 `" p! y6 g' P; T, }- t
一直想找到运程修改MAC和SN的办法,苦于无解啊

7 n* f" \5 a; R源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 * c& Y) ~. ~+ h! o* d

" l& K/ i, Y: Y( H修改的代码早有了。到今天不会编译。
2 ]( Y/ A/ G- P( [5 a& m需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 @3 Q7 i7 U5 U' {
  2. #include <malloc.h>. W# _; y4 Y# |" U* T
  3. #include <sys/types.h>6 }  \6 Y0 C, Y6 o+ k' t
  4. #include <sys/stat.h>1 |0 A; d- O  Z8 v! q
  5. #include <sys/ioctl.h>
    , T* u; Y7 y% W8 Y  Y9 s% F
  6. #include <stdio.h>
    2 P- W: c7 Q: t: }" L. Z( i5 p4 A
  7. #include <string.h>
    ! Y1 s3 r# r( j- n8 T9 d) J

  8. , t) z, }& {$ d8 U
  9. typedef struct {: n& o7 n1 ?. g* s3 U* b
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 B6 a) b/ H% [* C5 h& D
  11.         unsigned int        sub_addr_count;* }+ Q/ Q$ y9 K/ K
  12.         unsigned char*        e2prom_cmd_data;) f4 f& f2 U$ n9 h: c3 X/ M- M
  13.         unsigned int        data_count;
    ; U4 W3 q# J! @" t% Y9 M: |
  14. } e2prom_s_cmd;' h" F' z4 q  p2 d8 T2 p2 V
  15. / J( `4 \8 g0 ^+ F
  16. #define E2PROM_CMD_READ 1
    + [" h) s# \! v7 W+ o2 W* a
  17. #define E2PROM_CMD_WRITE 2
    / K! E1 z  y1 I' g" G& I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' |- V- |5 {0 k6 S. e: S; E
  19. ' k1 E/ P; a8 q2 D+ N1 m( w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ w+ F, e+ Q! O
  21. {
    $ b+ f/ e# a2 w7 |7 K3 g
  22.         int fd, ret;
    1 |/ ?. k# \. L2 Y$ ?# l
  23.         e2prom_s_cmd arg;
    ( X& T6 y7 b2 p1 S
  24.         unsigned char buf[0x18];
    / C( G! |+ j  j
  25. 2 x1 k  V  j+ E; o% i) _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: N8 U" U' J5 b" E* a. ]
  27.         if (fd  < 0) {. C7 `' Z3 M; Q, P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! ~  Z  G1 k( S; Z1 @( v
  29.                 return -1;
    & y* Y6 U5 O& q+ O" F0 x3 p7 a
  30.         }8 [* i" z; [7 |3 P6 ~/ k1 Z
  31.         arg.sub_addr_count      = 2;
    : K9 W) f. S; H( G$ N) f
  32.         arg.data_count          = 0x18;
    ! ]" g5 l' S2 ?6 n8 v2 I- l! X! _
  33.         arg.e2prom_cmd_sub_addr = 0x290;) Q, n1 g! k: \/ u' @
  34.         arg.e2prom_cmd_data     = buf;
    2 x. R/ y1 x& P1 E) g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! h& m' {" V/ W7 T
  36.         if (ret != 0) {
    6 m: f8 B# @+ s& c' g; N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    5 u7 {+ E1 H9 r5 ~3 j
  38.                 return -1;/ \& g3 O4 d  p2 J8 Q4 B
  39.         }
    8 P" ?1 a. P6 A
  40.         memcpy(mac, buf, 6);
    9 d, R# @  K+ U9 J1 v6 j
  41.         memcpy(stbid, &buf[6], 18);1 u! B: E6 ?9 G! {- {0 M7 L
  42.         stbid[18] = '\0';
    3 V* e! n5 z4 ]8 I* u: ?$ q; Y
  43. ! H$ a. J' \6 L+ X! C
  44.         return 0;
    3 F7 J9 v# D& W6 F% b" T* O' o
  45. }) [. \5 M. q, V
  46. $ Q4 F, I* _. \8 I* c+ H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! g+ T2 [* l4 k% n) h
  48. {
    3 q* B' m$ B6 I" V9 Y
  49.         int fd, ret;( k4 Y6 G5 F0 e, a% n' n% ~$ z
  50.         e2prom_s_cmd arg;
    % [5 u7 Q. s% D9 X  z) N
  51.         unsigned char buf[0x18];
    : |, R1 [/ z# ?* @% }

  52. ' F, Y1 f9 q% \& @% u
  53.         memcpy(buf, mac, 6);7 ^# t( r& V9 |
  54.         memcpy(&buf[6], stbid, 18);; h% X2 \. t( l* b5 D$ w  f3 f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ e5 i1 [* @6 V
  56.         if (fd  < 0) {# [/ g! ?& J" k/ S$ C' z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) B- [# T7 b& [8 D; g
  58.                 return -1;& \4 H2 h. b/ m3 u5 }
  59.         }, p- ~8 g9 o) t5 R( y) p7 K' U
  60.         arg.sub_addr_count      = 2;1 w& q' V8 I' S' q/ B
  61.         arg.data_count          = 0x18;9 ^  n5 r' k0 ~; C( H, l4 b
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 g/ n: @5 V8 C
  63.         arg.e2prom_cmd_data     = buf;; h5 B8 S* {/ g( }1 v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& j& r1 {$ p- A" M  t9 I
  65.         if (ret != 0) {
    6 v& {2 C/ Y' ~7 z/ p; ?: B  m2 z& I, x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ( E! Z2 M# W2 J9 {+ @4 D
  67.                 return -1;
    3 R- x, j  w+ \0 H5 _
  68.         }3 e8 ^, |, ~# h. f  k5 N: `" U- F5 {
  69. 0 [* x9 ^6 k8 d& L
  70.         return 0;
    4 ^+ `7 l* `* o* t
  71. }8 ?7 \% k! F4 v5 w" C: n( H

  72. ' {3 M5 d* {; x" l) W; a: H7 v5 W9 r
  73. int main(); s8 b- N! L8 ~+ O0 M& r
  74. {+ c) e! i4 e0 ~4 G# i1 P( ^
  75.         char c;0 v- Z' x9 `8 c# o
  76.         int i, macs[6];
    ' u; L2 {7 T  Y& r! B) i' R
  77.         unsigned char mac[6];4 c+ @: U. z9 i( j% o& i
  78.         unsigned char stbid[256];9 D/ n9 ^' f2 t( _8 W

  79. . D6 x8 n0 D/ U& j4 M
  80.         if (readparam(mac, stbid) < 0)
    1 w2 [& _# R: |& B. J- z
  81.                 return 1;& w, Z( u' k2 `' s
  82. + j/ n# H6 W  S8 `
  83.         printf("Current parameters: \n");
    5 Z7 V9 O! m' n  g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " {% ?/ l. [) s% j  @1 o
  85.         printf("  STBID: %s\n", stbid);
    : n7 k. R8 p9 L: ~) l
  86.         ; ~( r4 ^% W  O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 H2 x' \4 j( h
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 O9 n8 S. d2 q5 f" g
  89.                 printf("Input MAC error\n");& B, }3 I, Y: i( f, L' S
  90.                 return 1;
    & P" i- Y& @. w/ `/ \+ T3 Z( a' X$ s, D
  91.         }, b; ~% Z3 y+ T' M* G
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# J5 M1 n$ s* C. _! p" _! k
  93.         printf("\nPlease input new STBID: ");1 A* Z7 b# v& T; H9 [- V
  94.         scanf("%s", stbid);
    : X' Q5 [' H* I% t+ x
  95.         if (strlen(stbid) != 18) {
    0 d' d& r! w2 z" @% z3 c3 \
  96.                 printf("Invalid stbid\n");9 f+ j; }' @" X% L- A$ n- j. C
  97.                 return 1;
    0 W6 s# f4 W4 L6 O) R" O
  98.         }2 l& y& @; X3 T% H
  99.         printf("\nNew parameters: \n");
    ( Y1 P' O; p0 E/ w: j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; q1 \- U) g1 N) G  x: h7 g
  101.         printf("  STBID: %s\n", stbid);
    . P1 t9 H7 L+ i" E$ C" P
  102. 7 h: K# x, c) c# |
  103.         printf("\nDo you want to change paramemters? (y/N) ");) Y+ \4 J" z6 B
  104.         for (;;) {
    7 d8 M) s, K- P( M& }& V
  105.                 c = getchar();
    4 g) y: _/ o+ G2 G, ~
  106.                 if (c == 'y' || c == 'Y')
    , E6 [+ |! c7 p7 f9 B- n
  107.                         break;
    / U. X! N+ M* i/ p+ g- \0 J
  108.                 if (c == 'n' || c == 'N') {
    ; M0 V/ k0 C1 s3 B
  109.                         printf("\nAborted.\n");, g/ Y; C4 R* s3 K2 Z6 E! b2 s
  110.                         return 1;
    ; R9 m" z, A1 U* w2 x0 f
  111.                 }
    / H* R9 |5 [, N) p1 [- k
  112.         }
    / T8 O3 c) q  Z9 G3 k( ~( y
  113.         if (writeparam(mac, stbid) == 0) & N' w  E; N, q2 I2 C
  114.                 printf("Parameters changed.\n");
    : N' ]8 L; o4 r3 Z# Z$ B

  115. ; }7 ^3 H. e) H' ~" K* V/ ?2 z7 {* E5 w
  116.         return 0;
    7 L+ j3 h, W% {7 ?! ]
  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 / g8 E* a& Z, |7 P  O% b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 F+ ^4 A/ }- c) j
你用的编译命令行格式是什么?: l) K+ S- ~% ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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