查看: 17836|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * W/ x( p  H! P$ `. U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig- ?6 p! t9 g- ~  j" s3 H5 l" g/ V2 t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- j: J3 D4 C: w- n- B% ^; H
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) J& t; A# W  Z0 U' c$ M$ A* w  b3 r9 f% q! j! r# J
8 P* K* F9 ^; r, e& i2 z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ e0 ~3 h9 [" O0 e' z: j" J5 T. q; j3 i* ~! i- K9 N5 Y
补充内容 (2012-3-8 09:42):+ ]* {+ k# N9 O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* b& u: w" D* \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。# `. Q7 X% O8 d) e2 r! h( U( p8 h& H  x
, s- Q9 l; T3 K2 |6 y5 l7 o& D
himr <address> <value>. sample: himr 0x80040000 0x07 k: {, t2 c. ^2 ^

, K# x9 s4 h/ f# ]# @3 u4 z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) m( w! x- k/ R
himr 0x80040000 0x00
4 Z( j: R: \1 k/ i* g. f( N; W3 Qhimr 0x80040001 0x11' g( @) q$ n; Y1 `2 }4 F% J* |1 Z' Z
himr 0x80040002 0x22
$ }8 o6 {, G& K- Fhimr 0x80040003 0x33
$ _* M. U9 E0 w! X: s- ~, Z/ j  Mhimr 0x80040004 0x44
: m8 C0 I- ~  U( \5 T2 H0 `* B3 b7 C' Bhimr 0x80040005 0x556 J& l7 J0 `* T( n7 E1 w
, b9 y  E6 o' P+ S% o
SN也是类似。  [" y7 U+ e2 \4 f

1 O# X" S  ^7 V% b现在主要是,谁告诉我们MAC和SN的地址?& f. ~1 [2 T6 Q* e3 y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 i4 z7 ]7 q, a' |, z0 Q1 W
一直想找到运程修改MAC和SN的办法,苦于无解啊
- q& M, H: f9 l' @" m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 O, x4 O. w3 w5 O
5 Q) @! m1 r- y! J( H, N3 [
修改的代码早有了。到今天不会编译。
- z: E  |- I) O# u. [: I& |! G9 c需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    1 e, Z6 c  K0 e5 K; X
  2. #include <malloc.h>2 z& y) `$ Z4 T: Y
  3. #include <sys/types.h>
    6 b( ?" W% C2 e  K, P
  4. #include <sys/stat.h>8 y6 m  T/ Q. V% D; n( i4 p, e
  5. #include <sys/ioctl.h>- h6 ~6 f% w& d2 D; I
  6. #include <stdio.h>" ~8 G: K8 L2 g  r+ a
  7. #include <string.h>) ?7 O( L- O# Q, V) Z

  8. 3 _2 _' c- _. ~/ e! M+ H
  9. typedef struct {" Q6 I6 X" `- Q
  10.         unsigned int        e2prom_cmd_sub_addr;6 K! z* v' T0 T: A
  11.         unsigned int        sub_addr_count;
    1 T2 `* p9 @; _6 b, @% p
  12.         unsigned char*        e2prom_cmd_data;  o& j( {6 ^# e6 J
  13.         unsigned int        data_count;
    $ J2 `1 d8 S4 [2 d# A
  14. } e2prom_s_cmd;
    $ ~$ e0 p5 _! w- ?- p

  15. / L) K. N" r; r( A6 n
  16. #define E2PROM_CMD_READ 1( j! }) x$ `6 P' Q6 s. f8 l9 r
  17. #define E2PROM_CMD_WRITE 2+ i& k/ G. Y7 h# D3 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . t# p& P$ n' b% J. J
  19. ; F, `, E) B, I; j! I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' f( p6 V: ~3 B7 O6 x) D. H
  21. {
    ) V- Y4 u% E8 ^9 u8 w6 W# H, X
  22.         int fd, ret;
    / h& Q% H' ^' l
  23.         e2prom_s_cmd arg;
    1 }, C# r6 T6 m
  24.         unsigned char buf[0x18];' b8 }2 ~0 |# j/ e3 K0 E- P( Z

  25. 6 D" v1 X$ p. N. ^4 l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 s+ N4 E. }5 I3 d
  27.         if (fd  < 0) {
    , U& A8 G1 n( l8 ?7 z7 j. V
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) [7 V" B( x. s
  29.                 return -1;
    ' [9 N4 t6 }1 t
  30.         }
    8 [5 c/ ?6 r, P# p% P7 f
  31.         arg.sub_addr_count      = 2;) k5 i+ K* b. ^. z. s3 {
  32.         arg.data_count          = 0x18;
    5 h# I# U1 W! p3 }3 |; I3 H- f
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    1 k/ l/ h" L2 R" O
  34.         arg.e2prom_cmd_data     = buf;9 a* I. h+ O: R5 v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * b5 D1 q+ \- f, ?1 h+ U4 v4 `8 Q9 }
  36.         if (ret != 0) {
    " l7 B  `& e) e+ Z% ]
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . d6 O1 O9 l- j  {) A
  38.                 return -1;# V2 [$ T* S3 i& u" M$ S0 n
  39.         }
    + N7 B& W( \  {1 x
  40.         memcpy(mac, buf, 6);& S; z- s  d! p4 |& T) q# R
  41.         memcpy(stbid, &buf[6], 18);/ B; Q* ]1 }3 U7 j
  42.         stbid[18] = '\0';: U' c& F! L  f+ l0 x
  43. , s6 G! h  N( W% \2 L
  44.         return 0;6 G: V% d' ^5 R4 J3 u& _4 p' V' Z
  45. }1 U' z  u! S+ S7 E4 X: k  U

  46. " C( r& n  M& M- h
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . @: A- Y1 f1 x
  48. {
    # J5 C; ]; C; \1 x6 |/ G- q
  49.         int fd, ret;% y9 z& |* y. f& a
  50.         e2prom_s_cmd arg;7 _  {& W6 I: N( a. v. l1 }& K4 S
  51.         unsigned char buf[0x18];2 E$ H* \# {; @  Q3 n* C0 v7 U
  52. 9 t: Z- o5 U# m4 C" F+ Z
  53.         memcpy(buf, mac, 6);+ @/ i. X  y9 l
  54.         memcpy(&buf[6], stbid, 18);8 \/ h7 I; W& m* d" L, X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 x9 M( J8 l6 d" a/ X  R% V
  56.         if (fd  < 0) {
    # U3 _$ p% f( E& o9 U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 r4 ?) `' P* a# q( N
  58.                 return -1;0 P, `) {# I. S, _6 q
  59.         }
    8 I$ L6 _8 T/ F$ k4 G5 T
  60.         arg.sub_addr_count      = 2;5 A1 m9 Z  g) {7 u$ F9 `
  61.         arg.data_count          = 0x18;
    - J- K; r' }. n
  62.         arg.e2prom_cmd_sub_addr = 0x290;* Y& L% E: u1 V6 h' H4 E4 g
  63.         arg.e2prom_cmd_data     = buf;  m. C2 `, Y& H2 i& P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . h6 B5 p  c, P# I0 n
  65.         if (ret != 0) {
    % Q+ f" ?6 Z' t% s$ b7 ^
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) W) M6 w* u( O5 E0 C2 H3 e
  67.                 return -1;6 Z- P" X! g( B6 ^- m, l: |
  68.         }9 b% p- Y( G# d- L6 U7 a
  69. : X) E) C$ H; G: W- o( x
  70.         return 0;; I, b4 E6 Z8 Y$ Q9 |7 ?
  71. }
    6 B" c2 Z0 K( S, |  b( n7 I
  72. 1 c; V) e0 P" ^
  73. int main()
    0 M4 A0 z! r: K. Q' d+ }8 n+ p
  74. {+ e/ @" |6 t& {; Q- c/ E
  75.         char c;
    / o, l! a8 p7 d- G' z% }4 ]
  76.         int i, macs[6];, I' b) o) Z' l0 b
  77.         unsigned char mac[6];
    : u5 _9 b, S0 Q
  78.         unsigned char stbid[256];
    7 L# K, x9 I* p# u9 z, G" q
  79. 6 K$ N( D9 N7 T6 T0 K0 s
  80.         if (readparam(mac, stbid) < 0): G& ?& Q! }) n" @, c/ o# p% b; Z
  81.                 return 1;; H) @0 J) R/ i

  82. $ M8 [5 ?9 X+ m# _8 I7 C
  83.         printf("Current parameters: \n");
    ! ^1 \1 k! |6 V3 Q! j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 s$ ]# H+ j. X
  85.         printf("  STBID: %s\n", stbid);. f# ?; N/ L7 R3 l* g
  86.         4 Z# w+ c8 r5 \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 W) j1 S- c( F/ O2 g! S- K% c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    7 Q$ ^/ L# C0 ~" z* {6 s# r( a
  89.                 printf("Input MAC error\n");
    ' P( u1 J, \- \) j. Q
  90.                 return 1;
    ; Z7 l, k, r4 A! r+ z' _' ~8 M
  91.         }+ x. ^6 w: H' F/ L; `3 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; @& o* L5 L2 _& c8 |
  93.         printf("\nPlease input new STBID: ");
    ' r+ |* I* e# \1 x
  94.         scanf("%s", stbid);
    3 l) o; W, c. D8 N, ]
  95.         if (strlen(stbid) != 18) {; s0 I+ C  r+ n' g/ p& b* e
  96.                 printf("Invalid stbid\n");" I& a' \: _. c2 `) r: Y, O
  97.                 return 1;
    ; s6 z6 F$ |7 T! a
  98.         }
    2 H8 P, e: G# O
  99.         printf("\nNew parameters: \n");. v! J# P9 T" u* `2 q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* ~' b! b4 c/ m6 m1 q6 n8 [7 |4 T. J9 m
  101.         printf("  STBID: %s\n", stbid);: l* A' _& J5 y' L
  102. 7 y; {3 d2 G4 u/ a9 T8 G6 c
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 x6 G: g0 B' U$ u+ w
  104.         for (;;) {/ T, v0 P( `3 K7 h" F
  105.                 c = getchar();
    5 o% F* s% a% E: c( e( n
  106.                 if (c == 'y' || c == 'Y'): d* B, ~' z9 |$ r" e! F
  107.                         break;  S! q8 a3 F* _, X+ U6 c
  108.                 if (c == 'n' || c == 'N') {. l4 m0 w, m& F5 f2 B; s! P
  109.                         printf("\nAborted.\n");2 s0 ]/ d8 i) F9 F
  110.                         return 1;& b+ T5 P: e5 F7 v( l, I  B
  111.                 }
    - C) O7 `' O* a" h  z. u
  112.         }' M9 o3 @, S. C3 Q3 o% V$ e
  113.         if (writeparam(mac, stbid) == 0)
    / }; G5 L1 q+ J! N
  114.                 printf("Parameters changed.\n");6 n: E6 b& I$ G: c: w

  115. 5 r" E6 t/ p7 G* ~
  116.         return 0;( g2 O5 O; M0 [
  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
2 L# Y3 N1 g: q4 ^0 B* s' ~在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" k% `/ s3 x2 K7 a+ R
你用的编译命令行格式是什么?
6 Z. [; h2 i0 A0 z
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖返回顶部