查看: 17412|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 o1 ]# Q# o: F, a9 f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! V  p% B: _. f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ V! D# b  V# y2 t- ]5 J9 g
usage: himr <address> <value>. sample: himr 0x80040000 0x0% u7 f+ c2 M7 N* X2 a  z- s' @

7 }2 i/ D$ w6 Y& T5 z/ P
6 O: L: v, E( Q- C" T! Q. ]/ e4 }不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
) z/ ?8 _- G# J$ ?, n6 G
& o7 |7 L" F% ]4 a4 T, D4 V$ I补充内容 (2012-3-8 09:42):
2 S- A6 o% {1 n, l2 U9 x3 Phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, X. F; B0 _' ~$ @3 V这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
8 [$ i9 G. Y& u
$ |9 K; X8 K+ z. h! k- {himr <address> <value>. sample: himr 0x80040000 0x0/ X1 ~1 }# W% _7 t

- i% i. |. a' ]( y& J# L例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& B5 U4 V; ?6 r, o. [$ N+ ghimr 0x80040000 0x000 F  ^& u4 V" Z5 }) X
himr 0x80040001 0x11/ s7 F6 j4 c! t6 ]
himr 0x80040002 0x220 n7 U8 }; x; |; y, d
himr 0x80040003 0x338 r/ n' d  Q8 s
himr 0x80040004 0x44# i' b2 I4 C1 d; t7 \( @3 G# r! X" }
himr 0x80040005 0x55
; x% v- Y: K  v7 o/ C
, b2 D/ c4 N( _6 SSN也是类似。" q6 O: ?. y1 Y5 A( q: t% x

9 J0 d4 a+ y& l: k现在主要是,谁告诉我们MAC和SN的地址?
) s2 o& C8 Z* O3 C- M' s' v
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 F8 L0 v/ ^4 u  K+ Z一直想找到运程修改MAC和SN的办法,苦于无解啊

" A7 j; j$ k+ V* T, s3 m  @; ~7 F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - p3 A# h0 y9 B" b

9 g/ k$ K/ Q+ u8 u/ D% a修改的代码早有了。到今天不会编译。2 t8 q  N3 i, A0 Y' A0 g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 ?! g" @( q  g
  2. #include <malloc.h>
    0 l$ [- ?4 i; L6 A4 F, e
  3. #include <sys/types.h>3 Y" z: a% i1 a/ @4 G. `3 H
  4. #include <sys/stat.h>6 ?* O2 \% r) m8 O
  5. #include <sys/ioctl.h>5 a- q. q# y! A
  6. #include <stdio.h>- b( d* i6 b( i5 g; m
  7. #include <string.h>2 y, k1 b2 Z  ~

  8. : S1 \/ b) I! [
  9. typedef struct {# o) g3 d, f+ g: L7 W. m6 s4 |
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 k  r4 f* L9 S9 E. s
  11.         unsigned int        sub_addr_count;$ c, M9 W1 d3 q* U* ?
  12.         unsigned char*        e2prom_cmd_data;9 s; F% Q" X" }# E+ M
  13.         unsigned int        data_count;. e. s& s$ v/ E: I7 U5 m; h
  14. } e2prom_s_cmd;
    ) ?* X8 e$ f) F9 q. i& J* w
  15. $ k6 B  g; B. F0 h8 t, a) C  `
  16. #define E2PROM_CMD_READ 1  L0 G) F  ^4 k" |: [% M/ M( W6 T
  17. #define E2PROM_CMD_WRITE 2
    " c  Y5 @! u, C) K+ W7 b1 u/ ?, d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      Y# K" u4 {, l0 G# l5 d

  19. # L: r/ X" U: q7 l8 z9 W0 k
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 d4 T: z- i5 e3 N) D, |
  21. {
    5 Q8 v& `, I. Y3 v- |: g
  22.         int fd, ret;
    " v5 }6 ~* P: N
  23.         e2prom_s_cmd arg;
    : \# A" s0 I" d& }
  24.         unsigned char buf[0x18];$ Q% j6 h1 f6 Z0 b
  25.   Y' r5 ]  x$ A" g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ k, O$ r- q" ~' g' j
  27.         if (fd  < 0) {  N( L+ Z) ?+ }' Z+ e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* M3 d% k6 ^0 w$ n, ?3 j6 ]6 c
  29.                 return -1;
    ! h( n* k1 c# J" N' o9 Y, b' W8 `' A
  30.         }
    5 f1 j& Z$ Q+ ^
  31.         arg.sub_addr_count      = 2;
    : V- _7 W4 \& V) ~
  32.         arg.data_count          = 0x18;" Y; }& K6 p0 I7 \, P  ~" [
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    6 Q$ S) |6 J  ~; w# S8 f
  34.         arg.e2prom_cmd_data     = buf;
    8 [- Q2 m# B- n8 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    9 V3 b: F: k# t/ ^: z
  36.         if (ret != 0) {
    8 ?; g7 F7 a6 `. N0 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# T" |9 Z7 I& b8 s+ T" _4 v4 e& ~
  38.                 return -1;
      S9 b0 v" Q% v: H) h  ^; b
  39.         }
    % L) `1 _% m) b
  40.         memcpy(mac, buf, 6);
    : B" d5 P. w& K( V
  41.         memcpy(stbid, &buf[6], 18);& C2 X  |  m( W6 a- h: ?
  42.         stbid[18] = '\0';) W" i+ R9 F. @
  43. + n, j6 C$ ~, N% x6 u  _
  44.         return 0;8 R; l$ L2 x& O# |: N
  45. }) j2 Y& C; L2 n2 a+ e

  46. ! ~4 i" v$ M; `3 G7 {9 o; e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ( T! Y! A$ o& Y$ O
  48. {" s; _# d0 B; F+ I; F; a
  49.         int fd, ret;
    2 G( P. V9 ?8 L6 c# b+ @! g, L
  50.         e2prom_s_cmd arg;
    0 {. ?% |! K: ]$ P7 }; }1 Q: b
  51.         unsigned char buf[0x18];5 ?- b! t* ?$ E* H+ S

  52. 4 Q  R7 x3 _& J  [9 R, j
  53.         memcpy(buf, mac, 6);8 a" @+ B/ h5 G" }( B& {9 l  E: p
  54.         memcpy(&buf[6], stbid, 18);* D+ c0 Y+ ?  c/ h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 y5 T- G4 X# v$ ^" G! O; t) M/ j
  56.         if (fd  < 0) {
    1 h$ }" R/ `8 K. a' _2 V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 f, w9 I5 l9 L8 b# f
  58.                 return -1;
    9 b5 F4 B& e4 o* Z
  59.         }
    4 r  H7 M/ K! K2 K1 W5 P1 D
  60.         arg.sub_addr_count      = 2;# h0 o6 n+ e  U5 K6 \  W5 U2 P
  61.         arg.data_count          = 0x18;
    . y& s2 Q3 q: d6 g& _) X- Y/ ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;3 d" Q, {. z7 u8 ?6 R2 N. _
  63.         arg.e2prom_cmd_data     = buf;& t% @0 v8 U# b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) ]3 @1 v$ n# s. k2 l, E
  65.         if (ret != 0) {
    , ?, Z) [) C! }) [$ z0 K; s
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : V2 A0 c. X' ^8 F# C6 `' ]
  67.                 return -1;1 V: P& `! ^* }: L( G" K
  68.         }
      z) U2 z% _/ w. ]; v9 m$ a

  69. 6 K8 g1 `2 c5 Z. k$ d, t0 M& R8 i& }
  70.         return 0;
    / E5 s4 v9 [8 h& H) J5 l8 |
  71. }
    % z. l  U- ?7 ^: A  w: @! N

  72. # h. k! m" f* h
  73. int main()% p+ l- J# T# a1 `- u! [
  74. {
    : h" y$ e8 J$ E# c* V; z
  75.         char c;) s& ]! |( v5 _6 A  M$ O* z5 u( c
  76.         int i, macs[6];
    , n, e2 N; z  v* `  ^1 P1 Z3 T
  77.         unsigned char mac[6];/ G8 H/ u1 E' v1 h
  78.         unsigned char stbid[256];
    9 ]: D3 o; E7 }) w0 h2 k
  79. ; S. P4 o9 M; N( V- g+ G* |' X
  80.         if (readparam(mac, stbid) < 0)
    9 x9 T% G, @  a1 o' N* P( f
  81.                 return 1;
    1 C2 F0 R2 F' V2 T# w
  82. $ E& w9 R. _4 ], Y; M- P6 H' H( J- l
  83.         printf("Current parameters: \n");
    0 g8 f1 K, U$ V2 C1 p9 P( A1 w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. S6 {  A3 Y. C$ {
  85.         printf("  STBID: %s\n", stbid);
    ) s; J4 I7 J% ~
  86.         0 P/ `1 O3 q3 d6 w$ G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , d; v( Q' t, ?6 a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % R, t9 m  k; x; L; K
  89.                 printf("Input MAC error\n");6 @0 n- U8 C  H7 X
  90.                 return 1;! V) l6 ?3 Z3 G& P5 H$ [7 ^
  91.         }
    - H  Y8 q. |5 M$ G. Q8 y3 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ Y% S, r+ N( K/ g5 b' U/ U
  93.         printf("\nPlease input new STBID: ");
    ' O2 t/ [& f8 S# I+ z0 @8 c
  94.         scanf("%s", stbid);
    $ H. b) ~# I  D7 u! \- ^
  95.         if (strlen(stbid) != 18) {' L% d! c( o+ T% H- U0 L
  96.                 printf("Invalid stbid\n");, E: |/ w3 N5 B! W+ V$ E% X2 ~
  97.                 return 1;+ W, [# T8 z0 \+ ?8 M4 g
  98.         }
    : D+ F0 I, Y8 i; k: ?  X
  99.         printf("\nNew parameters: \n");6 q& x0 h& L# }) T8 \, f+ R' d) t5 C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! B; x& j6 k0 a! J2 f/ ?
  101.         printf("  STBID: %s\n", stbid);3 X* O8 b% S: w! _
  102. . F& u& ?, B- @/ Y9 T/ @" C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ) z3 N7 z" r. N/ T! q3 K1 ?* q0 e3 X
  104.         for (;;) {
    ; R5 l6 T. ~0 A0 K$ b
  105.                 c = getchar();6 s, y* O# P* X" k9 \5 E
  106.                 if (c == 'y' || c == 'Y')( c1 u( t. b6 }* W' N
  107.                         break;/ _1 v, L8 ?, D+ r$ B" o+ |
  108.                 if (c == 'n' || c == 'N') {* B" c3 s3 f2 H( C4 k  g) ^. X$ r
  109.                         printf("\nAborted.\n");" c0 y* ~# A4 o% W, p3 E
  110.                         return 1;
    : u* S& [5 ]/ {  }# N6 L
  111.                 }  C3 f  R, U# c) t8 }! r% E
  112.         }
    1 l0 _& \5 I5 t1 |9 E
  113.         if (writeparam(mac, stbid) == 0) : I0 Q) j* f+ e( b# e: v" s3 I
  114.                 printf("Parameters changed.\n");
    * u' R# u3 Z" W' r. D. E* D6 O

  115. - p# W2 j% [/ `& b: y5 @
  116.         return 0;
    . |# l% o5 J" ^9 ~! W# w$ `
  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
: D  G2 I  l% J9 ~$ H, y, s在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: @+ n8 \) C7 \. c4 t; [. C7 ]
你用的编译命令行格式是什么?% w; w* @/ ]0 m
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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