查看: 16385|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    + |1 x: q: `" w* w& Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 f+ F% t# }" z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 U' d9 S* ]; u9 yusage: himr <address> <value>. sample: himr 0x80040000 0x0
2 r4 R* }. c) R+ p; h# E' F' r
. {+ o1 e/ x8 V7 b
. \5 M/ P# }0 x7 y不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' u- X6 h8 I" a7 x: V2 R* d

  n9 z/ g8 T0 e# ]  E# h4 e* P补充内容 (2012-3-8 09:42):
" g; f3 y) O& A0 x5 shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数+ G* u; W7 z! K% F' K  p8 Q3 X0 u, x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' ^3 S& W4 Y3 D) U/ x$ r

; ~) a" c# G# `2 G, yhimr <address> <value>. sample: himr 0x80040000 0x0
# L4 V. I6 ^8 e' l' Y& X9 G0 e& d% A. _0 h' ~
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ |$ P5 ~" C0 b6 N1 w
himr 0x80040000 0x00
+ y' ~% c8 I9 O2 d0 O: thimr 0x80040001 0x11
2 y4 b" S' w# V9 P& thimr 0x80040002 0x22
- w" `2 o4 l5 @0 G5 s3 ^/ P3 u) ~himr 0x80040003 0x33- R- d. e' Y! x+ R! Q* o( I/ F: z
himr 0x80040004 0x44
: v7 W3 V, f% I# J0 O7 @3 g1 bhimr 0x80040005 0x55
" H' R& T7 r8 I9 }+ H8 C5 {
  ~9 W- k* d- \. i/ uSN也是类似。
' F  y1 C  u; }/ M7 K- w3 z
' N2 X5 g6 d, I* ]现在主要是,谁告诉我们MAC和SN的地址?; |5 I2 c8 _4 }5 M" R+ S( v
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 $ Z9 E5 g/ _- ?8 U4 J2 ?" `% C
一直想找到运程修改MAC和SN的办法,苦于无解啊

! X% q7 |# \- }# Z" s1 B( y源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : @9 ^0 g3 G0 K' s) e
- m" o, A2 I2 v2 ?  x1 Z
修改的代码早有了。到今天不会编译。
! S; w$ ^% t! P1 r0 r6 A( ]0 ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>8 w0 n. I6 k$ \6 I# F. J; d
  2. #include <malloc.h>0 `! y) }) ]+ y  h' d
  3. #include <sys/types.h>: D+ y' ^  S3 E- R
  4. #include <sys/stat.h>! D7 L; Z& ~, O
  5. #include <sys/ioctl.h>+ h6 y7 r4 G1 W) [
  6. #include <stdio.h>9 R& K2 W6 C, ~& z9 _. T6 r. D
  7. #include <string.h>' S2 [8 v) L- ~

  8. 1 i, R/ s% S$ p  m& l, f
  9. typedef struct {* J2 [7 l7 o/ V8 @. Q  b
  10.         unsigned int        e2prom_cmd_sub_addr;
    . A8 @7 W: g, A9 ~  Q$ e9 ?) y
  11.         unsigned int        sub_addr_count;
    + L- ]% F  c; }4 j8 [
  12.         unsigned char*        e2prom_cmd_data;
    $ Y' ]: `; W$ t* D. e$ E& @
  13.         unsigned int        data_count;
    $ N  Z2 U( u$ l5 X# g/ c
  14. } e2prom_s_cmd;5 G/ o$ ]9 d0 q! ]% K
  15. % ]( U4 a9 b/ ]  A2 f2 H1 j/ {4 s: B
  16. #define E2PROM_CMD_READ 1
    & n% f- [$ l/ P+ I3 w
  17. #define E2PROM_CMD_WRITE 2
    ' H+ d5 o* z: @% d( ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    0 o! ~. @- ]) I5 b
  19. : w1 Q& _' c" `
  20. static int readparam(unsigned char *mac, unsigned char *stbid): K! s. K2 d+ d
  21. {% {$ O8 r' A% c0 g3 U/ T: N  S
  22.         int fd, ret;
    0 Q7 ^9 l& q3 u
  23.         e2prom_s_cmd arg;
    : R2 D7 i) V3 B* b' N( Z2 ~
  24.         unsigned char buf[0x18];% y$ V4 t; R) j/ e/ k! c0 q- ~5 T4 s
  25. ; F  ?. `- m, `4 u+ i7 `9 O$ S0 H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . Y+ M* O1 c0 d* ?5 X9 ]
  27.         if (fd  < 0) {
      N, T; G- e3 R% m
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 g3 ~$ I0 q) w) u
  29.                 return -1;7 Z% U& v2 B% c( `
  30.         }
    ' v2 x5 x8 b; v
  31.         arg.sub_addr_count      = 2;$ Y' S- a# ?& ^" T1 n! T
  32.         arg.data_count          = 0x18;
    4 {9 _/ o$ p5 V* q# Q5 p
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & f+ @9 Y- h- Z; T6 O! z( ?% r
  34.         arg.e2prom_cmd_data     = buf;5 j" D+ O+ X* J8 o" _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 S* L% S0 `/ W3 Z
  36.         if (ret != 0) {0 t$ }  ]) E$ m( m2 S$ D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  X; [9 g9 w. `# j
  38.                 return -1;( g, o" X. n( |) X
  39.         }
    0 ]% P7 U. i1 B6 R+ Y, U0 h
  40.         memcpy(mac, buf, 6);3 K; l- J% s7 O0 ?) N( }  M+ |% Y
  41.         memcpy(stbid, &buf[6], 18);
    4 E4 @( e; l" P8 I7 l( K
  42.         stbid[18] = '\0';
    6 ^" Q6 d" J' H: h0 {9 K

  43. 0 M9 _9 q' D, U" @7 _: p7 s. g
  44.         return 0;
    ( \; c- I$ Q, I  u
  45. }! g' d+ y- U) M1 p
  46. ( s+ m: q: Z2 b  Q3 }' J7 d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) ~0 t8 X* x$ G; }0 p0 x
  48. {
    0 s% z4 n* _* B4 o7 u
  49.         int fd, ret;
    * X) W" h* ^# e) A( @& R( f
  50.         e2prom_s_cmd arg;; @4 O9 K# x7 Z4 X! a4 w
  51.         unsigned char buf[0x18];
    ! n$ _# `/ L4 R( G' q+ U

  52. 9 A3 x0 j' ?5 z5 D) A
  53.         memcpy(buf, mac, 6);4 y& J8 q7 x% w# I8 n' i, Z6 X
  54.         memcpy(&buf[6], stbid, 18);7 s5 s( K. o, W+ m* L% @8 a2 {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);$ r& i  `6 V# H, X7 T" ~
  56.         if (fd  < 0) {
    2 G; `! W5 L; o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' u; F, B, q0 n/ n5 K' D# j* Q
  58.                 return -1;+ G2 O8 ?9 n  V$ W) ^
  59.         }; s! ^6 H; c% I, x6 J7 `8 U
  60.         arg.sub_addr_count      = 2;9 O6 ~; F  d4 h) ~; {$ M
  61.         arg.data_count          = 0x18;$ d; W* W' k9 u/ D
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 u. U3 l4 i6 S3 g6 S" K
  63.         arg.e2prom_cmd_data     = buf;
    $ m) V: b! m" h' W/ F9 W, S7 {4 s. Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);. B  B# {2 b; R: O% c
  65.         if (ret != 0) {0 e( d3 m2 Q& g7 e. s, B8 S! m
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  S8 f; I$ I, m5 @! d
  67.                 return -1;. v) U+ K4 x, _* j, g  J$ L
  68.         }
    + ]: `1 [, B: {1 l

  69. 5 c2 J; y/ j$ S
  70.         return 0;
    & s$ O9 l, {  a1 y* _( m% Z; C' r
  71. }
    1 |- B& M9 K2 y7 o& }

  72. + K8 o4 }) q4 n* I4 C; {& n2 ~$ G
  73. int main()
      }+ k0 V% H3 `5 v4 J7 y# a
  74. {# \& D  e9 ^- Z
  75.         char c;/ F8 M( S* I; M9 R5 y; B7 Q0 ^  i
  76.         int i, macs[6];
    . K7 y; V3 r6 ~9 C4 A; t: j4 E8 p
  77.         unsigned char mac[6];! e: t* j; w" n5 ~" x( {2 d
  78.         unsigned char stbid[256];
    ; j& C* q/ g$ @/ ~5 H
  79. 9 @/ g) m, V8 Q3 E* r5 A
  80.         if (readparam(mac, stbid) < 0)
    - ~# m: U: s' k  I6 |* @
  81.                 return 1;1 g& K$ b" w# E1 R/ @  \3 V
  82. ! y& |7 t7 p$ q0 h2 c+ z, N' J) V: Z
  83.         printf("Current parameters: \n");% y6 W* i6 S4 I* E0 M3 l6 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' N4 Q9 \7 ~0 Z+ a* k
  85.         printf("  STBID: %s\n", stbid);$ j0 }$ _* d3 [' x4 T- s
  86.        
    + O* q2 H9 k4 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( o6 _- q1 C# }4 ~2 v" f  k
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 [5 z* k; p- P% q$ ?
  89.                 printf("Input MAC error\n");# }: N: U- Q3 j, }* P
  90.                 return 1;
      b$ f! I: Y2 K  r/ \
  91.         }
    ' J8 a6 T6 c  h! Z+ U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 D' p5 |6 F" v7 k
  93.         printf("\nPlease input new STBID: ");7 x5 u, W1 G! j; l% Q- K+ T" ]
  94.         scanf("%s", stbid);; }/ C+ L7 A4 v$ m: W( ^4 Q0 P
  95.         if (strlen(stbid) != 18) {1 b/ A- i4 X7 |% B* i/ I9 c
  96.                 printf("Invalid stbid\n");8 J, R0 F4 @- d9 o4 e. o7 j
  97.                 return 1;* Y4 Y# u9 ]0 Z/ U! Q
  98.         }
    0 Q% j  I& X0 r% |
  99.         printf("\nNew parameters: \n");& ?6 j. d$ L+ m5 |) p4 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* x4 G; K6 x' h) J- b+ G! k
  101.         printf("  STBID: %s\n", stbid);1 o' ]: s1 X9 ]* c

  102. 3 T; E( o4 u' I. J3 D* ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");: q: f1 ~7 U1 `8 Y( [
  104.         for (;;) {
    9 Z5 W7 R' K1 T( p( _
  105.                 c = getchar();' Q$ G+ O+ l1 e" _
  106.                 if (c == 'y' || c == 'Y')) i7 p1 z. E* z" X, x  V5 H
  107.                         break;
    : q: e4 o% P( W, X+ w
  108.                 if (c == 'n' || c == 'N') {& b7 |1 K  l* v  A& R- n( k& }
  109.                         printf("\nAborted.\n");
    ( c1 p4 H/ Y! D& }9 Q# V4 D9 T7 M5 f
  110.                         return 1;: ~+ Q# Y' C0 ]- m
  111.                 }5 o& ~/ `- e: ?3 z* m; o
  112.         }
    ( q' |! e3 T/ {" I" S2 Z0 z& z+ m
  113.         if (writeparam(mac, stbid) == 0) 4 I! r4 v$ t7 ]8 ?3 W
  114.                 printf("Parameters changed.\n");3 k) A3 R+ w0 J. h1 s8 J4 k% }
  115. 6 k% p! N: p4 c
  116.         return 0;
    $ O* k5 T# O$ I9 v* {& g% q1 @
  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 ( i  X$ o/ Z; b9 y( y( F- ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  ^3 ~. y- c7 b1 Y* b' @0 O: P  E你用的编译命令行格式是什么?7 n8 k; Q# @: F( `8 r% l) t, h7 U% h
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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