查看: 17260|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr9 F2 _8 V! e3 c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig! u3 M: M! ]. c0 ^1 A1 D# \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
8 C$ }/ [$ U7 |& q# j) `usage: himr <address> <value>. sample: himr 0x80040000 0x0  t5 X, Q# A, Y+ ?9 E1 @

  z/ f+ C6 Z" B
, m  n: u/ [9 h# k5 C6 @3 u不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
+ m" Q9 D0 `) ~4 v5 b: J' W% H8 t7 b/ l
补充内容 (2012-3-8 09:42):+ ~  S8 ]3 I. g! x! ~6 M
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 k! F5 W, p/ a
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。$ N* F( L. O4 T* |* F
1 n' u1 `) Y& F7 G, ?7 i8 m$ c
himr <address> <value>. sample: himr 0x80040000 0x0$ H& w: p: ~+ i6 I

0 T0 }  [4 t7 z: ^, J! G例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。6 ]8 u' f" [9 S3 W; [2 ?& w
himr 0x80040000 0x00
1 M) j6 `3 Z$ [5 ]2 {himr 0x80040001 0x11- l" i' `) A( j6 w; R/ `
himr 0x80040002 0x22) p3 E2 {6 ^7 \( R. ~" c
himr 0x80040003 0x33# {. o% C1 x+ o% e
himr 0x80040004 0x44, c% _- |# j. {  s+ Q& v
himr 0x80040005 0x55
5 Q2 I+ }/ ?7 K7 o0 r
  l9 q  ^( [, R) fSN也是类似。; J; C) z' R# b* ~
" D; R2 w3 g! h  |3 q6 [
现在主要是,谁告诉我们MAC和SN的地址?: ~! H. R$ @2 T  H% V! m
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ! V" A5 N: w7 K  U$ u( B6 |
一直想找到运程修改MAC和SN的办法,苦于无解啊
  R* p5 Y# m' E  A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 S0 W; K6 J- L' o- N- p, z; \4 K: A" b- h0 F: s1 b
修改的代码早有了。到今天不会编译。
, J* e9 [* e5 d0 b: N/ r( b1 ^8 }需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 i3 ^1 [" W6 m' w8 K5 D: j
  2. #include <malloc.h>; K+ d) b6 Y1 n" ]4 i6 p8 a
  3. #include <sys/types.h>
      f: Q) x4 ~( @; d  q. b
  4. #include <sys/stat.h>' g" f7 G; x8 g& S. G
  5. #include <sys/ioctl.h>9 x. M4 u0 c4 p  Q8 N
  6. #include <stdio.h>) ^9 D$ k. l. w& x# o6 q  b
  7. #include <string.h>7 r* |, n% V! r* L/ p5 V

  8. & G; ]8 E* X0 \
  9. typedef struct {9 x  u, P- W/ T! w
  10.         unsigned int        e2prom_cmd_sub_addr;1 o; u4 |( H7 Z' m
  11.         unsigned int        sub_addr_count;
      U' V) Q+ [: d) q% O8 [4 i% h
  12.         unsigned char*        e2prom_cmd_data;
    3 D, M9 p1 V% L( v" P5 W
  13.         unsigned int        data_count;
    6 ]) a& ~, \& E# g& d8 h$ M5 Y
  14. } e2prom_s_cmd;
    & J, W/ O! `/ ^& F* o7 a

  15. 9 c. L: l! z: n2 b" T$ c
  16. #define E2PROM_CMD_READ 1) F! x6 l; ]5 ]& Z
  17. #define E2PROM_CMD_WRITE 2! K  ^+ P- u! b3 a- f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' _" n8 e4 G4 v7 y6 y5 ^. t% L

  19. / v+ b8 D- x3 }+ r8 L/ [
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    # j5 J2 B7 S( W
  21. {
    / ^/ X  X# I5 r- l# W
  22.         int fd, ret;  \) C3 K6 {; A: [' C( @
  23.         e2prom_s_cmd arg;
    4 e  M5 c0 w. y2 Q, j( t
  24.         unsigned char buf[0x18];
    8 k- w- G2 K- W0 h9 }

  25. 0 q+ V6 {6 c5 |/ j9 A0 D
  26.         fd = open(E2PROM_DEVICE, O_RDWR);7 M6 m# x: t, [0 |" N! j" o: a
  27.         if (fd  < 0) {
    8 w/ m% H! T+ ~1 b- T( J- k, @! p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. S6 V/ c/ v2 \2 G% u; r& a, [
  29.                 return -1;
    5 y9 c2 l9 h! R" T
  30.         }
    - E" d' H9 n& z; t# ]
  31.         arg.sub_addr_count      = 2;
    0 {; l* I/ G% A3 D
  32.         arg.data_count          = 0x18;) s, m0 H: T6 H
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    * L0 S* R/ s4 T2 G
  34.         arg.e2prom_cmd_data     = buf;' L! ^" w5 o! R7 n% v7 o; l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);1 D% v4 D9 Y! I  _1 K3 h) H
  36.         if (ret != 0) {
    " U- k0 k9 {: l; e" J6 o- H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    % o$ S( C0 m& S8 _1 q: _9 n" }
  38.                 return -1;8 a/ A4 I& Y" r' d; d3 Z4 r3 [; ]
  39.         }: Y2 g9 P3 e7 i/ q  V+ c' |6 Q
  40.         memcpy(mac, buf, 6);* B2 ?/ ^/ s0 U# o, X4 e% `. T
  41.         memcpy(stbid, &buf[6], 18);
    ; c& C1 C: l# K  O
  42.         stbid[18] = '\0';% b7 d! Q7 e, o5 L! z& ^" [( Z  B

  43. 5 o* y8 f" V% M: ?1 |) |
  44.         return 0;6 n5 ]: ?2 l* _0 T6 [1 o. m
  45. }+ v6 r; U1 l  y) P  l

  46. + x4 C/ [7 U& `% j
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' H# D6 D3 |* }- r6 ^  i
  48. {6 a3 ]2 ?9 F$ t+ r: `
  49.         int fd, ret;
    ) z; J! M" s9 {  T6 }: J
  50.         e2prom_s_cmd arg;
    - S. Y6 m3 A! ?( l
  51.         unsigned char buf[0x18];
    $ J( I4 c8 x5 ]

  52. & m1 A8 O& b( l2 E: a
  53.         memcpy(buf, mac, 6);
    # S; d0 B4 T5 A- g* I& _2 R( {" H
  54.         memcpy(&buf[6], stbid, 18);
    + r2 }- M! w# F
  55.         fd = open(E2PROM_DEVICE, O_RDWR);' @# ]: L8 ~7 B0 o2 k4 Q5 O- A3 @- [
  56.         if (fd  < 0) {- e7 ?& a1 t7 G6 l# v9 N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) _1 E  l1 b1 L1 q) f
  58.                 return -1;5 a5 z: Z& {' Y& ~# |/ }( i
  59.         }
    ' r2 y# [3 z; B9 t  o3 c/ m
  60.         arg.sub_addr_count      = 2;6 R3 y& O- @1 M: Y
  61.         arg.data_count          = 0x18;- H' i& g0 G; _3 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    . ]* }% Z( m: ?
  63.         arg.e2prom_cmd_data     = buf;
    6 k' n* L- a( n
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( S9 S' h" i& C0 [* _
  65.         if (ret != 0) {
    ) W" t5 t; Y4 b9 I8 x" Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& M% f1 l) E, \/ Y& z
  67.                 return -1;+ Y1 y3 P+ V0 ?) e  F5 c
  68.         }
    5 U5 A2 _! E. L# A
  69. 6 k# w0 M; B" E- k5 Q& W
  70.         return 0;
    ' z* ?& m; a# K
  71. }& @5 O, S+ ~  c; |
  72. ' p9 x% I, I7 E, h9 ?8 Y, {
  73. int main()$ }5 O9 h2 @; a; J0 J- i
  74. {
    - n3 N- J) c2 A" A
  75.         char c;: c' O. J. c& c2 r$ t/ e
  76.         int i, macs[6];2 f, A- w! q* O/ q& F# K1 e! g. m
  77.         unsigned char mac[6];  }* W" w  }3 I) v! E4 Y7 w
  78.         unsigned char stbid[256];8 o9 _* d8 s& K" z
  79. / y9 _8 g2 a6 U. Z1 v& L# l  i2 x
  80.         if (readparam(mac, stbid) < 0); b$ z$ U4 l6 g
  81.                 return 1;7 t+ r3 B; q* x( {6 ~
  82. ( X. t! N, C5 @  W( m1 F6 q& |& a
  83.         printf("Current parameters: \n");
    ! ^6 p& {) v, h# F8 K. Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 q$ P! a; h5 n4 P. C7 w
  85.         printf("  STBID: %s\n", stbid);& a' [5 A( y# Q- W9 _0 k0 o5 {
  86.        
    & b: l. A; H0 A/ c
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " T. |7 {' x/ O) s; c* T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 W8 p3 r" m: Z1 Y% [) _% d0 J+ i
  89.                 printf("Input MAC error\n");
    2 @. l8 d7 t: o: {6 C; r  G
  90.                 return 1;- b3 n, |3 A4 B8 I1 C+ }
  91.         }
    5 O/ }3 v* t2 x2 i5 C( y. m0 j
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    " M+ h3 z; ?; m/ I' |
  93.         printf("\nPlease input new STBID: ");) j& b& d% v1 \" q0 ?* C1 k
  94.         scanf("%s", stbid);& h1 t: w( W% x9 ?
  95.         if (strlen(stbid) != 18) {* K8 V* `% z$ i9 m* g
  96.                 printf("Invalid stbid\n");
    / T  V' ]. F  f7 ^0 c- k0 R( B7 J
  97.                 return 1;7 F; @% w7 [" u$ ?2 j
  98.         }+ l% z/ I% Q; `  M$ F
  99.         printf("\nNew parameters: \n");
    6 o/ B* v( E) O: E8 ~3 @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( q6 o) q. K8 P  F$ I7 w
  101.         printf("  STBID: %s\n", stbid);
    + f6 N- ]9 q' A) c- _& s
  102. 7 e( I3 u- A" G" |, |, ^0 U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      J. D, K9 w& e0 }2 Y
  104.         for (;;) {
    ! @0 ^/ ]  T" \9 p% G& N
  105.                 c = getchar();8 x* O. F" V7 D* x$ w7 W
  106.                 if (c == 'y' || c == 'Y')- f+ b; G# N* ~" S; l/ M3 \/ t
  107.                         break;
    7 Q; u, W0 ]  U2 l' |% i1 d
  108.                 if (c == 'n' || c == 'N') {- b$ T; q2 v& l/ V
  109.                         printf("\nAborted.\n");
    7 }' |% j: E1 R
  110.                         return 1;
    ' w# I# v8 H& c& Y5 [" B. w1 ]# J' }
  111.                 }+ {; G6 `+ Z+ Z6 i5 R0 u
  112.         }$ L5 `: D: @& R3 L" w* g
  113.         if (writeparam(mac, stbid) == 0)
    8 {- s. d( ], v
  114.                 printf("Parameters changed.\n");
    . k: f0 V* L8 j* i/ ]. G1 n

  115. : ^. r# B- c$ K; e, C+ u8 h% G
  116.         return 0;
    7 e; r' y: o- I5 V4 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 4 a( |) M7 @* F  U: G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; T$ x" L3 b+ `. v, a0 R. I
你用的编译命令行格式是什么?
/ l  K5 ?7 H6 N" a2 {1 t3 ~
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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