找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14973|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr- G1 J- a0 q' T
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig/ C" }) u4 x7 k& k
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. j; }: O' b% T. \9 _6 x4 m
usage: himr <address> <value>. sample: himr 0x80040000 0x0
% g4 K# C2 W- S/ a. A: i. L* m7 H2 @3 k

2 A, l" d7 i6 s( s0 q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ \$ ]$ C0 t; \

9 v: `; Y+ Q7 s! }! r3 N1 O补充内容 (2012-3-8 09:42):
1 g. |# \2 p( ]( M) o# W3 b+ yhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 `) ~% J0 X8 X+ S$ Q/ U6 n+ |) \3 A
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。# l" H, U( D8 L! \

! ~1 O/ z' x6 D, m; Z" phimr <address> <value>. sample: himr 0x80040000 0x0, {* b$ c+ |) E. @4 L0 O. B
) y! O2 l, J8 o, r
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, h9 I$ J8 ~, u" y* Lhimr 0x80040000 0x00
9 i6 z8 I+ f1 Z- ~4 Zhimr 0x80040001 0x11
2 X% L" p- H% p0 @1 G! X+ Y0 k3 Zhimr 0x80040002 0x22$ o/ @9 G: i# j% U$ l  j2 f
himr 0x80040003 0x33
0 ^# G. R4 ?9 m) g3 g; k; D+ x+ khimr 0x80040004 0x44
" W' b! e# @8 g! q6 Qhimr 0x80040005 0x55
8 V1 X3 G" T7 a1 L2 ?- h  l* ?6 K$ u+ n$ r4 ~, L5 w
SN也是类似。3 R& W& G# A- V
* \* P: ^6 n) m' k
现在主要是,谁告诉我们MAC和SN的地址?
3 W! h. c2 s# O" r# F* m
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% ^1 ~; L) j' [) r一直想找到运程修改MAC和SN的办法,苦于无解啊
6 X1 X8 `5 v2 H2 p
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 A' N9 I- B7 E1 F7 M' \( F. }0 l$ K7 U
修改的代码早有了。到今天不会编译。% Y# O9 @' b+ y$ B6 L3 U. D: r
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    8 ^8 s8 f9 z( Q2 d) O
  2. #include <malloc.h>
    ) u$ @% _, T0 v5 Q# |
  3. #include <sys/types.h>
    * Y9 h& T( `9 p! z: E4 M- ?
  4. #include <sys/stat.h>
    ) X6 @! y2 w" J; M
  5. #include <sys/ioctl.h>
    8 w/ R  J8 p! q& u) ~$ ]
  6. #include <stdio.h>9 x- X' t6 c" [5 p, x
  7. #include <string.h>* Y( r' L' Y" S+ _( w2 {2 T, E- b

  8. ! s, U2 ?2 ?, J' k$ S
  9. typedef struct {+ J: `# M. \7 H% t" R3 i) Z4 h8 ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    / F* E: Q" R! ?  s& u
  11.         unsigned int        sub_addr_count;
    7 l/ T% R! [0 f- O$ z* G2 F
  12.         unsigned char*        e2prom_cmd_data;$ W& }/ f, h- J" N& i
  13.         unsigned int        data_count;- z( O  d  c& |" [7 d1 F( c
  14. } e2prom_s_cmd;( v1 v0 D5 O9 L/ ?8 y8 Z
  15. $ {* f6 x! x% F% R
  16. #define E2PROM_CMD_READ 17 `6 o+ T: h. h# X6 W" k4 P, R
  17. #define E2PROM_CMD_WRITE 2
    3 g9 R+ P; r4 R2 [( C2 x1 e
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! g! W: h$ K8 C5 ^6 j
  19. $ x% G% q: g% z- F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( ~: F3 s5 E6 ]2 X2 B& n
  21. {$ T/ R0 Z( \4 i/ N8 ^
  22.         int fd, ret;; A+ i2 I. o6 T8 }
  23.         e2prom_s_cmd arg;3 b5 m/ r' ~2 H3 r, v
  24.         unsigned char buf[0x18];
    5 j& z% x% \# Z7 T" f, ^' Q2 f
  25. 4 w& r0 {7 [: X! m9 z" l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    8 A9 s+ B# H* ^3 O4 s
  27.         if (fd  < 0) {- S3 ^3 L+ B0 I, S. H! A5 f/ Y: ~9 B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 O" c6 |$ A: ~5 ^5 o0 h
  29.                 return -1;
    $ `; c5 w2 {7 f3 Q7 I
  30.         }
    + s0 f4 c# o) ?* b" i; L2 f) z& |
  31.         arg.sub_addr_count      = 2;; S3 W) x7 Z) j, p( s4 C: S
  32.         arg.data_count          = 0x18;
    1 w4 ~, g4 f+ y9 ^% v8 @0 G& H5 x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - Y% `2 H! N; O6 R8 C% K- t
  34.         arg.e2prom_cmd_data     = buf;4 O$ a! u+ R# m& K3 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( ]  q5 S+ K1 t2 N: I- B; ?4 W0 ]9 V
  36.         if (ret != 0) {! R: l5 W9 N( G; b* Y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- j4 u4 e* J6 O* @+ P
  38.                 return -1;
    4 x# O* O6 F$ \- k0 K0 B5 s" M
  39.         }, b8 T" ^' Q+ q6 a$ K# o' x# N
  40.         memcpy(mac, buf, 6);
    4 f4 c& v0 V& K8 y% u% w' \
  41.         memcpy(stbid, &buf[6], 18);. H# @7 \6 ?- Y8 l/ N/ @- f. ^9 F
  42.         stbid[18] = '\0';( l! H* d# g! h  a9 ?; u
  43. / W4 w% w1 ]* e$ i& V8 r- O
  44.         return 0;( v# H( A) i1 }8 [! U. M0 w
  45. }. n/ ^- S9 j; l7 g/ `2 y' ?1 Y
  46. : j+ d3 [6 D) b; o7 q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)5 n! _2 N( D7 [( n- N! d0 D
  48. {8 T7 m+ a8 F9 g% Y! m& A) p
  49.         int fd, ret;
    # a7 q  y9 B' @: u* ~# B4 \
  50.         e2prom_s_cmd arg;
    ' I! c2 S* r' {! T9 d0 J+ A
  51.         unsigned char buf[0x18];
    6 V0 a, d$ A# [9 @& ~
  52. 6 r7 Q$ s& B/ p* b
  53.         memcpy(buf, mac, 6);
    ( ?0 {" D  H6 {7 k  ~3 h
  54.         memcpy(&buf[6], stbid, 18);' _( f5 @  C, ?) ~5 @/ D" ~
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; K) B' H2 W4 c$ ^
  56.         if (fd  < 0) {( N# |3 O+ K/ C' K/ {
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # k+ A9 I" h7 B6 E# O& ?% L
  58.                 return -1;
    " O1 s# g0 X* O: W) l
  59.         }& D4 Y, F/ ?! H+ K4 o
  60.         arg.sub_addr_count      = 2;6 c- e4 L6 R# F; h- {0 r0 l8 O9 V& P1 p
  61.         arg.data_count          = 0x18;' E8 E) U8 B% h- [6 P
  62.         arg.e2prom_cmd_sub_addr = 0x290;! U0 J; i* _( _/ N+ ^/ x- I" j7 O# ~
  63.         arg.e2prom_cmd_data     = buf;7 ]8 I5 f" D, O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);) [* t7 |6 `/ E$ [6 R4 A0 |
  65.         if (ret != 0) {
    : ^5 ~  D) N; [, ?1 \& g" Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- ^4 d: [2 t* k$ U6 C
  67.                 return -1;
    4 P4 k0 A3 `* r" t3 m
  68.         }/ I3 W& g2 M' p! C5 ]

  69. 1 V9 y6 ?: S4 \( |. W# G
  70.         return 0;, J( V5 Q' r. N& R
  71. }
    2 k0 a& ^9 n- z# i9 D2 q
  72.   m8 y9 E* N- k, A
  73. int main()- _* u; {& _  \
  74. {
    / a- {+ B. u7 O$ w+ f
  75.         char c;
    0 @7 k8 }' a$ U$ Q" o
  76.         int i, macs[6];( Z( U+ z3 P4 j9 ^* v4 F
  77.         unsigned char mac[6];
    9 T% a9 s; T) M: M7 R5 I
  78.         unsigned char stbid[256];# o3 R9 D2 q  H( ], B$ \
  79. + H8 b0 M, q4 _/ I
  80.         if (readparam(mac, stbid) < 0)
    / D1 u: Q: L/ s0 Q  U6 [+ a
  81.                 return 1;/ Z. T! R: U& C

  82. 1 b1 L% p* o8 d, Y5 j
  83.         printf("Current parameters: \n");
    9 M6 N4 E+ @! e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& \. r, f0 A' R% e% O+ `
  85.         printf("  STBID: %s\n", stbid);
    " P# R3 k  ]$ [. i  H
  86.         " {% s  N0 P, i* N3 e: u0 n* k) Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) n6 o/ w% O3 a- p
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# B, E1 e! z7 {3 s/ D
  89.                 printf("Input MAC error\n");
    2 Y9 {7 a' S* F; q: [
  90.                 return 1;# O1 m4 s) y- l% t" g
  91.         }
    : V. A# a- Q; y4 h
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " i, E* h! N  S+ \2 u6 [
  93.         printf("\nPlease input new STBID: ");
    5 H' n* H: H0 w' ]
  94.         scanf("%s", stbid);
      U# Z: T! l& g
  95.         if (strlen(stbid) != 18) {4 |2 L+ [$ p0 s: ]. q/ g0 i; w
  96.                 printf("Invalid stbid\n");
    * G! {% l' s& `7 _' [2 q5 B
  97.                 return 1;* `) ]" X5 f) W, |& p' f1 f8 b
  98.         }9 ]( ~7 l# A* A7 N$ d$ {
  99.         printf("\nNew parameters: \n");
      t& A+ l  [( a; L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  R5 S7 v: r3 ?3 H
  101.         printf("  STBID: %s\n", stbid);
    3 t) B& o* X2 _5 q( b! u
  102. " }5 _2 d4 D9 [- ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");7 E" I5 h% x+ ?5 `6 x/ O
  104.         for (;;) {
    3 r2 t4 C. a7 w
  105.                 c = getchar();/ r6 y% E; `/ F
  106.                 if (c == 'y' || c == 'Y')
    : J1 _; B# q( w  Y& o% W, S
  107.                         break;
    4 X' }4 V7 b3 i) D. j' Q6 b
  108.                 if (c == 'n' || c == 'N') {
    + e( \9 t! x! h! l/ X" A
  109.                         printf("\nAborted.\n");
    5 z' y5 G" Z4 ?# A* M6 X0 t  p
  110.                         return 1;
    $ x( P2 T* d3 w' l  y
  111.                 }
    ) Z! O/ S* H+ W7 w: X) e( C
  112.         }
    2 Y. b' _- H+ i7 d" A" j
  113.         if (writeparam(mac, stbid) == 0)
    5 T6 E3 ?) m8 m, `1 k+ Z- w
  114.                 printf("Parameters changed.\n");, Q$ D7 J7 z+ h, c* b6 M! M
  115. + I9 c6 F* L) t$ S4 ^+ r$ o
  116.         return 0;. t; P" m4 v  l+ S# b( x  p2 D
  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
. X" ^0 I9 t3 n# E+ A1 U在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% D2 H6 K0 g/ n. F
你用的编译命令行格式是什么?$ X" v2 R9 Z8 A+ m
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-5 16:24 , Processed in 0.024530 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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