查看: 17576|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- H/ z( n& K4 l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ N5 n3 D  F, b, w1 d) e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' B0 s8 j1 ]3 d4 Z4 K
usage: himr <address> <value>. sample: himr 0x80040000 0x0& x/ W5 ^- j( [* \2 m( o
7 j- C. R/ O2 ~7 T! v7 I* y

. U4 G$ L6 S! ^不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! f/ @" D6 X4 G( {* e# a6 y8 T( R1 g+ h$ A
补充内容 (2012-3-8 09:42):/ ?1 U, L: A1 u' e# O0 Z5 n) T7 y- I0 L* |
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
, Z- t, ~9 H, v/ K这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。* `& r" u6 g  f6 K' p
% ?; P. e3 L% X
himr <address> <value>. sample: himr 0x80040000 0x0; q4 p' r9 W0 f* \3 I

/ F( X; t7 P1 M$ E2 o例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. \: {1 F0 z4 `4 @) _
himr 0x80040000 0x00
( ~" \1 {0 J7 e8 _0 D( }himr 0x80040001 0x11
  A$ ^; M- M6 D4 Qhimr 0x80040002 0x22, H0 q; X4 W6 q1 v& c
himr 0x80040003 0x33- I9 t- F' l* @2 z1 y" Z7 h3 l/ c
himr 0x80040004 0x44
( G: W( {( W! m$ {himr 0x80040005 0x55
$ f5 ^4 x0 S# N  Q7 Y/ o5 j# U' V4 V
; U* C  t" j0 a$ y& dSN也是类似。
  F4 G; A) _% x; v7 F
7 i/ K7 y% a4 h+ D  e4 @现在主要是,谁告诉我们MAC和SN的地址?- F$ h8 z( O, N
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; t' s3 }% j/ Y5 F6 A一直想找到运程修改MAC和SN的办法,苦于无解啊
3 S  K8 w1 E" e* f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 W. D4 I! H5 x7 Y
+ N1 n+ r) {6 ^, k; g
修改的代码早有了。到今天不会编译。" l' V. S& @5 D' \& ]1 u/ C0 c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % {4 P/ a" o5 W3 f
  2. #include <malloc.h>
    $ ?3 e# `) Q7 ]/ V6 v
  3. #include <sys/types.h>6 U5 D& O$ t8 s8 M8 a
  4. #include <sys/stat.h>; |& E4 n1 ]7 S) h8 l2 Y# y
  5. #include <sys/ioctl.h>0 w7 p3 c( v  c' r
  6. #include <stdio.h># x! n" u# n" N* e3 A
  7. #include <string.h>
    9 @7 V0 B! I# H8 T9 S" x$ s
  8. ! \: Q; R% T5 r/ c& x& l& p2 k
  9. typedef struct {+ ?7 [/ X. G$ U+ {; S
  10.         unsigned int        e2prom_cmd_sub_addr;! V% e9 E) T7 H3 z2 F4 ?7 O
  11.         unsigned int        sub_addr_count;! x& _4 K1 j% [9 i6 M
  12.         unsigned char*        e2prom_cmd_data;
    7 l$ h7 k# u7 J% q/ o
  13.         unsigned int        data_count;) g7 w# H+ u8 v9 J8 j. X1 u* L- m
  14. } e2prom_s_cmd;% l. m4 u) b4 F- v! q3 |. Q" I9 j' o( U" M

  15. $ ]4 Y! D, \8 f- |& `3 _
  16. #define E2PROM_CMD_READ 1
    . p! f( n$ k0 G1 Y8 x' M+ s
  17. #define E2PROM_CMD_WRITE 23 a, V/ A3 |. n  |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . ?0 b, _, s6 Z- y( M5 K/ \# H/ g

  19. 8 o& f! ?# j( l$ j) N
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( G# V% I! K( Y# K) P( {- S! ^7 o
  21. {1 B# ~; l4 F+ `) Y0 @! V$ s2 f
  22.         int fd, ret;
    , Q: I( j2 ?( k. L3 ]  ?
  23.         e2prom_s_cmd arg;
    - p$ P; x3 u. a) ?1 W
  24.         unsigned char buf[0x18];
    / c7 i  R' X; T4 J  Q
  25. $ `! K* M* i1 _. O3 B/ B! V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " U0 K, l  y. O; v1 g' y- D
  27.         if (fd  < 0) {  B# L) r# \0 j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      }  {8 n1 r+ \
  29.                 return -1;! r4 x7 x6 p8 k( @
  30.         }2 x7 C3 C8 t( D" [1 L3 m
  31.         arg.sub_addr_count      = 2;
    - Q, v5 c8 x0 c1 o- r
  32.         arg.data_count          = 0x18;' `9 e6 D& @: n* V  i0 l
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 w4 h$ b, Z) H7 p8 I0 q1 w" g( Y0 g' k0 r
  34.         arg.e2prom_cmd_data     = buf;  C& r8 G% |$ Q7 n* r8 H' @, X
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 [, C) c! w' ~7 V8 Q7 `- N
  36.         if (ret != 0) {# h# |" ]4 [8 \4 v
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % g% W9 |0 }4 A' E- K
  38.                 return -1;3 ^2 k1 f9 a4 E9 j& q: X
  39.         }
    + }0 {* f4 f, A& n: O# L* A$ H5 y% B$ \: D
  40.         memcpy(mac, buf, 6);& Q! H2 p9 Z" f% |
  41.         memcpy(stbid, &buf[6], 18);
    ) X- N; Z$ B, f5 ?# O6 {
  42.         stbid[18] = '\0';
    2 B9 Z2 Y8 [, [4 P% F. ~  I7 L

  43. 1 P) x9 V! c8 I
  44.         return 0;6 K% X% u( X, E
  45. }4 w3 O- U& Z; H+ f; s% [0 }' m+ W( f

  46. - |$ h2 q9 _% M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 w$ V" n3 ^- G  Y. f5 y+ w
  48. {
    ( @# z! h! ~/ m) j* p4 f! x
  49.         int fd, ret;+ v" C& Z* I4 }$ x5 U9 z* P: f
  50.         e2prom_s_cmd arg;- M6 \+ Y& S$ A$ r6 ~
  51.         unsigned char buf[0x18];: o/ r9 q- F& \4 n7 |6 E: \
  52. ' J2 w) C( x3 E$ B8 B
  53.         memcpy(buf, mac, 6);
    , }3 u. G' n7 U& W* R
  54.         memcpy(&buf[6], stbid, 18);5 G- E" t; C& ~- x% k1 P3 y* Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, h/ Q. F5 @9 Q
  56.         if (fd  < 0) {
    - l7 O* L( d: o  _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + K4 J' G: b1 Z! Z8 m" O
  58.                 return -1;% x2 I/ j, o& x/ B2 k4 c. L
  59.         }  F/ Y. f) |+ N" e% `0 a# \4 }
  60.         arg.sub_addr_count      = 2;
    ' G3 {- L# i5 S3 n
  61.         arg.data_count          = 0x18;
    0 J2 U( y% n. ?6 N( |% O" k9 Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; U5 v! @# P- ~/ T; c
  63.         arg.e2prom_cmd_data     = buf;6 U1 B8 ]6 c& t' H+ t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ M6 r6 G. q8 u" d; u$ ^* \
  65.         if (ret != 0) {
    * s+ e4 Q  ~9 Q' y& m0 ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; c$ s1 X( {, T+ b- y5 Q. F+ Y' b
  67.                 return -1;# S5 g  r4 L7 i2 [# ]- z# h! j
  68.         }
    # ?4 r: ]* k0 m  W5 I7 W8 ?  E
  69. ! e. U* f  i, b6 s) F1 I
  70.         return 0;3 c8 |+ ]! T" r
  71. }
    7 S4 z, F& y- N* K0 W) ]+ _
  72. : V& S0 `. y& c5 {& l
  73. int main()
    $ E/ e/ G0 }3 _7 W- e! p9 t
  74. {/ u: u% ~/ ~) k, x! o
  75.         char c;
    5 a, ]& V5 X2 w7 T
  76.         int i, macs[6];
    1 V3 u% e& M$ W, r0 _5 L; t
  77.         unsigned char mac[6];& s# l# B, l* {, `" s
  78.         unsigned char stbid[256];
    . {2 a! t; H! ], A4 h

  79. : f4 |/ ]) J9 v  k
  80.         if (readparam(mac, stbid) < 0)
    - v4 X; J5 `% a! ]; r6 B
  81.                 return 1;- M" M& H' n& X9 k# ^& b
  82. 0 G$ L/ G. ]  o' b2 _; e" G
  83.         printf("Current parameters: \n");" n: _2 q: @5 a" Y! d$ y, n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 u) ~7 D5 Q  a2 @
  85.         printf("  STBID: %s\n", stbid);
    + w3 }- s8 E* n  u
  86.        
    $ J' T- [- x, W# _' C! O
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  J1 \; s: b3 a4 ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 d# Y2 P3 p$ V
  89.                 printf("Input MAC error\n");
    . l" B0 F, z/ K1 @# ~; m, y
  90.                 return 1;+ w9 }1 O% g* \  t& H8 w' h
  91.         }) K+ Y$ }- T6 t1 ^* _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 F& W- b6 e) Q+ D6 S
  93.         printf("\nPlease input new STBID: ");
    ; z* i& S, \- v  x4 {# q' M
  94.         scanf("%s", stbid);
    & b! U. h# K0 }" V$ U+ C
  95.         if (strlen(stbid) != 18) {
    , p, w. c9 T3 {2 L5 h! F) s; D
  96.                 printf("Invalid stbid\n");9 Z' ^/ y8 c5 u2 M  |
  97.                 return 1;5 g- E$ j+ E8 [2 s5 A& G5 q
  98.         }
    ( `' \5 A2 b' f$ P0 G) L. R
  99.         printf("\nNew parameters: \n");
    6 M4 U# A( x1 d7 `- ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 ?% x9 x4 ]$ }* x; V
  101.         printf("  STBID: %s\n", stbid);
    . _# i6 K9 v8 u2 ~+ f- G" c
  102.   o) `( r0 r9 ~$ h/ r& H
  103.         printf("\nDo you want to change paramemters? (y/N) ");& H5 E" c# K$ a2 a  E" g& N
  104.         for (;;) {# M6 N4 ^) a$ g" Z* s9 n# v
  105.                 c = getchar();
    9 }2 Q/ {* K( h( m
  106.                 if (c == 'y' || c == 'Y')
    4 z6 a! R4 S$ D3 E& R
  107.                         break;$ ?& o/ ?: k, ^
  108.                 if (c == 'n' || c == 'N') {
    ; M; U/ e. f( Q: f& }* Q5 P
  109.                         printf("\nAborted.\n");. V9 B5 F6 F4 K( T
  110.                         return 1;
      s- f5 T  ?, e9 d! d: n
  111.                 }
    9 A; [1 @# N2 x
  112.         }
    / K5 s* v# Y, s' e/ L" o3 S* U
  113.         if (writeparam(mac, stbid) == 0) 2 H& g6 _. e9 q8 I4 L3 I, b
  114.                 printf("Parameters changed.\n");" G0 y( Q5 N& Q/ U5 f
  115. : w, J, Q7 }+ p! N! ?1 z% W2 e
  116.         return 0;% j6 \% p7 W( [& @% f! d
  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   i7 C& i  S1 n8 I; e: Q9 f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" W1 g3 {4 _1 `5 F" F3 R你用的编译命令行格式是什么?
2 ?/ t. H; U# t2 I
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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