找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14958|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ r5 ?" E* t: `7 }" m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. i! \& d, S  ]5 b* B) l
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; S' H& U2 E9 s  ^3 R
usage: himr <address> <value>. sample: himr 0x80040000 0x0
+ ^, P- Z  x+ J# Z
. h: C2 H1 S( V! b$ N3 b5 {) b) z! f) B0 l" k
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* |7 Y# U. o$ V$ ]% U
3 N" i' I" P+ q% u) }* U
补充内容 (2012-3-8 09:42):6 a. n6 r: n1 M, f. r4 F7 C: j; s
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
  Q# s0 @- @' m2 M0 j5 L4 S这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
9 ]" d( a, z8 _- I5 p# F
- g7 ^0 H3 M/ Y% S, T5 Hhimr <address> <value>. sample: himr 0x80040000 0x0
7 i  u! q: c# L3 D) r/ f: R% Y
) q, Y3 V% x7 B8 o' i  F例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" Y3 ]+ J# O' r& p2 ~1 a6 M
himr 0x80040000 0x00
' _6 Z7 s+ e1 Whimr 0x80040001 0x11
3 P- o  V  B) J+ E$ t! O* |6 Lhimr 0x80040002 0x22! s- t  G; j/ [% n3 l
himr 0x80040003 0x33/ w0 `4 K$ e7 v" ^& M- J8 k) Y
himr 0x80040004 0x44
; [% V+ s4 \4 F. [6 O% A( Mhimr 0x80040005 0x55
( }# `! u+ u& ]/ d' _: A9 v
2 x$ f2 N2 F4 m: p4 gSN也是类似。/ a6 w4 _7 H. n# I  W; G' i

$ d5 T# J$ @' X  n+ A现在主要是,谁告诉我们MAC和SN的地址?
7 L0 T# d% ]- l% T  R
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# A) i3 ]. S# R5 Z; o一直想找到运程修改MAC和SN的办法,苦于无解啊
. V" ^2 p# C+ B* b0 I4 N  y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 o/ v' V1 S2 r2 b: |7 ]. K
0 [% l5 Q4 |8 U+ ]& V修改的代码早有了。到今天不会编译。: Z' T4 E% r2 b7 W& B
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 V5 l# |- ?" k
  2. #include <malloc.h>% `$ N, o+ ^8 w, V$ K7 r3 V; o4 ^
  3. #include <sys/types.h>
    ' }5 J7 J, `& C/ z  B" k9 f( a
  4. #include <sys/stat.h>4 P* _! E+ f+ F0 |3 [9 Y- Y
  5. #include <sys/ioctl.h>
    ( n- P3 d3 p3 e* R
  6. #include <stdio.h>
    ( h$ ^6 T: L) g
  7. #include <string.h>
    " P- ^: }/ }$ Z" I0 {8 J/ b

  8. + e& a; F' _  c" Z- D; {; R7 ^/ n5 k
  9. typedef struct {
    8 ^# Q$ i6 ?. Z/ D$ ~6 X; V' w
  10.         unsigned int        e2prom_cmd_sub_addr;
    " D" _" ~! M* f& q  V
  11.         unsigned int        sub_addr_count;" U. Y: D/ T* \6 a; w& }
  12.         unsigned char*        e2prom_cmd_data;
    ; h6 l- I9 v$ c' I' L% n
  13.         unsigned int        data_count;# o6 t+ T. `9 a& u+ U4 ~
  14. } e2prom_s_cmd;
    % }$ W8 {# d6 P4 {
  15. % {6 A/ t- X. {& D
  16. #define E2PROM_CMD_READ 1
    9 E2 |3 \" F+ `# s: O
  17. #define E2PROM_CMD_WRITE 2
    % A0 i# @, p# N$ L' s% m6 K3 ^; O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' L( L5 L* Y2 l
  19. ; B8 {2 `/ x. O8 b# h6 ~! Z( U# a
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    1 E9 Q0 b2 I- E3 g8 e3 a7 m
  21. {
      Y7 V  t5 X) L3 _# ?' j
  22.         int fd, ret;# t* f+ v  M- e
  23.         e2prom_s_cmd arg;
    8 o. W# N# s& L+ t# R
  24.         unsigned char buf[0x18];
    ' H+ R' j) E5 ~' H% I! c

  25. # f# c" A3 |; p, _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) g  O: V/ F) ^) u; ?7 i2 d
  27.         if (fd  < 0) {+ S: V3 k1 d& ~2 G; B0 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 P2 J+ R; S% B
  29.                 return -1;* L; x- J& N2 C% R/ s% K
  30.         }
    : Z! Q  s+ j5 U  n: W! B
  31.         arg.sub_addr_count      = 2;+ ^0 {2 z* b- B) K* L( M
  32.         arg.data_count          = 0x18;4 n3 r  y8 v& V  j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : F- |( i9 ^9 i- [. r. p  b
  34.         arg.e2prom_cmd_data     = buf;7 o3 u& O; V- ?+ R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    . \7 C/ e+ O/ ~" i* I0 _" ]
  36.         if (ret != 0) {
    ) C. m9 ]4 f; V1 `: z: s" x, ^/ ]; r2 o# T
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 [* w6 o' q7 s* X# S: ]; L  }
  38.                 return -1;
    + z7 B) l5 V/ S$ }2 e
  39.         }
    1 u" a& W7 [( _% X0 O5 u$ Z
  40.         memcpy(mac, buf, 6);
    , |) G, l4 C% U
  41.         memcpy(stbid, &buf[6], 18);' T% t# Q, ?  C& s* ]" w
  42.         stbid[18] = '\0';+ M3 o6 |7 @9 ^& ~8 ^
  43. 3 q, |* P  q+ N& z! B' I* U4 V) \  {; _
  44.         return 0;3 T. @& D4 `& i2 K& f3 I
  45. }6 c* ?& K* V1 c( {9 M
  46.   p8 l/ }, R* v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 e1 o0 `1 m0 p0 o2 P
  48. {
    9 v- [( ~8 a8 c2 K) E) e3 q
  49.         int fd, ret;
    / Z) R$ k& P) y
  50.         e2prom_s_cmd arg;
    " _' K' [  g" S1 I8 j
  51.         unsigned char buf[0x18];
    % I- u+ d/ `& H: x! I$ |

  52. ' ?/ S. g' P* H. m' }: F
  53.         memcpy(buf, mac, 6);
    4 j; u5 u. `; W6 p! Q
  54.         memcpy(&buf[6], stbid, 18);( r+ S6 n1 g3 i+ y3 i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ b& P; B! Y1 B: B. k- i) `
  56.         if (fd  < 0) {
    8 n/ U( n, b3 i& H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ `' B- K- A7 c7 w
  58.                 return -1;
    6 Y# K" ?. b# B3 [) x
  59.         }
    ' e  f7 S: u3 t3 v/ m; K" |
  60.         arg.sub_addr_count      = 2;  C* ^4 x% J$ x) Q
  61.         arg.data_count          = 0x18;
    ' w3 @" I! o1 c# K- m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ N7 D0 f8 P7 p( j: V, I, [7 o- b& J
  63.         arg.e2prom_cmd_data     = buf;
    " \! o  U- t0 Y# v7 N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + E4 F' I4 Q) L( t# g! O
  65.         if (ret != 0) {6 G  L1 x: p" f5 B8 U! L7 i: Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) H) [. I& j/ T* R
  67.                 return -1;
    5 b. M0 z! R- s: q% V  v  R
  68.         }8 S0 }$ g( k+ O  R4 ^" b

  69. $ E% Q9 O- E# O' k
  70.         return 0;; r6 ?% R- [2 K
  71. }
    . i- P8 ^" U! F7 h
  72. " |# K0 s& ~' i; a2 B9 B8 S+ Z
  73. int main()) {& d' Y% }# n( v9 `* G( E7 x
  74. {
    ' C4 f& G$ ^/ ~1 T
  75.         char c;* O* q8 @, _1 [6 Y
  76.         int i, macs[6];) y" S* f# E4 P# G& @' o! R( c" {+ T0 [
  77.         unsigned char mac[6];
    * J0 k# _7 G& i- x
  78.         unsigned char stbid[256];  d; ~; s" Q! r' G/ A2 d4 J

  79. : H/ [! C. U& `$ F) n) h
  80.         if (readparam(mac, stbid) < 0)
    5 @+ u( b- O* e! K  k
  81.                 return 1;
    * r6 R) W1 i" `" t3 J8 K$ f

  82. : L" r  j$ n# n( Z6 r  D
  83.         printf("Current parameters: \n");" w/ K- v- C6 z* M4 m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # ~) E# o' U- v! ^/ |( g9 {
  85.         printf("  STBID: %s\n", stbid);6 T3 @$ ]- x) E2 F. |5 e# h* ?
  86.        
    9 W! ^0 e0 f) h) B! n; |% X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");1 e2 g7 w& J+ F
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; W+ G/ W+ v: @4 G% d
  89.                 printf("Input MAC error\n");: w# B* S: @; N* i
  90.                 return 1;! B; _& K  u/ p/ s
  91.         }  N, h! F' ^- j' t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- X) S' {  A0 A0 ~, L* \: ]
  93.         printf("\nPlease input new STBID: ");
    2 s+ i8 x5 B. `1 ^: ]9 a( E8 `
  94.         scanf("%s", stbid);/ T' k" K9 {7 t$ P( Q: O5 T0 B
  95.         if (strlen(stbid) != 18) {! |, n/ [) B" S. j+ \! F
  96.                 printf("Invalid stbid\n");2 j4 ^* Z1 R% K
  97.                 return 1;
    . i  t4 z9 o, A) y
  98.         }$ B$ u% ~: S* ~) f; G8 `
  99.         printf("\nNew parameters: \n");
      E! X5 S$ ]! E$ `( x1 S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / A' T( `0 I" y# \6 I: L+ b
  101.         printf("  STBID: %s\n", stbid);
    8 l+ F' B8 n5 n4 l
  102. 6 i: y& E' q5 ]5 A
  103.         printf("\nDo you want to change paramemters? (y/N) ");% C8 i7 s/ E7 q0 x
  104.         for (;;) {
    + P. _5 f) N; k- h5 S& s
  105.                 c = getchar();
    + n$ u& Q2 h6 ~, v5 `
  106.                 if (c == 'y' || c == 'Y')2 @1 m2 A0 _# z. g" B/ @
  107.                         break;# H9 C1 C% u) M; L0 z$ `2 w$ V
  108.                 if (c == 'n' || c == 'N') {( i1 B) ~. N0 r( T( R6 h
  109.                         printf("\nAborted.\n");, g+ m: H2 J. M" Y9 `% }
  110.                         return 1;
    # I7 o/ \  H3 w  L0 {# t8 Y
  111.                 }4 ^! }; L8 S) P$ h
  112.         }, w" r# Y, R: @! _& |
  113.         if (writeparam(mac, stbid) == 0) ! `- T9 y( K7 u& v% F+ L# s
  114.                 printf("Parameters changed.\n");6 Z1 x' ]" [! ^/ A( L9 U

  115. ' z8 s6 f) U2 y7 R8 o6 q  ]
  116.         return 0;1 J0 ^6 m: \; v! e# e
  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
5 e6 Y6 }5 S. P& S' k2 D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% n' U2 y! y& T' g& [$ E
你用的编译命令行格式是什么?
2 N2 u% Z7 P* c, K1 G5 A0 a
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-4 07:22 , Processed in 0.025022 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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