查看: 16170|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 @2 K( d+ ^8 P, E6 k& p& ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' _7 b1 `! j4 l( E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 Q: p" g' j1 t) f9 X! M7 u. fusage: himr <address> <value>. sample: himr 0x80040000 0x0
, q7 Q4 R. {% x
7 E/ R2 D) O1 g( X
  t$ B% S0 _* R9 W$ f5 t不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% B4 P: p" t/ Q

7 e0 U0 W  g, Q, F补充内容 (2012-3-8 09:42):
/ Z& e6 Z2 d$ B; ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ z! [* t* m. v3 R3 S) v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 ^  b. D) ]& ^+ p6 t
" C' A: {+ p/ p" ?. }8 K- ]
himr <address> <value>. sample: himr 0x80040000 0x0! B% t/ w4 k! u. y; k* k- S
, K- @# l7 ]1 U
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# I8 Q, m; Z3 {: Yhimr 0x80040000 0x001 o7 v3 ~% p; n1 ]8 d
himr 0x80040001 0x11( G# l/ r; D5 e6 T+ X- N- @
himr 0x80040002 0x22
5 G2 I' x$ c( u. ^5 H5 j/ Dhimr 0x80040003 0x33
3 F+ {" ?/ i& d! X( Ohimr 0x80040004 0x44
$ J/ @" \8 L+ X# t; nhimr 0x80040005 0x55
) s  Y+ X$ }5 ~' j+ o: A4 J, ?+ I* |- h
SN也是类似。" [" l* e' ]* \; T5 q- c

$ N1 E1 l" o/ e现在主要是,谁告诉我们MAC和SN的地址?2 X1 U( E, k+ @" u) C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & t5 W2 Y. r& V9 A& i
一直想找到运程修改MAC和SN的办法,苦于无解啊

: \0 B2 t: r* s2 Q' t9 o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 g7 G$ E) ^8 `6 d1 i( a+ a' H& {1 n) x
修改的代码早有了。到今天不会编译。
" `7 T6 Y, w$ x7 H需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; r4 E$ ?1 |4 x9 x5 r2 B
  2. #include <malloc.h>" Y) o# q  \& Z6 Y$ p6 Z8 U
  3. #include <sys/types.h>* q% q# U+ |: A+ h/ _
  4. #include <sys/stat.h>
    3 ]' n! W! A* n0 [, s' N
  5. #include <sys/ioctl.h>% S# a2 \# g7 l
  6. #include <stdio.h>
    " B, z3 g/ E% q5 Z: G, E
  7. #include <string.h>+ Q! H4 \$ ?% y  E: R: g. i2 _
  8. 5 W5 X1 w$ ]% ], T# f" j
  9. typedef struct {
    / n9 s- I$ |- S
  10.         unsigned int        e2prom_cmd_sub_addr;
    6 i+ [! J) Q% G; t5 S4 b
  11.         unsigned int        sub_addr_count;4 B' O- L0 F: j) c
  12.         unsigned char*        e2prom_cmd_data;
    ' K# e9 V) P3 F4 s
  13.         unsigned int        data_count;
    1 \# h/ J  C8 i* T+ q! E6 h
  14. } e2prom_s_cmd;
    / G, h4 I/ S; E" ^; J. H3 r

  15. $ L; J+ M) s- r- n
  16. #define E2PROM_CMD_READ 1" S( {% W3 F" U: Q/ R  c
  17. #define E2PROM_CMD_WRITE 2
    9 \2 K8 Y5 X% g) i% o9 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      G1 j  R( s& l+ T7 S1 v
  19. . D2 ?' w" j. D2 t+ \! K
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& n" [$ E3 M6 _3 O3 f  ~1 g7 h
  21. {) S1 }, R5 C' M6 z
  22.         int fd, ret;
    . C  N8 w  k/ H7 a+ _2 {$ q2 x& p
  23.         e2prom_s_cmd arg;8 o$ s3 A0 I$ i4 I. V1 s4 d
  24.         unsigned char buf[0x18];
    " W- z( B* g+ P/ T) ~. W0 a

  25. & j$ v2 g' b$ o3 s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 d% M% m9 Z. _: T) L: h* r
  27.         if (fd  < 0) {
    - ?( }2 [: Z& v0 X. {
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  S3 s) J- [' M) r6 L1 D
  29.                 return -1;
    & G+ h* I9 Q4 T* _  u
  30.         }
    ( r( L* |  A! H3 l2 B. n! }
  31.         arg.sub_addr_count      = 2;
    1 _% v4 J% R4 m$ j+ M, S1 K
  32.         arg.data_count          = 0x18;9 G5 t, ]' ?1 q% m
  33.         arg.e2prom_cmd_sub_addr = 0x290;' A/ N. S2 l; b8 j# Y
  34.         arg.e2prom_cmd_data     = buf;
    8 Y) s; D2 I% O* _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 B+ }' C  \* Z- O
  36.         if (ret != 0) {
    : V9 Z% a+ C3 J' w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    1 ~5 q) B" I  o- f
  38.                 return -1;
    ; ]4 [& ]4 [: J: J( c* M: f
  39.         }
    / H4 y8 h" Z5 {9 H
  40.         memcpy(mac, buf, 6);1 l% D. B; t5 C. X3 K( z0 ]3 x" s9 P
  41.         memcpy(stbid, &buf[6], 18);- D# W9 h  E4 L2 Z
  42.         stbid[18] = '\0';5 w2 z9 M. C& H7 T, d  M5 I; Y0 a

  43. ( e' Q' I/ z7 f6 l( s, `' P
  44.         return 0;
    9 T" n3 A/ _, F6 a- A2 V9 L9 A
  45. }
    1 |6 g8 c# R& @7 F+ @' f
  46. $ f' M. Q& w* e7 d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , ]$ Z6 y; Y+ j) S, r1 C* c
  48. {+ C9 R5 p/ S" P' `
  49.         int fd, ret;6 d5 H% c1 I/ G. s8 L6 d8 V( U: w1 {
  50.         e2prom_s_cmd arg;* d( \% ]1 u& b
  51.         unsigned char buf[0x18];
    * f. \  e$ I+ L. ]

  52. , o! k7 Y0 P/ J: \
  53.         memcpy(buf, mac, 6);
    6 w9 G7 c7 i( q
  54.         memcpy(&buf[6], stbid, 18);/ N  \7 ]3 L; ]( N5 Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( L8 \. q  ?& e" s
  56.         if (fd  < 0) {0 q  w" i5 }2 M
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 C* {3 V& s& S/ O' Z
  58.                 return -1;; u) U) n/ T, o( M/ O1 J
  59.         }. {% Z4 B* r8 [3 A$ y
  60.         arg.sub_addr_count      = 2;( B/ H8 w  m3 z$ f- t" r: H7 \
  61.         arg.data_count          = 0x18;7 j, V3 r* R0 c) f. {: W
  62.         arg.e2prom_cmd_sub_addr = 0x290;% a5 j+ x+ o$ i% \8 D
  63.         arg.e2prom_cmd_data     = buf;7 u( m  u# W  G9 M* ?$ Y' y3 B: v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& P1 h7 p3 U- B6 N: D- Z
  65.         if (ret != 0) {; K2 S3 H: D5 k8 a0 k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - _" V/ N  s# ^4 c7 I! i
  67.                 return -1;
    8 P% v9 i1 I4 ^% [& e
  68.         }
    ) g, L3 k! p' Q

  69. + m9 ^+ ]! t# ^1 j
  70.         return 0;  U& d. x3 v& |. t
  71. }
    - U- W% p4 U+ Y3 M2 j5 N# C

  72. $ ?+ X  Z: _4 E
  73. int main()8 C  B) D& w5 {3 j2 c. {
  74. {
    ) ?+ v. j+ j$ t  {; u( U( M* ?
  75.         char c;2 S) n: h( F: S1 e1 p
  76.         int i, macs[6];; W( Y5 B8 F2 U3 S$ ]
  77.         unsigned char mac[6];; p# V% m2 j7 H6 e) N
  78.         unsigned char stbid[256];4 G# \" U. w8 K4 b
  79. 7 H4 U4 n" V7 ]. G: {) h
  80.         if (readparam(mac, stbid) < 0)9 ]/ Q4 _. ?  Q& t: {- r
  81.                 return 1;- l7 E/ U0 O: M* j2 v5 ^+ Q. E) S. }

  82. 5 ^( n. T1 \( q3 w3 |& \, h
  83.         printf("Current parameters: \n");
    # A' |8 u$ U& R. x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' M; k) `0 _, S3 \  o. @3 V
  85.         printf("  STBID: %s\n", stbid);3 {5 K. A# U. b/ ^% ?
  86.        
    3 j: G  V9 d; h; H0 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& a9 R- G# V! S2 H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    . D+ w4 c2 \4 @, p& S" l
  89.                 printf("Input MAC error\n");
    ' M( y% E  D) x6 a
  90.                 return 1;. s& e! A9 j. |2 R* m5 y* g
  91.         }
    # L  q) G8 ]$ h* V8 G( Z+ j! r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 f3 t8 y% J4 |
  93.         printf("\nPlease input new STBID: ");  ]" w! q  R! c8 z2 A* @
  94.         scanf("%s", stbid);8 |9 F4 q4 B8 e$ K7 }2 a- J6 _& J  B
  95.         if (strlen(stbid) != 18) {
    9 L+ [* \% Y+ |) U% l/ l  ^* G
  96.                 printf("Invalid stbid\n");8 R9 S, W+ p3 `$ Q; J5 s+ o' G  D
  97.                 return 1;
    : m. J# H; z7 x  C
  98.         }
    : L( z" o7 J2 d) M4 r2 |
  99.         printf("\nNew parameters: \n");
      n3 l( @3 G  S" y4 T/ ]3 |; y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! n# A2 E; `$ b+ L& w9 c
  101.         printf("  STBID: %s\n", stbid);( D5 b6 R3 _) y: y0 |2 s/ }
  102.   |. l! O- i. }" u3 M
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # c8 S8 e3 V5 W. D( ^$ r4 j) [* E
  104.         for (;;) {
    & F* \; p6 L  X: S' ?5 ]* E
  105.                 c = getchar();+ x) t: R4 o( N6 f0 k, l, i
  106.                 if (c == 'y' || c == 'Y')7 {" V# E, u' Q- C3 {
  107.                         break;
    $ ^- r$ H# Q" T/ q% k- i4 E
  108.                 if (c == 'n' || c == 'N') {+ {8 d4 \/ `. m* c
  109.                         printf("\nAborted.\n");+ u  T" j- z/ b( O! T5 J6 u
  110.                         return 1;
    : w# j# N& Y5 g* ?1 b: m9 k  \3 E
  111.                 }* j& k+ ~5 @" e+ ?2 j; t: }8 t5 H/ W
  112.         }# V0 @5 y& |5 }0 G0 ]
  113.         if (writeparam(mac, stbid) == 0) % c+ [! Y- V  f7 x: y6 l- S3 u- j
  114.                 printf("Parameters changed.\n");* H$ _# a) m$ X
  115. " I2 }- g+ \( g5 n8 I7 i9 w. {+ r' x
  116.         return 0;" M: g2 F7 k' t7 T3 f! C
  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
! B5 Y3 _$ r( n) ?; `在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& `7 ?$ Z/ x+ k0 W你用的编译命令行格式是什么?
# h4 N; l2 w  w! f& T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

在本版发帖QQ客服返回顶部