找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15248|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 h! T, B( n" e; h! `
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; k$ g/ @: Q: D( [; f
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:" h9 [. f- ~4 t- B- I% W! N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
; D. c2 \5 x  }; u2 |3 }( K% L- x8 `' z9 @9 r% M$ S' v

) A' \6 ]: J+ O; g$ u不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& J5 X; Y" g$ `5 [) Z$ H" \6 Z# U& W3 g
补充内容 (2012-3-8 09:42):+ p, Y3 m2 r5 A5 |; ~0 s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* N7 A3 Q* c/ m; K% k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
7 @! m* C5 Y) [8 z' Y4 s2 T( s
himr <address> <value>. sample: himr 0x80040000 0x0
  O! ^+ g# m& i5 R. E8 s
: i6 ?9 U! {7 G8 ^$ [; x$ ~例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% d8 t6 n- E8 S( U6 u4 X/ thimr 0x80040000 0x00
) K6 _% [( o7 @himr 0x80040001 0x113 x5 c) O! K/ z+ a3 X, w
himr 0x80040002 0x22' c- V8 O9 E8 S/ D
himr 0x80040003 0x33' s6 P8 f/ X2 Z& o! @& M
himr 0x80040004 0x44( o' o3 J. V( p) t6 I. |# C1 p
himr 0x80040005 0x556 \0 y7 m2 h8 W  h4 r

: T- r% i4 ]. }3 j& F1 J; {& q: aSN也是类似。
' n8 i6 F" |) B, {
* J' L8 T- r+ Q现在主要是,谁告诉我们MAC和SN的地址?
, ?4 z6 K4 q/ _/ s0 J' }) l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   ^' \$ t3 Y% D  \3 k2 u0 h
一直想找到运程修改MAC和SN的办法,苦于无解啊
1 c, i( q5 `! H8 C! H9 q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
+ Y  Z1 |& P; O* v6 u# _& L. G" e& P6 N# [1 Z' i; L0 L
修改的代码早有了。到今天不会编译。6 D# D0 ^$ w! }
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># i) k* v3 \/ }/ I7 G
  2. #include <malloc.h>
    # X! w7 ^5 `4 S. |9 ?: v
  3. #include <sys/types.h>" i  ~7 m+ N1 N/ l' W
  4. #include <sys/stat.h>
    % ^5 G! a& {# h
  5. #include <sys/ioctl.h>2 H/ Q0 r9 r0 x
  6. #include <stdio.h># G# g/ r/ ?  a0 H% }. O9 x
  7. #include <string.h>2 G" m9 q# X5 j2 G3 N
  8. ! D& h" [- ~: j8 f* ?+ a
  9. typedef struct {
    / ]1 p. F$ c) a
  10.         unsigned int        e2prom_cmd_sub_addr;
    5 K7 J! B1 N+ m) v
  11.         unsigned int        sub_addr_count;
    3 ~; F% z- ^6 t; l& F# Z
  12.         unsigned char*        e2prom_cmd_data;
    9 y/ q7 ?: }1 R& @
  13.         unsigned int        data_count;
    ) C% H6 \8 X. P- t# I
  14. } e2prom_s_cmd;
    0 Y) ?9 ~2 }& l

  15. 2 ]# Y7 J5 [  Z; m& _, B
  16. #define E2PROM_CMD_READ 1
    + [' F9 C7 G! O
  17. #define E2PROM_CMD_WRITE 2" s8 K# _9 T4 C; z- Y8 N
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 `/ n$ M, k" F* l# k7 e0 X
  19. 2 \+ q6 b: [# E' X* \( z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- d. w5 A7 n- s6 K
  21. {1 }. H( z+ W% v/ P$ [" G: E
  22.         int fd, ret;% O8 A4 Y  w$ B3 t+ F+ J
  23.         e2prom_s_cmd arg;& U$ r/ Q4 u1 r( @- y2 O3 `
  24.         unsigned char buf[0x18];
    / p1 i' W+ \1 r) T; j0 A

  25. $ V) x- J3 d% p  q" _+ ^! Y% z; s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 ]) M0 _4 \/ M- F; x
  27.         if (fd  < 0) {" k% }6 |* n3 e- [1 }; e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % q& T, c; ~% O+ k: Z4 a
  29.                 return -1;; P) v; P4 l; k: I1 b* k. p
  30.         }8 ~4 A( u4 Z4 W' [
  31.         arg.sub_addr_count      = 2;+ K6 I. e% r7 j5 W3 X
  32.         arg.data_count          = 0x18;- o' c6 v2 k2 ^9 Y' S2 b
  33.         arg.e2prom_cmd_sub_addr = 0x290;* V& i* y3 v8 b3 q6 [
  34.         arg.e2prom_cmd_data     = buf;3 ]+ X3 a; i! e0 a6 a0 g# Q, f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);9 p+ R) {# m* d  _# t3 g" U
  36.         if (ret != 0) {( J! {9 j0 a$ }2 E! x
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);1 |1 U9 W5 U- A5 I9 C
  38.                 return -1;4 ^  C- v* D+ g1 A- F9 N
  39.         }; h4 J$ [! W' b3 r( K) c! F0 w+ d
  40.         memcpy(mac, buf, 6);& ]+ H  B# L- ~
  41.         memcpy(stbid, &buf[6], 18);; @& U  l  r5 `" u
  42.         stbid[18] = '\0';
    / w3 M9 Q3 A; U2 e$ w  _; x

  43. 3 u7 i$ t) n! X7 V4 t) {
  44.         return 0;3 l0 |' [. }- S5 Y. A7 _
  45. }) Z, c; q; a' q+ p9 j& N( n
  46. / S# p% s- l+ Y/ w& B
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , _$ L6 }8 K- F
  48. {( d5 ?, `" F* q' a& e2 ^. c
  49.         int fd, ret;6 j; ~. N' ~; C+ A7 i+ E
  50.         e2prom_s_cmd arg;/ `% d0 T+ o% ~! _1 a/ W3 W( \
  51.         unsigned char buf[0x18];" v% Z* A3 l5 k7 r" Z& y- ?
  52. : l7 [% m( k0 o& H: K+ b
  53.         memcpy(buf, mac, 6);
      D6 r. j0 u2 {* ^2 b' l6 z0 P
  54.         memcpy(&buf[6], stbid, 18);
    ' T* j. o  {! C# s  @# ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " W6 n' ^/ X# g$ W3 k0 y( G
  56.         if (fd  < 0) {1 ]( E. Q3 D% P1 o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) {( {/ `5 u9 p$ [
  58.                 return -1;9 A9 o* z( h4 Z0 ]5 \! P. Q, w
  59.         }
    8 h. ^% V7 B9 Y
  60.         arg.sub_addr_count      = 2;8 \. Z5 H# x: ?
  61.         arg.data_count          = 0x18;
    5 H$ [( g* S. h6 N' `
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 Y2 B; H! Q5 t6 ~
  63.         arg.e2prom_cmd_data     = buf;+ [: B2 @- _& Q5 ]$ x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 p0 a* x: K) Q) p
  65.         if (ret != 0) {
    # X2 P% m( q6 H3 g* }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 q) R/ s! y, u4 r) m$ W9 Z- j
  67.                 return -1;+ A7 r  B3 A4 x! B; [
  68.         }
    : N! h5 U7 U1 i6 e9 F0 f

  69. 1 l( g/ I! X. M' |% \  a
  70.         return 0;
    2 A+ d2 R* M- q& E& B% Z9 |  R
  71. }$ J8 l" S6 t$ \7 J8 |1 x3 V
  72. - r" r! X' {8 P- N( W: m8 L* B' B
  73. int main()0 K, u! k: c, F( p$ o. A
  74. {8 E% q5 y& w! c/ R' H9 H
  75.         char c;
    + i- k- S9 J$ @' y! R4 y
  76.         int i, macs[6];
    + V7 [8 ^4 \4 `
  77.         unsigned char mac[6];; O# o' g% b1 M. M) g* y( G: |
  78.         unsigned char stbid[256];$ g& r+ l5 S0 p2 ?6 s7 r
  79. ! Y& c- t  i) ]4 \3 L' J
  80.         if (readparam(mac, stbid) < 0)9 H& y" l; D* K2 K" I+ o+ j8 \
  81.                 return 1;
    # b' [7 G4 o3 y$ @- T8 o. p

  82. & B) l5 X7 m9 \
  83.         printf("Current parameters: \n");$ Z  |* M9 _/ I9 Q) v! `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 o/ U. d4 K1 e$ M1 s6 i
  85.         printf("  STBID: %s\n", stbid);
    ) a5 q6 s) p% J' I$ Z4 `
  86.         0 A6 V" k. N( M5 y, ^( E. o* w! ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; e6 z( ~7 e8 P) b. [, w
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    5 v* o, _4 q: V1 p" n% U/ V/ m
  89.                 printf("Input MAC error\n");$ T- D5 }* S, c8 `1 }. z8 N
  90.                 return 1;, i) m- X5 U1 @
  91.         }& O) \, V( J: P/ c  Y" L- _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- J9 \) z( j0 e% j' O" y
  93.         printf("\nPlease input new STBID: ");
    8 X+ h8 _% g7 C+ e2 ~. j1 v" j0 Z' _
  94.         scanf("%s", stbid);  l4 X% B! x7 G' y5 z1 Y. D0 s, l
  95.         if (strlen(stbid) != 18) {
    " r1 W" l4 d) b6 i. V3 Z  `" ^# Y" I
  96.                 printf("Invalid stbid\n");0 q% J5 z+ _0 C& H" x4 _/ ~# j
  97.                 return 1;
    * x2 U9 L/ i' p% @2 _6 `6 P
  98.         }* s1 d, x& E# b7 I
  99.         printf("\nNew parameters: \n");
    ! u) \  ]6 n; j+ m2 ?1 I6 ^+ J  d; T
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; T- g* a  v& f+ Q7 _
  101.         printf("  STBID: %s\n", stbid);
    * p0 b! M$ [$ a' D8 Z2 |7 W
  102. 3 \. n+ C1 T. Q* n- K- ~4 |
  103.         printf("\nDo you want to change paramemters? (y/N) ");) `& ~+ Z  {2 Y5 V. |+ n7 S3 }
  104.         for (;;) {- x/ K  |" a7 `4 c( E. O
  105.                 c = getchar();0 a" u( w( Z3 q: Z5 f
  106.                 if (c == 'y' || c == 'Y')
    9 J9 U; o+ D& y9 O+ T/ B
  107.                         break;
    8 `2 D0 k4 ^% i3 A9 {
  108.                 if (c == 'n' || c == 'N') {
    $ C6 \  a! V0 \1 \
  109.                         printf("\nAborted.\n");
    $ D- \. J7 [% r7 `( H; Q; g
  110.                         return 1;
    / J0 u9 B; L/ m; Y3 P4 ]
  111.                 }
    / k8 X7 C( Y* D9 e3 b  o, Y0 ?
  112.         }
    # X2 L0 R; `' w( G
  113.         if (writeparam(mac, stbid) == 0)
    6 h( h' [" I- U" q- M
  114.                 printf("Parameters changed.\n");
    . V$ a2 |: X7 @

  115. % i* Z  w; Z$ z% _  R) ~
  116.         return 0;" `( k# d/ F' {5 m" B5 P
  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
( p- S0 U% U5 i0 [  D/ J: L在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 O+ `8 l& j5 \& q" O你用的编译命令行格式是什么?1 `0 U! L$ s# ^6 T- a; o& B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-1-12 13:29 , Processed in 0.025429 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表