查看: 16439|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    & Q$ C5 g- T" K. @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! d3 `( l5 R8 a
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( `+ e) S; q* P6 K- u
usage: himr <address> <value>. sample: himr 0x80040000 0x0
8 Y3 Z/ v5 e) o2 e; ?1 e7 f& Q" U+ p1 {$ ?) K, g* e% c

" |) q0 i7 [1 ~8 E: X不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ f, s( \9 V0 ]6 x
; C8 H- b. H6 j$ J# }6 ~补充内容 (2012-3-8 09:42):, |2 u" H9 k0 G: H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 m0 A5 ~+ B8 ]2 |! Q& H4 k这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. n( j" j0 \# t! J2 c0 N" _+ X6 p( H) ]6 }4 y- w
himr <address> <value>. sample: himr 0x80040000 0x0; [9 m: R. c2 f: ^8 {
" j: v8 V- M5 G$ m
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* _/ y; K% {6 J& v8 Xhimr 0x80040000 0x00
* @$ A* |! J; G4 b5 rhimr 0x80040001 0x11
& p9 y; n+ E8 R! [9 jhimr 0x80040002 0x225 I& W3 ^- X- ?; B
himr 0x80040003 0x33+ @- b( b/ z8 W+ Y, K  X) }( w5 |2 [
himr 0x80040004 0x44( Z9 p$ C. b  f; Y
himr 0x80040005 0x55- r; x! I( @3 M/ D1 ]2 J! Q

4 X& A% d3 s$ n# t% J( H, ESN也是类似。& q' \( c1 @4 Z! t3 v
$ c3 b2 V5 p  g( g2 q, z4 r
现在主要是,谁告诉我们MAC和SN的地址?
4 Z7 e! o8 k/ ~( d
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! P) d9 N/ _7 v( z! _5 d0 w一直想找到运程修改MAC和SN的办法,苦于无解啊

% w6 a# H$ O& i( z1 h源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 & c' M/ u1 [/ I

5 O% ?  R9 z, g' X- [修改的代码早有了。到今天不会编译。) |6 D/ O* q6 s. N# T
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 I7 l/ n+ U8 j% L( P
  2. #include <malloc.h>
    6 }7 e0 t/ K9 I( [( ~
  3. #include <sys/types.h>9 J9 z* j$ x  }6 d+ x: f& Y: F
  4. #include <sys/stat.h>+ v: O# b" \' I" u) p. J
  5. #include <sys/ioctl.h>/ q. J. z4 E8 ~$ w" d6 U! e
  6. #include <stdio.h>9 l' T3 G6 |3 Y2 e7 {" ~
  7. #include <string.h>
    8 I, E& c9 K% w( J2 A7 W+ X
  8.   i- |1 f$ A, }6 O  L) j
  9. typedef struct {/ l, r7 e8 @6 @  I& _/ r
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 l3 X5 @9 t7 [# S8 j
  11.         unsigned int        sub_addr_count;
    9 Y- S$ i0 l3 {
  12.         unsigned char*        e2prom_cmd_data;
    " d0 D9 f1 H3 c1 E2 @
  13.         unsigned int        data_count;
    . h0 [: w5 _1 @7 ^6 M
  14. } e2prom_s_cmd;
    ' ?4 p! V) }1 ?

  15. & Q# v7 J4 c, m9 V+ e$ A+ X* s
  16. #define E2PROM_CMD_READ 1" H' a; \6 y+ f4 S1 {$ V3 |2 j( {2 O
  17. #define E2PROM_CMD_WRITE 2; O0 p; c) N' Q; G1 H* @! u& w
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ Z' b! Y& G# ~& H3 C
  19. . U  M/ G! K% K) r7 ]. t3 Z6 T! B- \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & W# z' z0 ]9 J2 a0 s# E; |  b- V
  21. {
    3 O6 N, e0 s: y0 H
  22.         int fd, ret;
    . K4 K; x# |  ?; @
  23.         e2prom_s_cmd arg;. k6 I4 U) z+ x
  24.         unsigned char buf[0x18];" j" J. q1 t) f
  25. ) ^( E$ a0 I0 b/ |- I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);" B" L- b/ G9 t9 J. G! G- U6 ~
  27.         if (fd  < 0) {
    9 e+ K5 g9 X% H/ o2 C; }1 [/ x9 ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 L) e; I' w! ^% I7 ?) x
  29.                 return -1;' ]) r0 q& z2 J# {
  30.         }
    5 q" _6 \6 g: e- b4 S" R/ x
  31.         arg.sub_addr_count      = 2;3 |, Z: i5 n" s: u/ P4 k: q
  32.         arg.data_count          = 0x18;
    . u& _& }+ P# @6 q
  33.         arg.e2prom_cmd_sub_addr = 0x290;# C0 f9 h: l) U/ F( t3 `. o
  34.         arg.e2prom_cmd_data     = buf;
    $ n, [; L6 Q: ]  D% S* h) [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # F' H; U+ K/ S7 H, e8 A9 d: G
  36.         if (ret != 0) {; [* s. `  F: |8 N2 V
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; l7 ^! B% ~, n0 F: e+ d6 Z
  38.                 return -1;
    3 O3 j  N! M5 g& _
  39.         }& N! o5 j1 E! `1 ^
  40.         memcpy(mac, buf, 6);. K9 ~. v: X- U2 y6 _9 g+ D/ r$ O
  41.         memcpy(stbid, &buf[6], 18);
      g7 H# K. o  n" R
  42.         stbid[18] = '\0';2 X; C1 H3 b& v9 w3 K  `/ z3 a2 \
  43. 9 z. ^- Q1 A. k8 J4 }( r
  44.         return 0;
    4 [) e6 t& K- }
  45. }
    / e  |$ K% a& ~  m# H- C

  46. 5 f' \5 u6 |& G5 d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    " ?% [& N' i' n* G4 c9 t
  48. {! a7 o7 a1 c, }# P$ F8 M" C
  49.         int fd, ret;
    ) ^- K1 p  r! N8 [
  50.         e2prom_s_cmd arg;
    # ~8 p0 e3 c) Y6 h' n5 I
  51.         unsigned char buf[0x18];5 l" P* L6 S: R6 j) v! B1 R

  52. 3 H& W9 M1 A% \9 o) R$ @2 `+ ]
  53.         memcpy(buf, mac, 6);
    ) g; d4 P2 e# N( Y
  54.         memcpy(&buf[6], stbid, 18);
    ! D2 M: ^3 p0 q/ w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % r" N  l3 m5 ^  C# l6 W4 [
  56.         if (fd  < 0) {
    * e, V0 B* u- ^+ U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ w$ U' c9 J6 W9 Q# k8 W
  58.                 return -1;
    ; S4 c3 Z# z! `
  59.         }
    9 m% m# w( P2 J# ]/ l3 e
  60.         arg.sub_addr_count      = 2;8 u& ^" J4 ?# h# [6 k3 d8 k. X4 |2 ]
  61.         arg.data_count          = 0x18;
    * l1 `  L; b( c* m9 _% w# K( a9 {/ S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    * v8 g( ?" d, e+ A' F1 `
  63.         arg.e2prom_cmd_data     = buf;
    ; k4 y7 P. t5 ?1 P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    0 g. x7 a! y: ~6 G
  65.         if (ret != 0) {' P7 }3 `" G8 B: g# X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 {8 ~  e1 @8 e$ p  q# _5 P
  67.                 return -1;
    " g7 t  F3 ?7 m, S1 y3 Y4 T  L
  68.         }
    ' G' d" o4 W2 f6 l6 U/ W

  69. * @, i4 {1 z1 K- d
  70.         return 0;2 X" X8 l% M2 l' o% {
  71. }
    2 O/ S' R/ i3 s- y/ Q1 I
  72. # t) _5 t2 [# T
  73. int main()
    * A7 q/ o2 K6 s
  74. {9 F1 m- e0 I% M6 }
  75.         char c;8 z) Q0 y; N$ f* r% U4 K
  76.         int i, macs[6];1 N! d0 [6 E* @/ Q" J+ Q
  77.         unsigned char mac[6];
    4 b& W  l) @; D# ]; T
  78.         unsigned char stbid[256];
    0 J; O  z* M4 \% Y' R
  79. 8 ~+ _6 r' h1 h5 u2 k
  80.         if (readparam(mac, stbid) < 0)# O+ ?0 T5 }! B* ~
  81.                 return 1;
    % e0 P1 {4 d+ h$ Y  R$ Y/ l+ s
  82. 9 S5 G% [( V2 v
  83.         printf("Current parameters: \n");
    2 \/ E% J9 S+ }3 q) g8 J
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - ^, l; w( x3 a% I
  85.         printf("  STBID: %s\n", stbid);
    ! Z5 z) o- \: m& c1 K
  86.        
    3 N! F* k$ j  _( n+ O. ?
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% b1 o2 q- X/ [5 d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    2 X0 j1 B( ~9 e/ t1 r+ R+ U# }
  89.                 printf("Input MAC error\n");
    & [4 J9 u5 K  \& ^8 C* h. _
  90.                 return 1;
    : [% \: j% K/ l
  91.         }2 K+ f. q$ |3 m4 u) o/ ]* d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    # K0 R5 B: s6 b8 f. L2 \- _" {: w
  93.         printf("\nPlease input new STBID: ");* {. D0 \7 g7 O
  94.         scanf("%s", stbid);
    4 a+ h; T+ ]6 d+ p
  95.         if (strlen(stbid) != 18) {* x6 J  }( L2 c" x& ?) A% C  u
  96.                 printf("Invalid stbid\n");' S8 E7 U# N' n- |; J
  97.                 return 1;; Z& W3 ~4 e* ^6 E9 `5 @
  98.         }
    : j8 ^$ v3 L! ]4 `! o: _4 _3 ?$ b
  99.         printf("\nNew parameters: \n");
    . v, [! o- F2 j3 i9 M1 E& {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " S1 ~7 L2 v4 n
  101.         printf("  STBID: %s\n", stbid);4 ^( E2 I+ \/ {
  102. / j& L* f: W8 k8 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 p, i, V7 @9 j. l
  104.         for (;;) {
      U" B9 `) {: A6 _
  105.                 c = getchar();
    3 l4 C+ Z% y  k" s" ?
  106.                 if (c == 'y' || c == 'Y')
    & e9 E9 Q# D6 V! G
  107.                         break;3 F/ D  a( e4 }+ a5 r! O
  108.                 if (c == 'n' || c == 'N') {
    " G) v9 Z7 }4 i' |+ H: R: i
  109.                         printf("\nAborted.\n");6 b  N5 a8 G* E* Q" |2 N) |9 F
  110.                         return 1;7 J% Z# Q; \2 Y. R- e8 G$ y5 s% V
  111.                 }
    - W: U7 e0 e7 ~4 x0 ]) ^
  112.         }
    / d/ s% ~/ s+ e5 w, w
  113.         if (writeparam(mac, stbid) == 0) , e4 F, B) ]) [) x$ L3 v5 {% h$ n
  114.                 printf("Parameters changed.\n");
    ' x1 A6 u# ]. z! t! l
  115. 5 E' c5 w' l' O' p& ~
  116.         return 0;
    6 M8 N1 q, c0 O8 M
  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 $ X1 d' _: `8 p# S
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% F; V9 g0 ^: K; x( e你用的编译命令行格式是什么?
+ U1 O4 M9 C* ~" P# J2 C) \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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