查看: 17402|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 N4 N/ y4 k! w$ E# \( G5 R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- q* Z8 S- M: A: Z% F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 {4 J5 @7 s" l5 ]- n
usage: himr <address> <value>. sample: himr 0x80040000 0x0
# L* n7 A8 N3 q4 p# W) Y% d- b$ ~% F  b8 J( S( n" `2 F+ Q! d- i

. ]! @& h5 G1 [. ^6 T& c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  \* k, Z5 f3 ~) U* E2 M7 a, X9 D' I3 q3 g# M
补充内容 (2012-3-8 09:42):
! \6 h' F: C7 g. C$ F& Hhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数. ^* o- `6 ~+ v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
  R0 B5 W. \8 y$ b: J
6 B" E8 E4 {5 V0 \3 ehimr <address> <value>. sample: himr 0x80040000 0x03 T5 H4 X. U- e5 W) O2 U
' }( W, t1 Z6 f4 \$ g5 w: \
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。0 z- B0 p2 O5 ~; y
himr 0x80040000 0x00! P. s" s! L/ a# q; [
himr 0x80040001 0x11
& [2 ?, x8 Q' j. f. k/ Ghimr 0x80040002 0x222 C) t& Q. H9 y: ?& G
himr 0x80040003 0x33. f$ r' |( Y$ P' U) }
himr 0x80040004 0x44
# T# |$ \9 a$ s* lhimr 0x80040005 0x55* `; }+ d7 ?5 q% |7 F$ z& i& d' h
$ J+ R5 ~6 @8 S' @
SN也是类似。  N* p4 y# h: m' e2 \% W

/ Z: w- U7 v) F: i$ S现在主要是,谁告诉我们MAC和SN的地址?
' h3 {* l: O2 M6 q8 s
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! f  b6 Q2 S* ?; V$ _
一直想找到运程修改MAC和SN的办法,苦于无解啊

2 g! K- [% {3 ~2 U/ F7 ^- ~源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- i, q1 ~$ p* E4 [2 [( N
- ]* k' C, W) f3 J! y$ T, E修改的代码早有了。到今天不会编译。
2 d) t6 M  @: e* k' c0 l/ A需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 A* ^+ _- y: a, S8 g9 E+ ]; W. R
  2. #include <malloc.h>3 H( q" q& d, ^6 Q6 [
  3. #include <sys/types.h>
    * _. {: S& [- T; E$ z; S9 _
  4. #include <sys/stat.h>1 C+ r- V$ U6 Z" s/ q+ P9 o
  5. #include <sys/ioctl.h>
    5 Z( }3 d/ M& _" ?
  6. #include <stdio.h>0 Z" Z) x) O$ M8 R2 a) H% Y$ e
  7. #include <string.h>
    + i* B/ Y6 p, b" y" Y) t

  8. 1 D8 Z3 V: z9 H, n+ ?5 ~0 f
  9. typedef struct {+ V2 [" ?0 x# d) I2 P
  10.         unsigned int        e2prom_cmd_sub_addr;1 R# s( Y" [3 [1 X9 b$ p3 R
  11.         unsigned int        sub_addr_count;
    3 f9 W) s" p4 n4 B. r! Z! H
  12.         unsigned char*        e2prom_cmd_data;
    - G* M/ H0 S2 ]( m' j* g
  13.         unsigned int        data_count;7 K  Y; V( o% f% E/ D
  14. } e2prom_s_cmd;
    6 `' |6 G0 d: X( P8 Y
  15. 9 n- j5 x5 P( d; F7 I8 Y0 y
  16. #define E2PROM_CMD_READ 1* s1 I4 x6 g( Q. h9 r1 U/ r5 H
  17. #define E2PROM_CMD_WRITE 2
    " L6 A; Q2 u0 ~! A4 T4 J' S/ x8 ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"3 h- h; P1 q- s/ j+ t8 g/ P
  19. 5 a- C9 N* N- [) |. X7 a0 M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , F/ q0 W1 m% S. L- {+ d
  21. {+ n( _# b2 f; P3 V  b) [
  22.         int fd, ret;
    ; e3 \( b% v: j/ ~  ^
  23.         e2prom_s_cmd arg;! F" N  h2 g/ A! W7 E5 k
  24.         unsigned char buf[0x18];
    3 [7 m$ K" M' _& }6 e% t0 z/ C
  25. 5 G! I! G2 T9 s) p6 w
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. {; s; d) w9 h8 f! v6 u
  27.         if (fd  < 0) {
    7 d, B- {! r3 L- E  @
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ u! S. |9 l1 ]0 V! ~
  29.                 return -1;
    ' o' i2 t: C: ?5 O
  30.         }' n: z/ A$ z- g  N# n
  31.         arg.sub_addr_count      = 2;
    ; v( E4 O" l* d0 s+ l/ w+ `
  32.         arg.data_count          = 0x18;* U" }/ n; |# X  Y+ ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & G4 L8 P9 A5 T: ^$ c6 ?" U* {! `
  34.         arg.e2prom_cmd_data     = buf;! o0 l, H: s! _" U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / Y' P' |# C3 h" O$ f: ]( h4 z
  36.         if (ret != 0) {
    % t" E. M% M# U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; M; q. L; J7 ~4 j4 F* U2 L9 r
  38.                 return -1;' i. A: z) N- i6 t: p; K3 V
  39.         }
    , T- p4 r8 {# H
  40.         memcpy(mac, buf, 6);
    / Z9 G- @+ a" Z+ d6 o) n- f
  41.         memcpy(stbid, &buf[6], 18);  M6 t+ S! R$ F- E# t& D4 z/ J
  42.         stbid[18] = '\0';
    7 d9 X5 o( t' F, _5 i. I: r( s9 \

  43. - k. U$ m1 F2 n, I1 l( r5 B
  44.         return 0;5 i4 U/ ?9 s& B0 A: k  a3 E
  45. }0 e: t) w5 H) Z) J6 d

  46. 6 I, G% o7 E* n4 E0 }1 `
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # }" `! m. L. X
  48. {4 Z* C3 ?% f% u' c2 I; i
  49.         int fd, ret;
    ( g+ }( R; Z% s- [- q6 p5 ~
  50.         e2prom_s_cmd arg;1 K8 N2 K) G1 X1 k: l# g
  51.         unsigned char buf[0x18];
    ' t" }+ V3 F, l4 Q" B  k; o

  52. # N* U3 a9 J. C: j
  53.         memcpy(buf, mac, 6);+ h3 U- r: Z5 c( ~  ?! U
  54.         memcpy(&buf[6], stbid, 18);) R+ |+ h& L5 v# G: ?% \1 n+ l& b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , C( h3 ]! ?! X+ F) q
  56.         if (fd  < 0) {2 a/ L# o8 V: X" [/ H, J
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # \) e; j6 a9 V
  58.                 return -1;
    ! V% O: |8 F3 L+ A1 X9 C
  59.         }
      M" c  T* B: n0 f
  60.         arg.sub_addr_count      = 2;+ T3 h$ |7 k, c3 l9 A( c0 Z# ]' q% D
  61.         arg.data_count          = 0x18;
    6 H1 _' F2 x( V0 v( M0 z+ Y; l4 Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    " V7 K- j1 f+ R4 ?& A, _; y
  63.         arg.e2prom_cmd_data     = buf;
    % d6 K+ v: ^1 l& h. [7 \9 }7 a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ W4 t; Q) }1 o* O
  65.         if (ret != 0) {0 f& J# n+ i3 W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 o8 M- C9 n2 a$ J. y
  67.                 return -1;
    # J  Y" u& a3 s! Z
  68.         }
    7 N0 F/ S4 M* m7 Z! V

  69. 0 D* _! y3 R& |! G7 h- v7 |
  70.         return 0;
    ) y6 L! ^6 M4 ?/ }% y& N, e
  71. }) m7 L% @/ ^" i1 f
  72. / g- N! D" i3 M
  73. int main()0 B) p3 f: Y7 P8 o
  74. {
    ) v6 f6 g9 s# D, F% v
  75.         char c;" M3 ]' i- \7 P1 n9 P
  76.         int i, macs[6];* p# c3 [; q6 x: K4 }$ }+ e7 m( m  s
  77.         unsigned char mac[6];
    4 Y6 Y4 G$ ?6 h# h# ^! [
  78.         unsigned char stbid[256];
    7 `' }0 O7 Y2 H" _$ W

  79. 5 a) @2 f" b8 Y. m' b4 j
  80.         if (readparam(mac, stbid) < 0)- O% F# K- b* N, e# B$ s  \
  81.                 return 1;
    # v" z8 f. d) f# U8 Q) c
  82. 3 Q0 @& A/ X; C' Z$ l6 A5 m; D7 v
  83.         printf("Current parameters: \n");: _% T: }& o; W7 Z5 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + u* u. r4 W% w6 {: E) p
  85.         printf("  STBID: %s\n", stbid);
    6 y, K2 f) K! ~' o; ~9 r  o0 `2 h
  86.        
    & A  O3 T2 n+ w9 Y3 S/ S, P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 f1 i2 X9 r7 @- t9 w& W% q1 @- H! R
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {  `) x' g( _! a5 M* g
  89.                 printf("Input MAC error\n");! M6 @! e' g8 Q$ g  C
  90.                 return 1;
    . M2 p3 M6 p9 T: [
  91.         }% l6 b/ X& m9 Y* L& K  w
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) P* B+ p8 M  K  r
  93.         printf("\nPlease input new STBID: ");6 H: ?+ z7 q' T! l
  94.         scanf("%s", stbid);
    2 N# [4 H$ t: T  L8 y: g. g8 [5 I/ a
  95.         if (strlen(stbid) != 18) {' N4 _5 T$ e$ b" x) o( C* w
  96.                 printf("Invalid stbid\n");
    % ?. I' Z7 x+ m2 X0 _
  97.                 return 1;
    % R8 ^. W* h' Y- K& l
  98.         }5 e3 T( V0 }9 V" o, Z
  99.         printf("\nNew parameters: \n");
    9 E3 R- A6 d1 ]4 c% ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; _1 i. O$ G9 ^
  101.         printf("  STBID: %s\n", stbid);" {# Z9 p6 O$ i6 j6 r

  102. % q4 x3 D) T2 `# _/ ?4 I/ J* t
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " [' |+ z, a, G+ k5 R8 L2 O2 H
  104.         for (;;) {4 ?7 L% l& ^5 w9 p& x- p
  105.                 c = getchar();
    % H, X% U0 J) `+ m
  106.                 if (c == 'y' || c == 'Y')
    7 v: Y; `- U- {- u8 P. L% `  Q
  107.                         break;
    0 n7 V6 u# J6 H8 N1 t. ~
  108.                 if (c == 'n' || c == 'N') {8 X" I: }  e- {
  109.                         printf("\nAborted.\n");) M% b7 Y+ Y: M/ ~0 u/ K- r* C. @
  110.                         return 1;
    ) \1 C8 u7 E1 T2 f+ V: Z
  111.                 }
    ) G1 u) R+ U3 D" B9 y
  112.         }, l+ e0 H# L9 i/ E& G
  113.         if (writeparam(mac, stbid) == 0) , ~: ~/ |. f! c8 M
  114.                 printf("Parameters changed.\n");
    : u: [4 u( p- L/ _$ ^7 f1 b
  115. 2 e' F0 P/ C; c% B" r
  116.         return 0;
    # K9 Q1 Y/ S1 d& y: k: l2 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
' L) l/ y2 L, ^3 O$ j; g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( G7 G/ ~. _4 _& P. n$ T+ J你用的编译命令行格式是什么?" Z! j2 R! M+ ~  y0 B/ A9 T% v- q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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