找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15260|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : r0 m( C/ x# k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig( j0 I% ^, I, E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# L4 _. |/ b. _4 g4 n
usage: himr <address> <value>. sample: himr 0x80040000 0x0
9 _7 G9 M& S5 C) y6 Q. A6 T* r5 n

" ]& T1 W0 |* a2 S& h/ T2 r, [不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* t4 c! q# f. B9 }6 Q

1 X/ W2 D- f0 W: c; o/ I: d' @补充内容 (2012-3-8 09:42):) F2 r5 I4 y4 X. i
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* k2 p% T6 t# T6 K! Q+ i, a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 M. t7 Y4 @0 b9 ^! {! o) ?
( m1 H- M: `, f8 J6 g' v$ w! N5 U7 O6 ~himr <address> <value>. sample: himr 0x80040000 0x0
5 E2 v* N, J5 v7 j9 |& @. A6 u# E& H5 S5 c
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 J  Y" z" R& n5 b
himr 0x80040000 0x00
. v" t- {4 y( ^himr 0x80040001 0x113 [+ e8 \% [- @
himr 0x80040002 0x22" `9 q) E7 l- P
himr 0x80040003 0x33
* v4 v( {7 s; X( n; `+ bhimr 0x80040004 0x44% E1 N. p6 w. {& g6 |
himr 0x80040005 0x55
' Z. Y6 g+ @( d$ Y7 G' z, K
+ \/ c! y3 h* z+ E$ KSN也是类似。. ]5 ~+ P8 Y/ ]9 [

9 h! E1 a3 w$ x: r现在主要是,谁告诉我们MAC和SN的地址?
7 L. M: g+ m; C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , G1 J0 k, J2 F" ^
一直想找到运程修改MAC和SN的办法,苦于无解啊

. F1 ^2 B4 k& m9 e源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : p. U( h) Y* y1 R% q

0 s+ M. N9 G  V5 o9 f修改的代码早有了。到今天不会编译。" \0 W1 I, E5 z1 }: O' _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>" [$ L1 ^( V# ]6 b) {7 q
  2. #include <malloc.h>2 O: ^/ S4 N% U
  3. #include <sys/types.h>: w5 W9 N* S5 t+ R/ e
  4. #include <sys/stat.h>
    ! n( p5 k( s6 [8 K7 [
  5. #include <sys/ioctl.h>! e4 T" G# Y. y' E7 U. Y
  6. #include <stdio.h>2 N! z8 R( k' m& @
  7. #include <string.h>
    7 [7 |! F5 Q- r$ m' F
  8. 4 }' b7 m: w0 i
  9. typedef struct {/ d; u4 v' K. f4 N% W- o9 S, n
  10.         unsigned int        e2prom_cmd_sub_addr;' a8 i1 m# z) M- d; i
  11.         unsigned int        sub_addr_count;, O. l) D5 z# X+ x. D! E7 U2 @
  12.         unsigned char*        e2prom_cmd_data;
    1 B# C4 l, ~) D- U
  13.         unsigned int        data_count;, g4 Q( S4 L" p4 y
  14. } e2prom_s_cmd;
    ) ?# O7 w9 r; y. c3 C

  15. " a* A8 b& p  S) e
  16. #define E2PROM_CMD_READ 1. x1 b' _$ [8 v  H- D: i) g2 F
  17. #define E2PROM_CMD_WRITE 21 h: b5 e' m" D+ P* O+ {9 d, T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"1 x4 T( W! D4 z! a/ D* q1 w# Y4 U$ r
  19. 9 \! N! n" c1 }/ m. _, ^( y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * I& p! e4 o" y. D
  21. {
    . W: y& |) ?% c! d" q9 h
  22.         int fd, ret;- V/ l* w  v* i5 ?' a; v. o* L! H
  23.         e2prom_s_cmd arg;
    5 c  U% O  c7 ?& H' o
  24.         unsigned char buf[0x18];$ P2 `' ]  A6 Q, q5 V" T
  25. . k  D5 q+ i5 H  E  i) A: j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - W& P% `% q: `% s2 |& g
  27.         if (fd  < 0) {
    & g8 p3 I0 O9 Z+ ?; m; j
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / C3 A* K2 g* S$ [1 _- {9 u
  29.                 return -1;
    % ?1 R. c$ [: {' F4 [( g' d
  30.         }. V( e, ]5 u& e% X
  31.         arg.sub_addr_count      = 2;
    4 R- Q- n2 O, g& b8 [2 v; q, `& o
  32.         arg.data_count          = 0x18;
    # e2 u& u3 i$ d& H
  33.         arg.e2prom_cmd_sub_addr = 0x290;8 k- j/ O9 n- B9 u% a
  34.         arg.e2prom_cmd_data     = buf;6 @8 p+ l; x# ]; O, X9 D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 ]9 R( X% ~6 G& C% o5 M. f  M
  36.         if (ret != 0) {+ V+ x6 r& T( d+ }) @/ F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 x5 a( P- \/ B
  38.                 return -1;
    * |* r0 s2 T1 [7 o4 v0 I4 E6 d
  39.         }  _+ Q' i- t2 c+ i# v
  40.         memcpy(mac, buf, 6);
    ( ~8 e1 s" k6 p/ b% E# {& l& Z9 L
  41.         memcpy(stbid, &buf[6], 18);
    % Y& Q  j) f4 e5 P; G, s
  42.         stbid[18] = '\0';
    / O+ L$ H7 i& {' c9 ^* y  e
  43. 8 b8 U( n7 ?% [
  44.         return 0;
    # n* K' b5 b9 A) N0 y
  45. }) W+ Q+ u" L. _
  46. ) r1 g- ]9 D# ?; p1 j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : M8 W' G! c) Z
  48. {% [, I: x# U& |5 F1 C2 R
  49.         int fd, ret;2 B2 x4 _' }5 Z3 w% c; R0 ^9 j
  50.         e2prom_s_cmd arg;( [1 p0 Z2 @; K
  51.         unsigned char buf[0x18];
    9 W" K4 x! N7 X- Y3 K# G7 o
  52. ( l& M& Z* e3 ^, E0 N! f; F9 r
  53.         memcpy(buf, mac, 6);
    . h/ A8 t5 \7 a; x- O7 P- g# W
  54.         memcpy(&buf[6], stbid, 18);
    + L1 }9 G4 k( |! t0 E
  55.         fd = open(E2PROM_DEVICE, O_RDWR);1 e/ b* J# ^7 r
  56.         if (fd  < 0) {4 D9 G0 {2 P, n+ W; f9 m  t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' u  W- n1 `7 u2 s# c. [, X3 @
  58.                 return -1;
    , i" R/ ?9 r2 ^. x
  59.         }+ I% S( @3 L* e% X
  60.         arg.sub_addr_count      = 2;
    . L6 v" Z5 e: r
  61.         arg.data_count          = 0x18;
    ) a  R; L5 W- V; Y2 |; E% U% N
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + T" S8 ^' A) `/ {( x
  63.         arg.e2prom_cmd_data     = buf;
    0 O$ o+ i, h1 ?! W* _4 N$ Y
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 I4 z; |+ V) A% B5 E+ Z
  65.         if (ret != 0) {
    5 L  r; K3 |3 u) n: y) G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ' ~+ e- R0 s- [! y4 N. [/ T: f6 W* s
  67.                 return -1;
      L! R9 g2 T7 W0 N: F5 r. ~
  68.         }; k4 R5 v1 n" K
  69. ! i" C- S9 X: y4 l
  70.         return 0;
    7 P9 O: Q- v8 W( t, a
  71. }$ ^. F# H4 P6 R* n
  72. . Z7 _* @' t1 S9 ^. G0 A' d
  73. int main(): z% q& `9 f; B1 h, }
  74. {; r4 u+ ^0 b- f
  75.         char c;0 b1 b0 {0 G3 T) I. D
  76.         int i, macs[6];
    6 A6 L* ?& C  ^7 T: |4 Z$ ?
  77.         unsigned char mac[6];" S$ K1 K" |/ E
  78.         unsigned char stbid[256];; w5 ^! t; ]4 b4 v! s7 @0 P. U

  79. 6 L) U3 W0 F8 B  ?5 i/ D; K% P
  80.         if (readparam(mac, stbid) < 0)
    ) a' ^2 P% t3 u4 ?. w$ r8 h) D7 d
  81.                 return 1;
    ! `, _% H/ x9 w
  82. ) G# F# ]" U1 q7 e
  83.         printf("Current parameters: \n");* {9 O) ?6 m- |9 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);$ c# @/ o) j6 N; [' H. I
  85.         printf("  STBID: %s\n", stbid);
    / [: {! _6 [6 L4 O' q
  86.           X' X7 \! Y8 L+ W1 w
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    : j/ ?' r& c; d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , k+ h: ^; |9 I8 e. f/ e& {
  89.                 printf("Input MAC error\n");  _; w+ Z% z' e( O' p6 |# a8 F
  90.                 return 1;
    6 t; g+ j( u$ F2 g2 F
  91.         }
    + E! `) }) b3 g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( \( i8 ]; F7 t' k
  93.         printf("\nPlease input new STBID: ");" P0 w1 f! \; g, p
  94.         scanf("%s", stbid);
    6 C$ m# r& J% ]# Z: G
  95.         if (strlen(stbid) != 18) {* u; B, o+ r; V; @! a
  96.                 printf("Invalid stbid\n");
    % a& i% C9 r6 _6 O( N
  97.                 return 1;
      g& ~) D& r- e
  98.         }% }4 j# v# z$ Y# ]* `& g
  99.         printf("\nNew parameters: \n");
    ; v4 d- [7 m! ~3 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  T& k# f# b1 H5 w( `( o+ {8 s
  101.         printf("  STBID: %s\n", stbid);; f, D! G4 y' V; [3 P, x, R) h
  102. 1 @+ ?1 @0 R7 {9 {6 X
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 w9 k+ i8 S5 M1 X- a/ m) ]
  104.         for (;;) {, [7 R2 T! K2 j- a6 k0 x
  105.                 c = getchar();' t  G+ Q( v  J; _6 O' F! T
  106.                 if (c == 'y' || c == 'Y')
    ! o( s: `5 [( p8 g0 R) c
  107.                         break;
    9 K5 k6 k: ^: {5 a0 `) K
  108.                 if (c == 'n' || c == 'N') {" Z) Z6 p( t5 @+ j  Q! E
  109.                         printf("\nAborted.\n");1 F/ d8 N! R: g8 s5 j
  110.                         return 1;& Z  H  f4 g- T. N- y' b: G5 \, x
  111.                 }8 U5 x) N% ^. |
  112.         }
    * {% u( y5 p3 S4 }8 b$ J2 K" [' y
  113.         if (writeparam(mac, stbid) == 0)
    " Q0 Q! p7 A. M$ Q! _
  114.                 printf("Parameters changed.\n");0 o) z( C  j& @7 m$ W/ E: c7 x

  115. ; I' u$ ~- d: u- [
  116.         return 0;9 V; [6 V/ e: E+ q
  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/ N2 q: Z9 x: I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
+ s0 Z0 G1 n7 ~2 w: |+ U
你用的编译命令行格式是什么?
  S( o7 m9 P/ ~% U. f
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-14 01:50 , Processed in 0.026026 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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