找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15598|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 M; P; Y, I% N1 _5 y3 Q+ q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* Z& `6 e5 @2 a1 J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  P! ^& k) A, g  [4 O! }* Cusage: himr <address> <value>. sample: himr 0x80040000 0x0
/ C; s4 r. F8 G; b* _- ?( L) @6 X# f5 E/ F$ T& V( Z- a; Q+ c" v
* T5 ^9 i* G8 E1 e
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 C* Z8 P0 k+ W

% f. B" a1 j. `补充内容 (2012-3-8 09:42):, P1 ?5 _% a8 @$ ~% ^8 y' u
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- h4 J3 U; t; Y* w3 r
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) J( z" I8 S! O, b6 ^4 f" N  R/ F
; O3 y4 a) `( T" b& M4 f& v0 h$ Q
himr <address> <value>. sample: himr 0x80040000 0x0
1 b( d; j( C9 A; v9 y# b$ w7 v; g5 S0 b1 x
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" G5 M) A0 O, z4 {
himr 0x80040000 0x00
2 ~' V4 s! g! `2 v7 w- ^1 |9 Khimr 0x80040001 0x11! o# M; D0 r' D2 p: g' F8 I1 y  t
himr 0x80040002 0x229 U, X( G) V2 l
himr 0x80040003 0x33- T2 m' a) L# D2 |
himr 0x80040004 0x449 i4 a9 k3 v- C$ P$ x; F
himr 0x80040005 0x55
6 B( x4 u+ I! f- M+ l% n8 |, P# h) T1 e5 `
SN也是类似。! _5 C7 ]4 |% _' I

8 b3 I' u. H+ Y5 `+ V7 E' s# ?: s1 g; z现在主要是,谁告诉我们MAC和SN的地址?
. S2 ~% J; j+ h+ Q" |1 o
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' P0 G) _& F0 q) p, T( f
一直想找到运程修改MAC和SN的办法,苦于无解啊
; L3 _2 `, T: v$ ~8 M
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - |( O/ X' g/ J; R4 P& _6 G8 V
: M6 D, ?$ B$ K3 W( o
修改的代码早有了。到今天不会编译。
% E) G+ m8 J! j& l# w$ C: I" b需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * g: R& y& ?8 }/ m% I* n# ]
  2. #include <malloc.h>( U1 ^! ]" ]" D2 s
  3. #include <sys/types.h>/ W% O3 \) S( F9 X
  4. #include <sys/stat.h>
    ) j! ~2 {( I6 m* s+ B" j
  5. #include <sys/ioctl.h>
    . q$ D# {8 W1 S* ]
  6. #include <stdio.h>
    2 e9 q7 C" b6 R  Z+ u- d0 ^. j0 D
  7. #include <string.h>
      u( V$ J& ?8 L, H. q- C: ]/ e. S( G" ~; e
  8. , p3 {' P" T" r; s
  9. typedef struct {  K% o" x* t4 q/ |7 {
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 ]/ n* E% ?+ v
  11.         unsigned int        sub_addr_count;
    , d* d. r3 S/ R( y3 R) ^. D5 C; M8 _
  12.         unsigned char*        e2prom_cmd_data;
    : \! u/ I+ R# l. l
  13.         unsigned int        data_count;
    3 k. V3 ]. x8 K! {5 ]4 J2 b) E
  14. } e2prom_s_cmd;
    + P" y# n" T+ j3 k
  15. 6 x9 q. D7 w# C  G" d* y  {; P
  16. #define E2PROM_CMD_READ 1) V$ h5 @2 P. ^4 d
  17. #define E2PROM_CMD_WRITE 28 Y+ Q- x- H6 k+ M0 P7 t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 A! o/ {! S( a" U

  19. ' n" j- P2 P6 X, j* k. @
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 ?* |- O1 s+ V
  21. {8 T% d3 r" E+ H6 B0 Z. c3 e
  22.         int fd, ret;
    ( `5 b8 ?2 ~! r
  23.         e2prom_s_cmd arg;: V( l9 ^& y4 ?. |
  24.         unsigned char buf[0x18];5 K' L) B& F) B- \' u; N0 x
  25. 5 P6 }/ T# A2 C9 s  t9 x% Q& ~5 q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 f% A" C- Y5 w4 J8 M5 f
  27.         if (fd  < 0) {- \+ L8 g6 k6 `. y& ]
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 ]2 `9 \8 r5 }4 k
  29.                 return -1;8 i3 t4 f9 d/ y) X
  30.         }7 x% e3 r0 d7 c
  31.         arg.sub_addr_count      = 2;- g2 D3 `# K  B& ~0 O3 S
  32.         arg.data_count          = 0x18;) y4 y( ]5 P. B1 X
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ @! H6 R- C) C0 ~9 v/ S
  34.         arg.e2prom_cmd_data     = buf;! o) l$ A3 ]- ]& C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) _( w3 {' u) o4 E
  36.         if (ret != 0) {
    - Q( z' Y0 \% @2 L. F2 J
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, Y0 Q% E8 `2 Q. C7 i
  38.                 return -1;( I# b; t, c; R. q
  39.         }
    ' U5 P( Y5 b5 _. G9 ?; q- ~5 K; T
  40.         memcpy(mac, buf, 6);
    , `+ }' @0 b. A2 B8 K! ^/ F
  41.         memcpy(stbid, &buf[6], 18);+ g7 \; i" [; A  `8 B) \' ]& {
  42.         stbid[18] = '\0';
    : o, V0 W; ^: r

  43. / u# O4 O* @: z; L7 p
  44.         return 0;6 |+ R+ I; G. w( Q9 L9 j0 ~, f
  45. }* Y4 h, Y; Z4 b7 {0 O* `

  46.   X2 @+ d) F8 l. K4 m
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    / s  s5 D2 P; @" |8 L
  48. {
    ' E4 Z6 S  B; S. o! p; ?
  49.         int fd, ret;0 G, Y1 Y/ O' X
  50.         e2prom_s_cmd arg;: |7 s# |  G2 [# L+ k* }) f5 r
  51.         unsigned char buf[0x18];. F0 K$ l* p+ ?8 Q/ B7 k; d" G% h: C

  52. 0 Q& K+ `1 z) Y! Y
  53.         memcpy(buf, mac, 6);& l+ \+ ~' V1 \' [! m  z
  54.         memcpy(&buf[6], stbid, 18);
    / M* e0 u) r+ I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    , J, O9 y& p, u; m4 O
  56.         if (fd  < 0) {
    & Z0 W8 R# r- k7 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & F8 e/ ]5 L9 H! ^2 ^/ ]
  58.                 return -1;
    4 H3 A" J0 e" W
  59.         }
    8 |1 @  \  Q9 H
  60.         arg.sub_addr_count      = 2;
    2 |7 b: H. g5 v  c+ Y, L
  61.         arg.data_count          = 0x18;2 z: {2 c, N$ b$ B% t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & d0 ^5 @& Y7 \6 w/ g
  63.         arg.e2prom_cmd_data     = buf;& a6 }2 d. l% q, [! V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 `5 U0 W2 K* [8 g
  65.         if (ret != 0) {  v7 x- m3 u; X+ k: c, Z. w; p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 V8 e8 Y: R0 U
  67.                 return -1;
    3 g9 r4 j+ j! r$ c3 t- a& J
  68.         }, E2 v* b9 Z( e  X$ I

  69. 3 U/ f, Y( P( k& _% P9 D& |, S% V) \
  70.         return 0;
    % K3 f. W! m2 R+ V& S/ S5 K
  71. }) L4 G; z# z% e5 q+ i- w2 p* Z) c

  72. 9 P+ [' r) V" b5 H
  73. int main()3 L% R' E* m  G' q: k1 d8 k
  74. {3 [5 B" a: O3 @- a: D( R4 p+ p2 o1 g
  75.         char c;
    + [1 g$ @2 U: ^
  76.         int i, macs[6];; a+ \) g3 M7 p1 u4 g
  77.         unsigned char mac[6];
    2 j5 y* F* O# i( y+ G6 }
  78.         unsigned char stbid[256];9 g  F* }5 z2 J' h$ \
  79. - _! I4 B# `* T7 B7 N$ _
  80.         if (readparam(mac, stbid) < 0)
    - W: r8 U0 L% w
  81.                 return 1;
    8 |. F; I% z6 z8 s9 D+ ^5 H' Q$ e( x

  82. ) _1 }# J7 k& W7 ^
  83.         printf("Current parameters: \n");% L; C+ `' ~# D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - @( a/ v1 I; m" h- ~; K2 o
  85.         printf("  STBID: %s\n", stbid);
    1 M+ y& G3 V/ e5 b+ m1 T
  86.         8 u- L4 e$ c* L7 e6 Z. W7 @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% v+ b9 \( G  K* o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. u3 L7 ^1 e( v7 y
  89.                 printf("Input MAC error\n");. C. U# F( K/ ?
  90.                 return 1;
    * s& Z, b- @' n7 o& w8 G
  91.         }9 `+ l- p6 d: P1 H- l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 M1 H0 A* }8 V( m. t
  93.         printf("\nPlease input new STBID: ");! J1 O2 T  @( J: z; a+ d
  94.         scanf("%s", stbid);
    * o! P" s# ?4 Q0 p% ~
  95.         if (strlen(stbid) != 18) {% }$ W/ U( J% \% N9 h4 n/ l
  96.                 printf("Invalid stbid\n");
    8 F' U" X( ?6 i1 i2 ?* J& W8 u# h$ A. S
  97.                 return 1;
    1 r' z. H7 k* h/ V
  98.         }& y- @) w* U7 N/ r  W1 ~
  99.         printf("\nNew parameters: \n");( P6 S% m/ E, T' p
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + c) S% W8 k! E+ z- L+ T' c/ L
  101.         printf("  STBID: %s\n", stbid);2 e( n7 \5 {; h% d

  102. 7 W' L; Q) q" d1 B( L
  103.         printf("\nDo you want to change paramemters? (y/N) ");5 {+ C2 M* ~5 y
  104.         for (;;) {
    + m+ G" q) L4 w; C1 U. B$ R
  105.                 c = getchar();. J" i7 Z2 K- f( R5 m0 z# ~# j
  106.                 if (c == 'y' || c == 'Y')
    ( p' @( Q3 ^" n
  107.                         break;  d# p. _+ f& [
  108.                 if (c == 'n' || c == 'N') {
    5 K: o. o' y! F! q0 _
  109.                         printf("\nAborted.\n");
    # d+ q/ Q) V+ |. w
  110.                         return 1;  R. G) ]. I2 `; a. z, j  t7 L
  111.                 }6 s; G, P, @' O# e
  112.         }
    - x/ P$ d  p0 }0 I9 u
  113.         if (writeparam(mac, stbid) == 0) 2 S% B) `& i3 D: n/ r
  114.                 printf("Parameters changed.\n");# b" h/ n, C5 g9 P5 @. O& `% e7 H5 F

  115. 0 U3 d1 B+ ]  y2 f6 G
  116.         return 0;
    ! l1 U7 l9 ]2 a& V
  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 - b+ O) N1 P1 w
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( A3 B& j: w6 E) |$ w8 f6 |6 w! _
你用的编译命令行格式是什么?/ g! Z/ ]  P* L6 ^+ C: X% j' d% K
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-17 03:00 , Processed in 0.024608 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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