查看: 16936|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " S: d; D6 j2 u0 n8 Y: v2 [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; Y3 p8 p/ X# d/ f2 z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 U, Y  F  A7 D6 r/ p
usage: himr <address> <value>. sample: himr 0x80040000 0x0
( k1 P- }* I) w3 Q6 g5 ^8 @9 B: b/ |4 p

. Q1 T4 z$ l. W/ t' ]/ f- b* e! j不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- O8 i3 x0 E0 W' D5 e6 a

7 V5 E- z& ]: ]& p8 j% U7 u# M补充内容 (2012-3-8 09:42):
( \$ E! X* m4 jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 {( x. U9 m5 [; Z1 z" ~! `6 m
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。5 H) ^+ ?8 a# e# }+ k

$ G2 D* Z9 ]' i5 Rhimr <address> <value>. sample: himr 0x80040000 0x01 j6 O( g4 w  ?" l
7 a% z+ E( d4 S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 ^+ d4 k5 [5 c/ \6 u1 X! @" `
himr 0x80040000 0x00
1 c) a; b# z* H+ c( chimr 0x80040001 0x118 m' R1 F+ y8 T% _
himr 0x80040002 0x227 |6 w0 y# t2 J
himr 0x80040003 0x331 T% U0 x8 @! P8 n
himr 0x80040004 0x445 _5 X# Z5 }- U- \: Q+ `; a) n+ n! m
himr 0x80040005 0x55
$ b8 w' ^+ |  Z% T
7 b) ]8 K9 s) f5 j, kSN也是类似。
4 e5 ?% a$ c5 s: O
1 |  p) H" Q  z% e, c( H现在主要是,谁告诉我们MAC和SN的地址?6 C* m0 t) w+ u4 c7 m6 a7 O
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 [2 Q6 _/ x& Z0 r0 Q一直想找到运程修改MAC和SN的办法,苦于无解啊

& B, ?( r/ Q! K, F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- o3 ~. S  D  t2 M' {3 p
3 K, _) V/ e1 b- {% e修改的代码早有了。到今天不会编译。7 z6 t. `, D  O
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) Z' c9 I$ `; r
  2. #include <malloc.h>1 P& x7 H) k- d( P( ]; l1 [
  3. #include <sys/types.h>7 j; W- `9 N0 L) H- z6 K
  4. #include <sys/stat.h>
    " Y: M- {7 a, I. Q* m
  5. #include <sys/ioctl.h>
    7 R- u+ p  R! q3 Z
  6. #include <stdio.h>; X1 W( P& p3 e& m- D6 Z
  7. #include <string.h>* K4 `9 T5 c( h8 |9 L* X5 V: }1 a

  8. ! F; T9 w: `/ i7 X3 {3 d* ~
  9. typedef struct {
    . ~' u3 m7 A1 \
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 T' X3 g& \8 O- W: @# n% y  l
  11.         unsigned int        sub_addr_count;
    ) w7 |3 \. T2 Q4 O: Q  E6 z
  12.         unsigned char*        e2prom_cmd_data;
    9 e9 s+ r1 {% u+ H! b; J8 N  {  A
  13.         unsigned int        data_count;3 C3 C* H  O2 @. G7 W2 U8 T" [1 B: {
  14. } e2prom_s_cmd;# c/ H, z* p8 Z5 o
  15. , y# q6 _2 O4 o' r7 ^* ?1 q
  16. #define E2PROM_CMD_READ 1
    4 L4 |2 W3 D& ~# o0 T% S- M
  17. #define E2PROM_CMD_WRITE 2
    1 G, ^6 k6 k0 Z6 j( I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# p8 N# V  |' c5 [6 w; n+ g

  19. + y5 L! I0 C' I1 o( O* D" i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" Z  e# d  v( A# Y, x" z
  21. {
    ' F. m1 ^+ Z* W+ U, F: M2 f
  22.         int fd, ret;/ t9 O% |' g8 l6 L
  23.         e2prom_s_cmd arg;7 a: E6 c6 d5 r! t8 o/ }. S$ s
  24.         unsigned char buf[0x18];
    ! |8 x9 `' n! {$ f( @; A0 ^0 P

  25. : W  s& m5 ^3 q1 `( q! K# O+ ?( ]) Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
      d% S( t$ f+ b3 O5 X8 C( k6 i" ?0 w5 V
  27.         if (fd  < 0) {* d9 O; P' J1 ~7 z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);* t% F8 b3 m9 }1 K! p6 J% N7 Y. b# o
  29.                 return -1;' F: p$ a) d. ?. B1 H' w
  30.         }# F4 `# t7 S9 w/ H. H
  31.         arg.sub_addr_count      = 2;8 G- S- P$ G: V9 i/ b" w6 B8 [
  32.         arg.data_count          = 0x18;
    + m$ ?1 F* ]' O2 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;% i+ Q* i+ i" e/ D% p
  34.         arg.e2prom_cmd_data     = buf;
    ! O( ]% a; t$ B. |, i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);7 F8 N3 N( i) E5 N. _9 }
  36.         if (ret != 0) {9 V1 ]5 k+ w$ f% l  f
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * E' \: Z5 }2 j
  38.                 return -1;
    $ t8 t3 T7 S0 C" k2 r% }
  39.         }/ Z  F! E+ Y3 R3 r- v
  40.         memcpy(mac, buf, 6);
    ' r3 N+ G: H* i" D! q: q% M
  41.         memcpy(stbid, &buf[6], 18);+ [, k. |5 O: z4 e# ]
  42.         stbid[18] = '\0';# _; I+ u" s  [
  43. , Z4 `7 P6 X- l0 }- _3 \+ E: Z
  44.         return 0;. w5 u2 O  U& @! Y$ G: l" g
  45. }
    8 g# g+ F7 ^: N. R% p" f# [4 }

  46. . o' D. a4 C0 \+ |8 M8 H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : m/ p2 E& t' u% c. p7 ^
  48. {6 ]2 v1 e! k( \
  49.         int fd, ret;
    $ M, {, x+ h" C/ a
  50.         e2prom_s_cmd arg;: o5 S+ b5 g" @& r
  51.         unsigned char buf[0x18];9 Z( o/ _5 L7 p/ S/ Z" \; K% J0 B

  52. / y2 F0 ?: [. Y; i9 p
  53.         memcpy(buf, mac, 6);
    ( t$ _/ A, U# a) k9 G9 C! _* X! K. j: M
  54.         memcpy(&buf[6], stbid, 18);
    & Z, i3 ]6 c  W- i$ m" F* v
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      m, @* F1 u4 W; M& w
  56.         if (fd  < 0) {2 r; y$ t( o, @2 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, l" R! I! ?4 h3 _0 p  p9 b
  58.                 return -1;2 J, {1 q  M! v1 \" p9 v
  59.         }
    ( @: K  i, c: V' x3 I
  60.         arg.sub_addr_count      = 2;
    - v" \3 s3 F: E' ?; l- `7 V# G$ e
  61.         arg.data_count          = 0x18;; i7 r4 H( n0 c1 S% O' {3 v
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 x% O9 q6 A( P- ~9 F  m# [
  63.         arg.e2prom_cmd_data     = buf;
    2 H, Q- J" c7 ^8 S9 h+ w- k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 R- p; x2 A9 y% q# C! \0 q
  65.         if (ret != 0) {  i: n: n3 E0 t) u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);8 E1 T0 P. X$ M3 I9 k
  67.                 return -1;% W# w  a/ ?( w- s; A* p) @$ d1 c
  68.         }
    ' U; @0 |# E- C' @' j, R+ D/ J
  69. 7 g+ N+ t* g  N
  70.         return 0;2 A1 N( q. X; y* ~0 e  v
  71. }
    7 d( @" l( l9 o% j6 g
  72. , Z3 |8 h7 g% s/ p& Y% O' f
  73. int main()
    & `8 y# @. ~+ D0 w+ W
  74. {. N( c5 p# \% U7 I
  75.         char c;
    ! T6 Z- X) U; ]
  76.         int i, macs[6];
    ( y- h9 N7 l8 g- ~7 _. U
  77.         unsigned char mac[6];) Z/ x. d8 r6 l( E5 M! C, F* m
  78.         unsigned char stbid[256];
    4 f- w6 F5 b7 W
  79. ) t. X/ a3 A7 Y5 G1 e9 p
  80.         if (readparam(mac, stbid) < 0)
    - \" R( o  A' a2 M2 L$ V, ^8 w5 E
  81.                 return 1;1 C' y9 G1 x+ K! Y
  82. $ @1 J+ W9 K- q2 _
  83.         printf("Current parameters: \n");
    : I/ B0 t* N0 U& g$ C8 J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  ?1 \( m& v. }( K8 h
  85.         printf("  STBID: %s\n", stbid);
    ; n/ r. l- Y4 j) g6 |# n2 d& l- R
  86.           m2 E8 g, J3 L0 W- X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      ^- h# Q* X0 p% l7 W4 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' ^3 q% R/ A  E8 d/ [. N  _
  89.                 printf("Input MAC error\n");
    0 ^( e+ H' D8 ?; V# G) W6 b+ {
  90.                 return 1;
    ' a- l  j; M/ m8 Y7 L
  91.         }3 W7 j( c! V) O, Y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ C6 M! S2 `( h! Y+ M9 A
  93.         printf("\nPlease input new STBID: ");
    ) z: \, t7 Q, s) @7 c! B
  94.         scanf("%s", stbid);3 z) |$ q5 L9 |- ~" i, U# [
  95.         if (strlen(stbid) != 18) {
    * |3 r/ ?5 L+ R2 h& _/ w
  96.                 printf("Invalid stbid\n");
    - M/ Y* d4 J, e. s9 ]
  97.                 return 1;7 k+ j  h9 p% C7 ~! v7 L# n4 ]* e2 _
  98.         }
    3 w& E% e6 ~/ i( G$ \) U
  99.         printf("\nNew parameters: \n");7 S: n. @9 A: U4 c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) f4 x2 k. V$ N1 ]) H
  101.         printf("  STBID: %s\n", stbid);) v( E# n- ?: x* ]
  102. ) h  w1 v2 M. H8 D$ j9 R4 S& n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ o; H: t+ z3 T5 N  G- e
  104.         for (;;) {
    $ k9 l+ B" j, y2 }- y/ r
  105.                 c = getchar();' m2 m, C) K' s
  106.                 if (c == 'y' || c == 'Y')
    / S3 c. N( s- Y: n' S7 C; R* @
  107.                         break;
      q! {& q6 ]2 L; E$ ?6 B- ]
  108.                 if (c == 'n' || c == 'N') {
    : C( O& l3 m4 H; q2 [3 F' E0 s4 E
  109.                         printf("\nAborted.\n");
    ) `# }  w9 E, ]$ P- b8 o
  110.                         return 1;' @6 L; d2 f- `( h9 k) M# z
  111.                 }
    9 |3 @9 h* N; `, q4 }7 @+ R
  112.         }8 d- p6 u- X$ s9 `* a$ ]
  113.         if (writeparam(mac, stbid) == 0) ! m% A% B9 q. |
  114.                 printf("Parameters changed.\n");
    1 A% e5 r! ^, X5 X/ q" n

  115. 0 q% W! J& \) z) J4 l9 X, @. B
  116.         return 0;
    * f& j% D3 ]/ L. v  `- L- K( c6 L1 {) 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
( O. K/ T* k& T# y' T在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
6 |. f- E$ L7 O" z; e
你用的编译命令行格式是什么?, Y% W8 S7 C, f! b
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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