查看: 17610|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 y, J9 a/ L9 T+ ~9 g& e9 t! t; F0 c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 R, ^) x* ]/ L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:8 x+ C' ^! c3 z) u0 n& ]9 Z; g
usage: himr <address> <value>. sample: himr 0x80040000 0x0' l& k) v# t, R0 x* y# a

- D. n( [! H! r. T$ e, y6 n2 G1 [) g9 Z& U4 D5 W+ Y
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?3 I# K" ?- Q' A: Y# y
5 M9 q% r8 B; u" w. y+ b" t
补充内容 (2012-3-8 09:42):3 A) Z1 o; l" m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* [9 b& y/ w: N0 Y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
7 o- B5 c: P- g! b" V9 |8 k' T9 p. T9 U* ^+ a/ I
himr <address> <value>. sample: himr 0x80040000 0x0
! L& I8 B+ o" o' S, S
$ Y8 Z2 }/ u- W3 y+ C/ {$ b例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
+ h6 c( ^  B5 ]& T" zhimr 0x80040000 0x00
5 z1 l) {( K8 m! S' s1 C8 j" e" x$ vhimr 0x80040001 0x11
/ b& _9 k7 M# ^! W/ chimr 0x80040002 0x22# b7 `/ o; h: r- P
himr 0x80040003 0x33
% }3 N' z! A8 _* Jhimr 0x80040004 0x44
2 ]! L0 d2 [& n# h; M3 V7 Dhimr 0x80040005 0x55
7 h5 {4 p- ~% ~) U" g* {, _; \( l1 u  [
SN也是类似。
( Z) h' ?0 @+ w1 Z: G% y
& Q2 f# S% l/ T, p( M7 W& M现在主要是,谁告诉我们MAC和SN的地址?
# l8 ]1 y$ u0 N0 a1 o; T3 ~& n
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 7 I% J+ I% A* ^8 N& U
一直想找到运程修改MAC和SN的办法,苦于无解啊
; d) K! k( D% u0 C. l8 p
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: y0 D& I9 }, D6 e" b& R) w$ q: b. G4 J5 B/ V! q: @6 R/ t
修改的代码早有了。到今天不会编译。
6 }% a$ q& z, ]  s8 ?! r: w( c8 u5 z需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " O/ A3 l9 }/ j$ P) K' y, K
  2. #include <malloc.h>5 \' @" `' ]$ A6 d: X" L
  3. #include <sys/types.h>3 Z* t# r' R4 C: E! n3 R0 y& b
  4. #include <sys/stat.h>" Y' s; }  A4 {' u; h
  5. #include <sys/ioctl.h>
    $ k$ a# n. d" M& F
  6. #include <stdio.h>
    * i5 l' ]' F  q& J# {. D
  7. #include <string.h>) l6 r7 c! N  X
  8. 2 R, b- b/ t1 B* ~# |
  9. typedef struct {  l+ J' T' P  E& L: v3 a# D7 D
  10.         unsigned int        e2prom_cmd_sub_addr;; @/ F# d. m5 @- F; L+ t
  11.         unsigned int        sub_addr_count;1 o# K5 l/ `! k& W% H
  12.         unsigned char*        e2prom_cmd_data;
    7 ]$ v  z+ x* x2 Q: k
  13.         unsigned int        data_count;# Z  b3 d; H" m$ T- j6 E
  14. } e2prom_s_cmd;+ i3 ?3 ?3 i/ r5 \2 i1 W7 v& F

  15. : k- b( Q- \4 x1 O$ M8 k
  16. #define E2PROM_CMD_READ 1  H% `1 B% N. d$ g1 y0 n
  17. #define E2PROM_CMD_WRITE 2
    ' d) w# _+ m6 R/ p
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - r- ~. q( D+ a! P% @' c/ G8 |
  19. 1 G6 }# a& U& e7 A% A
  20. static int readparam(unsigned char *mac, unsigned char *stbid). i$ A1 o" u  {7 N- D; m# A4 i
  21. {
    9 v1 U, N" G3 p, u
  22.         int fd, ret;: ?" @' Y' D; Q) o& |% s% ^7 T; F
  23.         e2prom_s_cmd arg;( a' ^2 q- e0 H0 {' ~$ Q4 p& S) y% M
  24.         unsigned char buf[0x18];
    : J8 W6 o; ~$ X( ?1 J7 i2 V

  25. * h; u9 T3 R& k
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! M5 L5 I( T. c% h$ y% P2 M
  27.         if (fd  < 0) {% A$ @; W8 l0 A* ?( G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; Y& o( V& m  Z) p5 f" M- J) M7 I
  29.                 return -1;+ K% D- K/ Y% h/ D" V6 M$ w4 t" F" p
  30.         }
    , Y. A9 L  G& y7 T
  31.         arg.sub_addr_count      = 2;  J! y2 J/ W+ k0 ?  |8 H3 Y
  32.         arg.data_count          = 0x18;
    4 Q" u: P5 h4 x5 S3 P9 s; ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * O. g( A6 w* Z  k* m- _9 l
  34.         arg.e2prom_cmd_data     = buf;- v% ~" V$ a) x0 M
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);" r; d5 G5 p% ]# ^. ]! s  A- O4 `
  36.         if (ret != 0) {
    # j9 G1 _0 ~9 X+ r$ |6 n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% C/ A5 ^0 C7 F
  38.                 return -1;
    # \$ {- O$ M. F6 W# G) Q* c
  39.         }
    , Z- N/ a$ s" ~# E5 N* }
  40.         memcpy(mac, buf, 6);$ l6 {4 m, Z- i+ X2 U% G
  41.         memcpy(stbid, &buf[6], 18);' L# D$ Q+ y0 P# ^
  42.         stbid[18] = '\0';
    * w, B( ^9 T7 N% a# B) G4 e

  43. ' L& ]* ~4 y' Z) r2 k5 o) d
  44.         return 0;
    ) `( p6 x, q0 m8 @8 {
  45. }3 |' f* _, g- }: J* W+ N
  46. 9 \* v# x1 G8 p* P  X9 k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - M: k6 b. [! s1 [  }
  48. {5 z) P  G9 a" n6 E6 _4 O
  49.         int fd, ret;$ r* a# @$ {5 p) u
  50.         e2prom_s_cmd arg;
    4 r, N7 H4 B7 h( R
  51.         unsigned char buf[0x18];7 m8 f) K, D( R+ j
  52. . E1 s( Z. w6 T) @: Y( \
  53.         memcpy(buf, mac, 6);6 z) Y- I3 h: Y, A2 U$ H+ K
  54.         memcpy(&buf[6], stbid, 18);
    % W4 W: ^% E# {7 n4 w) D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ! ~& q* [, |( f8 @
  56.         if (fd  < 0) {
      p; _3 C6 o$ f+ a, _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ A3 V" h: a3 w7 X) m" ^
  58.                 return -1;
    5 f- b8 v6 }! A- G
  59.         }0 w; a: V' u+ }
  60.         arg.sub_addr_count      = 2;1 t( B3 j8 E9 g
  61.         arg.data_count          = 0x18;: V  M* A' o4 b, {8 A
  62.         arg.e2prom_cmd_sub_addr = 0x290;' H. P' z* x" c; A4 g' b
  63.         arg.e2prom_cmd_data     = buf;
    - E% c% i! O5 j( d* b- Z$ H2 b
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 b, K, x6 x( J9 D+ K/ j2 N" m, m
  65.         if (ret != 0) {
    ! G$ ~. `/ E* g1 x
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 g: s# i" R1 c
  67.                 return -1;. `8 }4 N9 }3 ~+ U. c$ v4 a% z
  68.         }
    , M; l7 v2 J& E- H) l

  69. $ ~) E8 |( I+ c' D3 @! {6 x$ D$ j
  70.         return 0;* @  |8 E7 R) F% @1 j, r
  71. }
    ! X7 E0 g3 [8 j9 R$ f
  72. ; X8 n: _* w9 Q2 u
  73. int main()6 M4 h4 a: q2 a1 ?  c6 O
  74. {; f) S9 w* k/ k: `8 _
  75.         char c;/ L0 t$ h( ^  D  R/ L
  76.         int i, macs[6];
    : ^$ B0 t5 Y1 J# o/ z+ T
  77.         unsigned char mac[6];, h: \+ r8 I2 n  x- A
  78.         unsigned char stbid[256];) b3 q+ m- ]- i8 c; s

  79. 9 M+ j* \% n% A3 R
  80.         if (readparam(mac, stbid) < 0)
    6 z; Z( C6 x/ L9 e- v( _4 h
  81.                 return 1;
      ]6 \! n* G* g) C# ^5 X
  82. 7 I+ r' F( m0 m6 O
  83.         printf("Current parameters: \n");
      m; t$ x% j; D7 W# w8 u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) I' S% f1 D+ \8 {% Z# W
  85.         printf("  STBID: %s\n", stbid);
    0 x$ n  k' V( ?4 j6 K6 {
  86.        
    + s, X; x  r4 M) @1 |3 K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ; G* S3 }7 w5 e9 a! y& V7 ?: c
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- a( U8 X1 ?1 J. D% e
  89.                 printf("Input MAC error\n");/ Q4 [* x  L; o$ z; P% ~
  90.                 return 1;" W& b, N8 W; c- l  J+ S
  91.         }
    ' O, z( x- K' t6 m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" h* v1 {. A$ y( A/ e# g5 u
  93.         printf("\nPlease input new STBID: ");9 D$ O) q. _( u5 R2 ]9 F- s+ R/ ~
  94.         scanf("%s", stbid);
    " h" W8 \6 e. y; u6 t% v
  95.         if (strlen(stbid) != 18) {
    * z0 T" q6 W- g6 N- f
  96.                 printf("Invalid stbid\n");6 F# ]2 P5 }# `7 t0 q
  97.                 return 1;
    5 J: s; T( M0 [/ V. d4 |  q% A
  98.         }; f, h7 c- ?7 e. {2 k  R
  99.         printf("\nNew parameters: \n");
    ) s3 p% J" H' b! }% d
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 X  F. z' V9 {' Q4 v( X
  101.         printf("  STBID: %s\n", stbid);
    $ Q$ l: I3 a1 n' i7 s; |
  102. ' \6 q! x+ K2 Z: A: F% Y8 ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    2 X" \! }, w$ t, t2 p
  104.         for (;;) {
    0 B# c% u8 S0 X; y
  105.                 c = getchar();2 e, g- d0 a) z
  106.                 if (c == 'y' || c == 'Y')8 q& B7 m$ R. m
  107.                         break;
    ' B  q7 P4 K$ y- O
  108.                 if (c == 'n' || c == 'N') {0 c9 C0 w7 P  e; B8 W
  109.                         printf("\nAborted.\n");" D6 ]) r. c* d- [" I$ \; q
  110.                         return 1;
    " o" z9 o/ ~% \4 v; v
  111.                 }. U2 B4 s; |- H0 k% `' k
  112.         }
    - v3 i) ^. F1 p& G7 l. V, f+ c
  113.         if (writeparam(mac, stbid) == 0) 1 I' E5 E7 Z7 J2 D# G- j
  114.                 printf("Parameters changed.\n");
    ' x) X& i2 l3 ~
  115. # @9 A7 c! @* f+ T
  116.         return 0;9 \( M! w1 O! K  G' T* g
  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
5 `: L1 Y1 h. ]' t. g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 D- d& t4 `) B) w( M# w你用的编译命令行格式是什么?9 e9 ?% ~% U& S
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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