查看: 15865|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- h- ^* X/ T9 q1 l& Z7 B% O5 J" l! P9 R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; B7 y4 ]' K, t+ s
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ }- D& H/ |: g2 n" Y( ~
usage: himr <address> <value>. sample: himr 0x80040000 0x0: [, D8 Q" z) z/ L

* A/ }( E" c/ k  t5 Q/ z( i* D! e, q9 M) Q( R. u! _+ q
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ k# g$ t0 ]7 S8 U$ N% r# g( ~. E5 J* v" P, |4 F+ L1 C
补充内容 (2012-3-8 09:42):5 J8 o/ G8 W* R/ i2 y. A# u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 J" o7 }* T7 Z# I8 {8 n  w; k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。( }2 O3 s- d% |
6 V' S; j& h3 K
himr <address> <value>. sample: himr 0x80040000 0x0
( m, T6 \" H2 P! a
" O# h" H1 D& I7 l3 e& J. J例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 Z( `' z; H7 O: G3 }! V! o
himr 0x80040000 0x00
4 k- V! v2 b3 _+ F2 V; I% A1 L0 P/ \himr 0x80040001 0x11$ D" |; u- l5 Q  G; w
himr 0x80040002 0x22. P" D0 A0 u% r8 ?
himr 0x80040003 0x33
' \: K4 t4 X7 p& Uhimr 0x80040004 0x44
& k$ t$ s- o' A( j' u  ohimr 0x80040005 0x55, @7 c' z* ]3 e! m- o

: [; J1 v* N- }8 h- e. kSN也是类似。2 ]  K$ Z# O$ X, ?+ w1 p- t

5 Q5 z0 h+ o& f9 I* A9 A0 L' i4 R现在主要是,谁告诉我们MAC和SN的地址?
, [% p8 p/ W; g9 ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - G. k( Q" b7 x/ U- g
一直想找到运程修改MAC和SN的办法,苦于无解啊

. g. \6 M9 J9 i2 q2 q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 i& W  q! j0 x, L+ b* ?4 ?" H
  ?/ `4 {5 Y! @: R& z9 s9 |2 c3 W  \: A修改的代码早有了。到今天不会编译。; ~/ \3 _% U( g/ b  \
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 x" E* ~$ H3 p% Z2 m9 {6 M- J
  2. #include <malloc.h>
    ! W4 q& D% \1 {/ k4 n
  3. #include <sys/types.h>
      c! g% l+ h; L- j9 ?
  4. #include <sys/stat.h>
    - Y3 j& m  }2 V1 a( ~! \
  5. #include <sys/ioctl.h>
    ( A5 o* |' z( n
  6. #include <stdio.h>" l$ c/ a2 {' Y7 L8 v! S5 `
  7. #include <string.h>
    ! q. K& `6 B2 R7 `5 @- x
  8. / \  ^6 f# q1 B6 m: H7 `& t: x
  9. typedef struct {
    # h2 }! f, O9 r- V; M, H
  10.         unsigned int        e2prom_cmd_sub_addr;! D+ h& \- Y# }& Q
  11.         unsigned int        sub_addr_count;! w1 w! x( ]+ A5 ^2 m5 V. U
  12.         unsigned char*        e2prom_cmd_data;" P7 P! h; b5 F( ?5 V. e, X  r% T
  13.         unsigned int        data_count;
    $ j# k5 Z/ V' b5 |/ b, F
  14. } e2prom_s_cmd;
    ; _( [1 C& a$ A) k- N5 ?

  15. 9 `/ s! n/ r! R0 M
  16. #define E2PROM_CMD_READ 1
    # [2 I; a9 c: z9 q' B- G' `
  17. #define E2PROM_CMD_WRITE 23 [' o* W% e7 Q0 @8 |
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & K- p; s" ?( p3 ^

  19.   J/ c( O/ D, N' h7 u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 S4 U$ @. `; P( J
  21. {8 D5 q# p6 `* U. y
  22.         int fd, ret;
    + |3 b) Q3 t& q1 e; Z) A
  23.         e2prom_s_cmd arg;
    ; t* \+ j4 ^; I6 Z4 U/ Y' O5 {
  24.         unsigned char buf[0x18];( h: s  C$ E& @+ J; j! M7 B9 y
  25. $ T* a: [9 T  `6 k7 @  s+ R' x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & ?* _1 ^5 ]) |; [$ m
  27.         if (fd  < 0) {7 c, O5 `4 l$ N3 p/ q% D. C# G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 D  d* I- V; C" n2 l- f/ O- U
  29.                 return -1;
    2 W* o8 v" ~& a4 t- `! ]
  30.         }7 A" ^2 a& V5 T( N; z+ z. E
  31.         arg.sub_addr_count      = 2;
    2 L! l+ J3 l4 T5 [
  32.         arg.data_count          = 0x18;
    " b+ j( b3 F, f& E1 [
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ A+ A; ]1 r# \8 H; T* R/ j2 O  n3 j
  34.         arg.e2prom_cmd_data     = buf;
    3 s, ^+ a+ g# j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ v" o. j: @$ w7 K4 d6 S) u
  36.         if (ret != 0) {' S/ G3 i! p7 B  Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 C' j/ Z( I0 l$ L7 m( j
  38.                 return -1;- }/ _1 k' I+ `4 ~
  39.         }! ~# X3 c: K7 e. U' ?# [: I
  40.         memcpy(mac, buf, 6);
    / F. R& z; ^! ^9 j+ m2 i
  41.         memcpy(stbid, &buf[6], 18);+ Q  ]0 t  c5 }6 F9 L
  42.         stbid[18] = '\0';# e" I/ T7 o& z1 f: x" S' K8 Y

  43. ; q+ t) d/ C9 W% r
  44.         return 0;
    $ q4 s6 I, @0 [! z  ]6 l
  45. }! l! f! [8 \8 c- ]) r3 W, s* j7 M
  46. ) c+ \- N% i( y. ]
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 k* z$ p0 ?& p0 V6 F
  48. {
    5 i  s5 G5 N$ s0 B8 B5 b. T& m
  49.         int fd, ret;: G& l1 F3 T+ j# S. Z2 N; q
  50.         e2prom_s_cmd arg;8 {0 |# z: p1 u2 i/ u
  51.         unsigned char buf[0x18];2 Z8 Y. B1 r- x! @3 p8 L
  52. + X, k5 X2 b7 ~  K6 I
  53.         memcpy(buf, mac, 6);
    7 Y5 o- o. O' h
  54.         memcpy(&buf[6], stbid, 18);
    5 P! {! W* B, y1 c. L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);: T9 w: |& T" E1 ?: \' t8 ^1 K4 |* ?
  56.         if (fd  < 0) {
    , R# j0 B# c6 Q7 D# e! w* C8 ~. E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 L' s  z, _5 k& A# ], Y
  58.                 return -1;0 |4 G6 Q% n8 ]+ Y: P
  59.         }
    1 P2 c  p6 [5 y+ a2 h
  60.         arg.sub_addr_count      = 2;" `8 E" \4 U3 L9 _1 w0 U7 j, K
  61.         arg.data_count          = 0x18;
    ; e2 Q: c7 S& ~9 f
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 i. D1 ]3 J9 ]8 n$ _% v, v
  63.         arg.e2prom_cmd_data     = buf;, G/ r0 ]0 R# i" c6 s4 ?2 j% W, r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 A6 I2 y9 Q3 F' m, i7 U2 T
  65.         if (ret != 0) {# u4 t- Q% |1 o$ M7 n$ u$ D1 _: [, y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # h: p* @! y/ W$ j3 a5 R
  67.                 return -1;- y' I7 A1 C8 D
  68.         }
    8 w. i# ]7 f+ l

  69. 9 }- x3 `2 \- N/ w7 D
  70.         return 0;
    4 x0 l  c% v% ^: S/ s$ N' V" }
  71. }
    ) I6 t% Z- y$ h; t

  72. ' u  ]7 A1 J; ^; O. W
  73. int main()9 V- s! d) B1 Q+ s# L% E! R
  74. {
    6 x2 O% P9 j8 I* N8 \
  75.         char c;; c+ ^# Q- O% I# J5 {4 W+ l5 \2 `
  76.         int i, macs[6];
    # g. w# w0 R% n% K6 k
  77.         unsigned char mac[6];/ b2 o+ k1 I. ?2 D
  78.         unsigned char stbid[256];
    ( n4 u  ?5 x& m+ H! N

  79. * @% P& s0 {4 k4 p
  80.         if (readparam(mac, stbid) < 0)
    % m9 R3 i/ ^0 s
  81.                 return 1;
    . ]& d% [  g  w! L9 R& W) h

  82. " W; M) e3 @& u: {1 B. z
  83.         printf("Current parameters: \n");
    ' T  ]7 E, D9 \6 V% @! T. p  Y3 Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( ~3 x8 s, I# n2 f) v8 U
  85.         printf("  STBID: %s\n", stbid);7 [6 L8 [: _  X% y  V- m5 [
  86.        
    1 i& D' r/ ?8 d' {) G3 D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");3 h- ~% \  z4 Z  p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% m4 P' a/ @. @: E
  89.                 printf("Input MAC error\n");
    , }8 \5 u: a9 G9 c4 N
  90.                 return 1;: L3 ~) H4 {+ x4 L
  91.         }
    6 I5 t+ y. I# p) o& E) P& B, {5 K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # y- Z5 V3 Q1 ]6 B" }
  93.         printf("\nPlease input new STBID: ");
    " D/ }9 S- T+ N" Y" H( _
  94.         scanf("%s", stbid);
    7 A* `2 @, `$ p& g0 M
  95.         if (strlen(stbid) != 18) {
    : v4 [- [5 @8 I2 s
  96.                 printf("Invalid stbid\n");
    ; N6 P+ [" w" L; W6 F6 H5 J- P
  97.                 return 1;. K& f3 Q" J; v. L5 y
  98.         }
    : z2 z; w; ?* o3 B7 X& P
  99.         printf("\nNew parameters: \n");( l( d# b: ]; n" P8 J8 A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! Z, x" F% H% J# u8 U# \! P
  101.         printf("  STBID: %s\n", stbid);
    * K, o! z; C  A5 F4 \( A
  102. " T# P$ i! H1 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ [" P1 c2 D& J, \& X1 S& v
  104.         for (;;) {1 `& e% u9 G7 I2 [
  105.                 c = getchar();+ D9 e" v4 \4 K
  106.                 if (c == 'y' || c == 'Y'): i" l# a# ^9 H; K
  107.                         break;# s6 g! d5 W+ e  [* X8 B" z
  108.                 if (c == 'n' || c == 'N') {
    4 [; T& K1 v4 L, w% m6 F+ m
  109.                         printf("\nAborted.\n");
    : G! y$ J( r+ b$ a6 F
  110.                         return 1;
    $ p  v8 k8 H& g+ s5 S7 V
  111.                 }! v" l$ M6 X& \% X
  112.         }
    6 ]! S, a: g; G" N0 C4 K' \
  113.         if (writeparam(mac, stbid) == 0)
      C1 I- i. f1 r: A3 ]
  114.                 printf("Parameters changed.\n");, a+ |' [. t5 s: l6 O' Z

  115. ; ?% g$ U# r; }" b
  116.         return 0;
    1 c4 i  q- o; B# O% n( O$ n
  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 1 b$ j2 X- x* \- L( {& N" b
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& o. N! A% a6 ~8 C你用的编译命令行格式是什么?& X' N: W  E8 R" b/ L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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