找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15738|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + p9 S" D) o* \) z, \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 a1 F( [, e% t0 u& l& \; E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
( ^7 q: f+ Z- |/ Y5 i* t# R2 Ousage: himr <address> <value>. sample: himr 0x80040000 0x0
5 k: s3 n2 A1 b" s: c4 a( K1 A
: Z; M* t3 `0 m
0 j2 G9 a; w( G; Z2 k& A7 W) E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ J' n! D8 K% d, a+ b& K; B+ U$ o1 S% U+ d6 }# |6 i5 r
补充内容 (2012-3-8 09:42):/ |9 L' ]4 `3 q' ?5 h# w
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 z1 r, v( R0 O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。4 s" P- S3 D1 O* a( r

% Y, m! y$ F/ A! O* qhimr <address> <value>. sample: himr 0x80040000 0x05 p: s' Z. |% u9 J# q. y& E. z
  M* s. f2 m' j  v
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ v* C7 ^3 w: i4 C& G; P: {himr 0x80040000 0x00# C6 o* |; K) T. O, f, l- x% T
himr 0x80040001 0x115 w1 D4 G0 J/ r# ]" A5 M% X
himr 0x80040002 0x22  O" ^$ P- F5 [3 Z8 }4 @
himr 0x80040003 0x333 M: z/ o9 f1 e2 [3 H8 h8 Q0 D
himr 0x80040004 0x44
% m; d0 R, ^% w4 `$ zhimr 0x80040005 0x55
! W0 X. \1 [& m( Z( u+ r' l# l4 p2 ?' s4 j) A" w
SN也是类似。0 x9 i" c" Z$ _6 d1 z; ^* F$ E
* v! a3 D' o+ i+ n+ u! |
现在主要是,谁告诉我们MAC和SN的地址?0 L" `& {" d3 X6 G5 {4 C. S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 T- r* ~+ ?1 h5 c! y% i2 E
一直想找到运程修改MAC和SN的办法,苦于无解啊
. C) R2 M1 \9 [; L# z* i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
/ v, O3 \& h& @) k
2 i8 H( u( L0 V( @修改的代码早有了。到今天不会编译。
# F) u! t% M. l1 D3 n' @需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; b% Y" z& ?) }/ H% ]
  2. #include <malloc.h>6 |7 N8 x; t0 T. S, S
  3. #include <sys/types.h>  w$ c1 f8 k( {
  4. #include <sys/stat.h>% B! K/ p- i* m; D4 G
  5. #include <sys/ioctl.h># d6 u& i4 n3 b2 M! @
  6. #include <stdio.h>
    9 _5 c0 Q+ |4 T: X( a% j
  7. #include <string.h>5 n8 R# D$ W, m- v0 y

  8. % r% K5 t" n8 F$ R9 p* G& K
  9. typedef struct {) F# D5 k/ E' |' B5 B( e2 k1 m9 U
  10.         unsigned int        e2prom_cmd_sub_addr;# ~# ]# n8 U7 Z, _! c; N8 j
  11.         unsigned int        sub_addr_count;
    ' T0 T. Q1 U8 c4 J6 g3 G
  12.         unsigned char*        e2prom_cmd_data;
    . T6 K/ J& }! Q" T" S
  13.         unsigned int        data_count;
    & ^7 i! C4 O# y$ ~
  14. } e2prom_s_cmd;
    ) B3 I8 e: T* V5 z8 O# f6 Z* K0 _
  15. $ @: E1 R- l9 ~
  16. #define E2PROM_CMD_READ 1
    + `5 z1 B1 y/ U( _# Y4 j
  17. #define E2PROM_CMD_WRITE 2& g( T! ]+ o/ W- f! H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 {/ o: R. U) m" \! S+ l( S

  19. 4 `8 G; t  u6 ~+ _. b* A
  20. static int readparam(unsigned char *mac, unsigned char *stbid), m( f* {) |$ m$ O0 l: g4 T, D: u! [
  21. {
    # U% T- \% j: L
  22.         int fd, ret;. M/ h0 j; O# J* W3 D9 T
  23.         e2prom_s_cmd arg;
    , d4 S0 `* v' Q: L
  24.         unsigned char buf[0x18];+ F# g5 S8 W& x8 m7 w1 `
  25. . R  r( t6 m: a! h  A. ]
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 X5 s. a3 N9 P! D
  27.         if (fd  < 0) {! [6 g0 U4 w( l7 ?, |3 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * S" f$ h! t+ {$ m
  29.                 return -1;" D8 J# k% U" e  \4 j
  30.         }& N" S  K7 h5 N# g5 _$ @% Q
  31.         arg.sub_addr_count      = 2;
    1 s( g2 T, Q9 b4 p0 Q. |6 {5 C9 D* q
  32.         arg.data_count          = 0x18;
    6 t& l9 U/ l6 _
  33.         arg.e2prom_cmd_sub_addr = 0x290;  ~3 d( ^* a, t; {/ y$ L
  34.         arg.e2prom_cmd_data     = buf;
    , J# c" J- @+ U& r+ `0 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 m2 P; S% P  V, }% {; s
  36.         if (ret != 0) {
    : j9 Y) @) z' G- f" {6 F3 F4 ]' C
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; Q% n/ e. t: k5 @2 ~- X
  38.                 return -1;# _& P5 n5 f2 b/ O% T) N1 h
  39.         }
    6 U" N. ^5 l$ V
  40.         memcpy(mac, buf, 6);, o4 O0 H$ f' p" n
  41.         memcpy(stbid, &buf[6], 18);' a% G, R) O1 E2 y! p2 L
  42.         stbid[18] = '\0';
    % s) h  T( S' t

  43. $ }2 e0 x, p7 g" p
  44.         return 0;' Q6 L$ c# j+ ?" _' T* ~
  45. }
    4 o1 B; N: b  r7 w: r/ c: O7 d4 M

  46. 1 l+ G3 E# r% q9 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! T# E2 n2 L: g6 b3 k/ n* O
  48. {
    2 ?6 [  @# P: ^4 N
  49.         int fd, ret;$ ?: Y+ i7 d. B0 e  n! B. k
  50.         e2prom_s_cmd arg;0 v! ^) D. T: j5 d* \3 e) ^
  51.         unsigned char buf[0x18];
    ) O2 `) I7 ~$ X* x: B4 z% y
  52. ! O; y/ w9 E. b8 r" _0 N$ e  B: Q
  53.         memcpy(buf, mac, 6);
    % M; J8 ~3 ?4 E6 A+ s1 `
  54.         memcpy(&buf[6], stbid, 18);
    - N1 r6 F- Z2 h$ _+ G$ B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);7 ~0 ]! {' _4 b/ x1 b
  56.         if (fd  < 0) {8 R5 R) p/ E8 N" V- ~. k$ w& \. U- D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: w; o. y; o. a1 }7 F5 [
  58.                 return -1;7 v& N0 [/ }: n3 j4 G( j
  59.         }
    3 F0 r" x7 E  h3 [, |4 t) Q
  60.         arg.sub_addr_count      = 2;, P, l" N% V- O  U
  61.         arg.data_count          = 0x18;9 Y, b' Z! B. B. O: H8 t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 O' C: m/ y- U( Z. k# l
  63.         arg.e2prom_cmd_data     = buf;
    ! q! z, H# a* Z- D  z' ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. N4 \/ B* x  Z# S. G+ T& G. |2 S! G
  65.         if (ret != 0) {
    5 P0 P* e# w. Y7 v) Y7 }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " f" d" q" T. o
  67.                 return -1;
      P" p' x0 O6 f0 p$ R+ _3 c3 o
  68.         }
    . U( l7 |5 V. c1 p+ K9 B
  69. 1 n6 [: E3 V" v% b% x% g" n
  70.         return 0;: G( k4 Y; Z$ C* l1 L2 ?0 p0 y- Z
  71. }
      y9 n" n+ r" V
  72. " [$ t* ^9 B$ O; b# d) x  }+ b
  73. int main()1 a' I6 r6 y. K4 Z' V
  74. {
    ; D2 j5 s- c: p( }' z
  75.         char c;$ y5 D1 t4 T" E) A4 Q
  76.         int i, macs[6];
    ) C* k4 ~, m2 d# `, y; e6 k
  77.         unsigned char mac[6];; r" G8 R3 p4 o
  78.         unsigned char stbid[256];8 K9 q+ m0 b& e/ b' ~
  79. 9 g/ H- R* D$ s- t# U
  80.         if (readparam(mac, stbid) < 0)2 w9 z( c; ^. p
  81.                 return 1;
    2 C5 u1 g* J2 w
  82. 2 c; q( U1 {& A/ p( A% s  k
  83.         printf("Current parameters: \n");# w) F$ X. ~8 a+ y3 I
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# P' \6 @, E! K& {
  85.         printf("  STBID: %s\n", stbid);' r5 r- Y7 Y$ {$ j
  86.        
    * s/ L: r7 D) K2 ^/ t" }; t; h2 Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 O9 T! Z& I4 J
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 O9 @" R6 U. d9 E2 }" R: v
  89.                 printf("Input MAC error\n");9 r4 j, g- P+ M
  90.                 return 1;
    % \$ b* n# X9 y+ ]! L8 m
  91.         }1 j. t' S' m7 f) E* t' T( [  U6 J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. C4 K% Q( g2 L
  93.         printf("\nPlease input new STBID: ");
    0 H2 i! F, ~) A0 \/ v; T+ `
  94.         scanf("%s", stbid);5 F! A) v+ c8 O3 B
  95.         if (strlen(stbid) != 18) {7 Y. k' `. ~* z" q2 G
  96.                 printf("Invalid stbid\n");
    2 W3 J5 Y5 G- A' J0 R/ m
  97.                 return 1;% h& P  A8 s2 ~
  98.         }( R* H4 J$ F* F+ z! |7 t
  99.         printf("\nNew parameters: \n");
    ) w3 K6 p. L- m- n, B
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 f7 w2 p: X, A2 F+ V/ o5 N8 u8 {
  101.         printf("  STBID: %s\n", stbid);6 W8 n: m2 W: |3 L% M; H4 j8 }

  102. ( x9 j$ l0 D6 Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");" X/ A* `, L5 s+ K( j
  104.         for (;;) {9 X7 w9 m% }9 B  z- l
  105.                 c = getchar();! I8 M$ O" y7 z: z9 F
  106.                 if (c == 'y' || c == 'Y')1 ]$ D1 b2 D7 p* m" A. K
  107.                         break;
    7 y+ X2 X" ]& F$ \. D) a9 s2 _0 l
  108.                 if (c == 'n' || c == 'N') {* c; Q; `7 ?- n% Q5 ?; w1 ?9 p
  109.                         printf("\nAborted.\n");' P5 {% b; W; P9 h
  110.                         return 1;
    " ^  O# a0 @/ y7 e: [5 V
  111.                 }
    7 s' P/ r9 E; p% E; q
  112.         }9 u$ \* |! S) ?* B9 l) W& l% ~- J
  113.         if (writeparam(mac, stbid) == 0)   U' v* y4 h2 a" G  p* {6 p
  114.                 printf("Parameters changed.\n");
    * @, R% M: e+ Q$ ^  ^" }8 ^
  115. & N0 A8 m- {# Y1 |7 v# F
  116.         return 0;1 z8 E+ j  J: Q$ w! @3 d7 t6 \. 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 ) J% z" s6 w- M* G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ k# ~# g0 R- e$ `, u你用的编译命令行格式是什么?
; Z) ]# Q: X/ Y5 ^! [8 P
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-8 17:23 , Processed in 1.824761 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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