找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15671|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% ^$ C# n- U( H9 [/ z% C
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig6 P; Y) G" ]2 g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  b+ v/ X: ~. w0 H! h
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- d( E+ Z5 l: j9 `7 ]# k. t
8 L+ p2 T, i9 \1 S0 A: H7 h0 h4 p. O0 ?( ], g7 i$ e+ B1 D
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% H" Q2 |$ Y$ V$ v2 k3 Q
. T% ?3 R! l2 n) x' r* x" @
补充内容 (2012-3-8 09:42):: i9 ?- E" c4 b% x; L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 O; J/ ?3 V1 v
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. X4 {* Z7 W1 S: f  _; C) l$ B6 [* [: q
himr <address> <value>. sample: himr 0x80040000 0x0
" m9 |: W" a2 {1 R1 U+ K
  o4 @* V* |" b5 \* m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。( O: f3 p7 D. M
himr 0x80040000 0x00
& G$ d+ \. ]1 e. Qhimr 0x80040001 0x11
) H. m. e0 R- |4 b, j; d- K' qhimr 0x80040002 0x22$ Y& I# |' q" n1 k: F- ]+ E( P9 R6 P
himr 0x80040003 0x333 f$ S% s( X: ~2 y6 s5 x
himr 0x80040004 0x44
# V, |/ v6 r3 M% Z6 v' ^3 [1 k: ?4 whimr 0x80040005 0x55
0 Q: d9 a3 q- d- |1 K8 a7 \; O$ t
. c) w% z0 m. v+ O, VSN也是类似。
6 ?! m  y, _7 z8 u- [! f. O7 H. N- J* r  V/ T. V0 X
现在主要是,谁告诉我们MAC和SN的地址?' Z8 c4 q3 s  U/ M
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 W9 {5 |& O# @# \, A一直想找到运程修改MAC和SN的办法,苦于无解啊

- {. N9 A3 U( m! v4 e; Y  g" G* Z源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 $ @1 V3 h2 ?% T
2 U/ p% [$ Q( _% [9 ~6 L  d
修改的代码早有了。到今天不会编译。) p" @! y/ W. r1 H0 `( X7 s; I
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  n; K# d% i2 f1 p3 b. ~
  2. #include <malloc.h>
    , h$ I+ N* |& Y  k
  3. #include <sys/types.h>+ e; j; |8 ^9 u7 M" C
  4. #include <sys/stat.h>
    7 i4 y  H" C6 d0 k0 g) W9 ^, q* Q
  5. #include <sys/ioctl.h>4 K. K% x# Y6 K' L
  6. #include <stdio.h>
    0 i$ t- `1 b4 E$ W& t$ I3 U
  7. #include <string.h>
    ! E' X9 L& \2 \/ [; W! k

  8. 9 f; o$ _6 z  N9 i" p) y1 S2 f
  9. typedef struct {, R5 ]$ K5 _4 \( M
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; c# H- m6 ?" ]7 o0 l
  11.         unsigned int        sub_addr_count;- u! `+ T! x3 W" v, O1 j1 c6 ]
  12.         unsigned char*        e2prom_cmd_data;! |4 C: E$ C1 J, k' c
  13.         unsigned int        data_count;
    8 v# l" y8 Z9 P5 k8 s* c  w, z
  14. } e2prom_s_cmd;
    % m2 D- e* x8 f) n

  15. 4 |3 A: G, B4 ~; ?! p( D# v
  16. #define E2PROM_CMD_READ 1
    & `: e2 x8 c7 E4 A) m
  17. #define E2PROM_CMD_WRITE 2
    + v7 e0 B. S. N* ?2 D7 I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    9 l% n" h' r! G; w% W! \
  19. - @9 a) w! C9 |( G9 K) `' I& i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 ~" G2 i" {7 c1 h2 u& ]2 X+ F) v- N
  21. {
    ) Q) x" A- b: s& }4 o; w
  22.         int fd, ret;3 L& S* r/ `7 S0 p( D: V+ q, v0 w
  23.         e2prom_s_cmd arg;, n$ U; ?& u9 Y3 i+ m# u' t/ V
  24.         unsigned char buf[0x18];
    ' X3 |# m2 G7 X2 P# J; I
  25. 1 f& F) z' T! c. k
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 |9 g6 w6 T* e  c6 J2 Q
  27.         if (fd  < 0) {
    0 J) V# p: O/ {  [: K. z" S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ E4 q' ~+ T1 Q# N, D1 p- |4 z
  29.                 return -1;% ]$ J5 V( e+ n# d2 x
  30.         }
    7 C  S3 C7 E* ?% G5 o6 m8 g
  31.         arg.sub_addr_count      = 2;
    * A3 e9 d4 w& E* I0 V
  32.         arg.data_count          = 0x18;$ r- e3 {" X: `: W
  33.         arg.e2prom_cmd_sub_addr = 0x290;! y* j1 y# m' {4 Y
  34.         arg.e2prom_cmd_data     = buf;+ Q' q: o1 Z$ M' J- b1 R) ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);% z2 M; w9 E- E9 R. o  C4 v3 i. e
  36.         if (ret != 0) {" I% B% S8 j0 y3 K3 Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 l- n3 Q$ Z! }1 M+ U
  38.                 return -1;
    & `: g; x! D- \
  39.         }
    " V: a' b2 a9 t5 Q
  40.         memcpy(mac, buf, 6);7 Y* Q& U6 k$ `" K8 m, D8 E& v# }
  41.         memcpy(stbid, &buf[6], 18);" c/ I& m9 p6 a' j' k6 U) D
  42.         stbid[18] = '\0';
    2 Q- P# D0 G5 h/ u5 Q

  43. 1 E- X) d1 I/ H% a7 C+ A6 p
  44.         return 0;
    " {- N& w" {2 X" Q8 a
  45. }
    * P; N1 ^$ C! z# {

  46. ! f! Z5 _% r) K9 y" R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ C6 C! G: T6 Z2 N0 U5 {
  48. {
    + T. s4 l- a  Y) V: n
  49.         int fd, ret;7 o1 j7 T% A: K
  50.         e2prom_s_cmd arg;
    ! g! P3 v+ q! U1 `' v
  51.         unsigned char buf[0x18];' x; Y' h( `; _5 Y
  52. 8 h8 ~  X+ }3 F' E" ?: p4 Q5 h
  53.         memcpy(buf, mac, 6);
    9 Q3 e0 d; k5 i; s) C% e0 e5 F$ s
  54.         memcpy(&buf[6], stbid, 18);) A. Q% l; t" |3 `8 |. O9 J( _) i9 u
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; c, d' K* G- a' A" Q7 d5 {; K
  56.         if (fd  < 0) {
    / m" f  Z& r) C' e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) F0 Q& U) @5 x0 G% x2 M& b
  58.                 return -1;7 B% ~* z- y7 o$ V4 d5 X
  59.         }
    0 n& e" |+ c' A; r# z
  60.         arg.sub_addr_count      = 2;
    - V/ O; h1 X7 W' {
  61.         arg.data_count          = 0x18;6 U4 X4 Q+ |9 Y  c# G, P9 h* g5 t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    2 b" W, v! y+ R4 e0 n
  63.         arg.e2prom_cmd_data     = buf;8 j8 y3 |$ n* N" m  n% W0 i& A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# p& I9 q; r0 g# S( }
  65.         if (ret != 0) {
    * h8 q0 s* Q0 d" @2 q) E) G
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : C4 L8 u# I1 Q0 H
  67.                 return -1;8 o) k) U1 `  H, `9 V
  68.         }
      [; z/ G& e( u5 [" u. H9 A8 x! m

  69. & ~% Q' o4 S/ V) f6 C
  70.         return 0;& o$ |/ W' @) m1 N) ]5 G) i0 [: l
  71. }% y, v! H: B2 c( X

  72. - y. u$ g3 J  o
  73. int main()
    2 f! T2 @$ ?; Q
  74. {0 v. v8 X$ O  m( l' C0 A
  75.         char c;: k5 t$ k5 `, y& k8 r" b' Q) K
  76.         int i, macs[6];
    . d: d, L* J9 y8 o
  77.         unsigned char mac[6];$ R9 |; C& U: _/ e1 _& O5 }
  78.         unsigned char stbid[256];
    4 a. u6 `- b- r& {( o& H2 `* ?

  79. 5 p# e& N2 F, M3 u( s5 S
  80.         if (readparam(mac, stbid) < 0)0 f) L  p0 m8 G" J! t2 m6 [
  81.                 return 1;) ]/ W5 j7 W) m% n2 |9 n, A
  82. , f/ X5 ^( F: N. g* Z
  83.         printf("Current parameters: \n");- d, E6 e8 P) k( e' w
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 e; z1 z3 Q" ?8 w
  85.         printf("  STBID: %s\n", stbid);
    ! l# M( [! @1 [: X* w
  86.         5 s+ O: b0 `, N" P; M9 H/ Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 y( n! h# H, I; G$ s- H9 |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 w/ ^! Z( P  x
  89.                 printf("Input MAC error\n");; f4 U1 E# G" a& U) W7 ~
  90.                 return 1;5 o. O. \4 M, |) r9 O0 U8 p
  91.         }) D& F- l# k# C# T: j) G9 z% H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. b3 z5 V% |/ F* x
  93.         printf("\nPlease input new STBID: ");
    / K1 X: O: @. V0 o5 V" J" ^
  94.         scanf("%s", stbid);7 L" b7 C$ y: R7 J5 C
  95.         if (strlen(stbid) != 18) {
    . j2 c$ z3 N' @
  96.                 printf("Invalid stbid\n");
    ' Y& `9 p' A  z7 }$ V3 a
  97.                 return 1;
    ; O1 [, E2 E0 p  g: g6 m
  98.         }9 ]& d& m% |3 N
  99.         printf("\nNew parameters: \n");9 \8 N2 d7 E: v, Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& `: ]( B; }; b% R/ g
  101.         printf("  STBID: %s\n", stbid);) d' h, ~( Q2 x9 M2 m4 n: w

  102. 3 G) V2 f8 W3 [; u' \
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( i# w( S- _. j6 Z9 @/ O0 w, s8 h
  104.         for (;;) {9 O0 G. {6 U1 ~2 n
  105.                 c = getchar();* \+ K3 Q; W' |5 h' m" l, ?
  106.                 if (c == 'y' || c == 'Y')
    + V! Y/ B1 T, U
  107.                         break;
      J2 ?# m. e3 L* X, R9 n1 M" d% f
  108.                 if (c == 'n' || c == 'N') {
    / f# U: `- r  |; p$ p1 G/ E7 Q
  109.                         printf("\nAborted.\n");
    2 c+ t6 \& L! x; {+ _3 A
  110.                         return 1;+ ?. v7 j/ ~; V6 l+ F
  111.                 }
    # {' Z# o5 \6 G/ p: R
  112.         }3 ^5 l3 B3 {, |
  113.         if (writeparam(mac, stbid) == 0) 9 `5 l3 ]( R! J
  114.                 printf("Parameters changed.\n");
    $ V2 h5 h9 J4 s# X
  115. " `& Z- g7 h8 x" L2 h/ G
  116.         return 0;1 I! `4 {, c- k! _* F( x
  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
: J6 d& h; @  D在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

; L' w( ], A8 ^- m3 j9 W你用的编译命令行格式是什么?4 b* a: h2 i% `# y7 \
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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