查看: 17884|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    : A- w9 F4 C6 Q/ u* @* |0 [3 R
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 d$ J( G# R. a6 s4 m
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, A, G) A4 @  Y& L7 B8 ]- B7 u5 `: N
usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ K: x, a# S) E- f
8 y2 x) L5 q- h. S+ w) i# I+ }" u# I- j* h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; s* l% j) v  K+ F; B
) H+ B2 H1 T3 S补充内容 (2012-3-8 09:42):" K& T+ \* z: d6 U' e* e
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 p# `- H5 g! ~% y/ W这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。9 Z7 T6 H% C6 a& y, F+ B( ?7 C0 ~

& e1 ~9 ~6 N5 y6 ^himr <address> <value>. sample: himr 0x80040000 0x0
+ k& R" I/ T, ^0 S) p2 }. j; p# Y; [. b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
$ @( C; h, w* H$ Y3 N: yhimr 0x80040000 0x00
4 c  O- F3 z) u& Yhimr 0x80040001 0x11
* p# g$ _1 Q! N' n! N  A, Ghimr 0x80040002 0x22
, K2 ?. B5 q; `$ Hhimr 0x80040003 0x33
& o4 O# K1 h) Z6 Q* hhimr 0x80040004 0x44- a3 |5 P; V( }# H7 T6 s& z
himr 0x80040005 0x55
6 X8 a/ N' y" l+ V8 o+ G0 O% i- V
( h. ^5 h0 T9 `+ h9 O0 ?9 {& ~, Y) ySN也是类似。! E2 B/ O3 [/ C6 i8 ~' \
5 w4 T- n0 p! w" x
现在主要是,谁告诉我们MAC和SN的地址?' |; w. F; A) m" ?1 H" U  u
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 / d0 d& M+ n; \0 J+ L
一直想找到运程修改MAC和SN的办法,苦于无解啊
( X5 w$ M8 m8 {. h! j  Z% j6 q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 9 Q9 {+ h: \0 z4 ]

& o1 I4 Q6 d0 D2 d8 T6 `% D5 \修改的代码早有了。到今天不会编译。
3 Q+ @1 T% K9 b% T需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>( d. W5 s9 T  s+ B
  2. #include <malloc.h>
    8 S+ k: r1 ~0 q" s
  3. #include <sys/types.h>
    ! P7 ^1 j  O0 I2 K0 i+ ~" }7 d9 @
  4. #include <sys/stat.h>* C! R7 s5 N) S  A4 \' I
  5. #include <sys/ioctl.h>
    % [/ |- l& Q" e; B- e. c
  6. #include <stdio.h>
    9 r4 f& h% K% w; E& `/ V7 @
  7. #include <string.h>5 Z/ e, L4 @* M0 v* S/ O
  8. 6 e: q6 ?6 V+ \* j4 p) S
  9. typedef struct {* C0 {4 h% {' {* x2 z; s
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 O$ `* u8 q2 o( |6 z% c
  11.         unsigned int        sub_addr_count;
    ; W" F& T8 B! U" h* ?) n
  12.         unsigned char*        e2prom_cmd_data;6 u$ a' E" O' k! A
  13.         unsigned int        data_count;8 L1 V" I# t( C! x2 I3 p1 w; E
  14. } e2prom_s_cmd;2 z- b* O# f3 [( T$ A

  15. ( j: V7 G% F% o. ?; R3 \
  16. #define E2PROM_CMD_READ 1: r6 T, P/ K" I7 x/ \
  17. #define E2PROM_CMD_WRITE 2
    : m; F. c# u( f4 X- f" D; M0 [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* I0 Y+ \" w$ U4 P7 p- t
  19. $ \1 v9 p8 ^  x( M7 P* T
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! n* {2 X& D" I1 W1 i
  21. {/ I8 D  Y: n  ]& Y3 O5 \9 z
  22.         int fd, ret;
    4 w4 a0 w' \* q' r
  23.         e2prom_s_cmd arg;( o" O6 u" p6 d; n
  24.         unsigned char buf[0x18];
    ) V$ o! K) k; Q) \4 x* d  ^9 I
  25. & u7 ~# F  \) d- e1 n: |0 r! Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( B( y, L( t* s
  27.         if (fd  < 0) {$ _3 z8 D6 a* e+ D7 l0 @% A. r; D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % ~: [7 n. H" F/ u8 n/ |6 A
  29.                 return -1;
    ( {& u9 a9 a2 B% j, W
  30.         }
    + S: g5 p. Z4 X% I8 j
  31.         arg.sub_addr_count      = 2;
    & ^6 G7 T1 \( A$ V4 o6 N5 V
  32.         arg.data_count          = 0x18;
    8 h- {# ~9 W% y
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 z. f2 l- y5 B8 |. m+ `; i& C- R
  34.         arg.e2prom_cmd_data     = buf;
      Q9 a) e2 b5 X( P: ^  H# C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);. X/ @+ y& A% D) T- T2 M
  36.         if (ret != 0) {, p7 o9 D! U5 a: {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  ?- u- i4 T6 B9 N, o
  38.                 return -1;
    " u9 l$ a% d( H
  39.         }. ]# }+ m2 F& ?: {9 a. l
  40.         memcpy(mac, buf, 6);5 G1 }% B2 b9 H3 j0 }: l5 N
  41.         memcpy(stbid, &buf[6], 18);6 A, M" a4 ~: W) m  {9 D
  42.         stbid[18] = '\0';
    4 V' W9 b# R  R$ P5 c

  43. . W( t% m7 U; ~/ J; [
  44.         return 0;
    / U9 q& v+ q; h" \" _2 c
  45. }
    7 g" G% O: s. {7 M1 ?- |
  46. . D% @9 d. B. E9 r) C# ~  d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" Y' o% m- p6 R$ k: ^; p
  48. {
    6 b) G7 ~! b% W( D  N2 [7 p
  49.         int fd, ret;3 R6 g$ V. M9 j0 v) |$ y2 J* I9 X
  50.         e2prom_s_cmd arg;9 B, k4 g: r$ Y* ]
  51.         unsigned char buf[0x18];
    . o5 ?" B: s1 w) I8 P2 ^

  52. + y- s( x1 t5 I2 _
  53.         memcpy(buf, mac, 6);0 @1 w3 T7 R4 Q+ X, P" t
  54.         memcpy(&buf[6], stbid, 18);; N: g2 s1 y1 k4 g- u" K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 v) z4 `/ _( j/ l- G
  56.         if (fd  < 0) {
    7 V  f' s# `* y% q( n+ K8 C6 T' f3 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & g* g: E4 \  R
  58.                 return -1;4 s# t. ?% |; x. y0 r! Y# R4 A
  59.         }
    ) e6 e% r6 w4 N5 J( P
  60.         arg.sub_addr_count      = 2;
    " H+ q! d  C& s  D- H- [* a% J
  61.         arg.data_count          = 0x18;
    / u  A/ |, ~7 a/ }1 n7 a$ w" h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : f% v/ N# t/ l% ^  @" ~
  63.         arg.e2prom_cmd_data     = buf;
    * U7 {8 e  N: O
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 O& Y. t0 k  c: z
  65.         if (ret != 0) {" f% }+ i6 e  a  v0 g
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. B% D/ e* @( l5 c  V0 S* }! B
  67.                 return -1;' [/ A# v! H# x) b" ^2 a3 j
  68.         }
      P- h0 a5 I# B  s( e5 i" I5 Z
  69. 1 ~8 Y% i5 @# A0 R* m
  70.         return 0;+ o/ k; p4 r) A* b( g6 b
  71. }
    % r. I4 S# Y0 S- }& D$ r
  72. # D5 R) c( _3 Y5 V" u0 ^
  73. int main()2 {; E* W! y, {; i
  74. {
    ' b5 C7 G4 \0 C& z9 y" A: K
  75.         char c;% |) Q' w) A  A/ f1 ^& V: H9 m% e
  76.         int i, macs[6];( ^& ]) t7 v  M
  77.         unsigned char mac[6];
    " d& W. r$ ]3 p
  78.         unsigned char stbid[256];0 l* o2 X$ e6 g  q: p

  79. . K3 F- I1 E. X
  80.         if (readparam(mac, stbid) < 0); P) D5 L- a. n. m
  81.                 return 1;
    * l$ Z% K$ l* T8 e  l
  82. + e5 ?3 k: g# H
  83.         printf("Current parameters: \n");
      U, e7 K9 _2 w! ?' d8 q1 D# ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 m; X$ Z6 F4 y+ Q/ V3 R' K
  85.         printf("  STBID: %s\n", stbid);
    5 N# x- e, O, E/ H5 w' Y
  86.        
    $ b0 m9 X- O& G) X. X0 m1 @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");2 X* w5 `5 K6 F2 Z# A2 v2 \  E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {1 N! ^6 x* S3 \
  89.                 printf("Input MAC error\n");
    4 F, k' j( @1 Y1 W8 K, p8 ^, G7 }
  90.                 return 1;
    1 B6 W  W' S3 D
  91.         }
    . D# q/ e. y* M, X! J7 K
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * _9 K* e7 |" F( Z& [
  93.         printf("\nPlease input new STBID: ");- N2 p/ B9 f: Y7 S( a5 D
  94.         scanf("%s", stbid);
    & u) Y+ I) A% ]2 @4 G. W
  95.         if (strlen(stbid) != 18) {
    ) O- i1 X$ a6 Y  P7 h
  96.                 printf("Invalid stbid\n");
    7 g' R" g' |+ v/ a
  97.                 return 1;
    ! x) T1 x( _) M
  98.         }+ V+ p# D# }+ V5 V! \$ h3 r' `
  99.         printf("\nNew parameters: \n");+ Y5 X, f7 N8 X( o5 S3 n& H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 I& p% v# a4 @2 _& s
  101.         printf("  STBID: %s\n", stbid);. l9 C: o6 I% l/ x3 g$ J

  102. / m; y5 F, b; G! p4 l
  103.         printf("\nDo you want to change paramemters? (y/N) ");% n6 i) ]: M5 v
  104.         for (;;) {
    1 d# x- f+ f. ~# |: n1 k5 G
  105.                 c = getchar();
    . H3 G( ~5 K: ]7 D+ d
  106.                 if (c == 'y' || c == 'Y')' E) R4 m6 M0 Z$ ]) f" e4 ?
  107.                         break;
    7 ?8 T: |+ f! u7 G: H( n
  108.                 if (c == 'n' || c == 'N') {
    $ [$ }: ]7 b( j  N% F
  109.                         printf("\nAborted.\n");
    , x" N" u" f) }+ P* o/ X
  110.                         return 1;
    / |: _1 e7 z: S6 c
  111.                 }' k6 Q, `% S- n# j- D
  112.         }$ p2 r. |! f' h' N" B
  113.         if (writeparam(mac, stbid) == 0) ) N! ~% ?  f2 L; o0 L3 m
  114.                 printf("Parameters changed.\n");  Z6 Q( v/ Y# [! [
  115. + z+ U$ }: I3 w) z" k, w+ m. k* w
  116.         return 0;
    ( \0 U, v1 K# J0 g. n+ o
  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
  k5 |" |7 |$ q6 _, W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
7 s: ]7 @' x; ^) n0 e$ L1 u
你用的编译命令行格式是什么?( I( e- B- M  S4 m7 K# P
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部