查看: 17807|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) H/ s, ?$ S  ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    3 f+ p8 F/ N; k0 f3 w4 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& _' Z; @( X5 ]& X9 `! n
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& Z" {( b' l  y9 c: X. j9 R& Y. d, N1 p2 F4 b* F# Y4 W
0 F; K. r3 n  v, d" |/ d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 ]0 G# t& `* [7 M; I+ Y
" O! h+ F. ]. h9 G' h补充内容 (2012-3-8 09:42):
3 Z- X# d$ K: P/ q9 g& \http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
9 v3 D, {- \1 N; }2 _( g这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
9 W& z$ }0 u  V5 e
3 ?6 _8 M" r" a' d9 |! n! L& g; vhimr <address> <value>. sample: himr 0x80040000 0x0
- ?! D3 a# z" S) Q9 u, x9 T
  c" P, i, n, V# m例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% J7 T. v2 f4 M) Q
himr 0x80040000 0x00) C$ |) V3 Y, L0 r+ t" p; K
himr 0x80040001 0x11
1 J: o' ~  h- Z& B. U: k5 Fhimr 0x80040002 0x22
% q1 T( |8 p! xhimr 0x80040003 0x332 X3 P6 y% d+ |% u: V
himr 0x80040004 0x44. j8 C7 |+ ~) i( B" M$ q- W
himr 0x80040005 0x55
; G$ x" r  \* T0 x4 {+ A) i: Z/ K& z. j. Z$ S7 C; ]
SN也是类似。
, E/ h0 Z7 Q8 b% a' L# E  W) H" }) L4 y5 n/ d
现在主要是,谁告诉我们MAC和SN的地址?
; s! V3 T# N- F* N+ z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' f2 n- ]2 U8 }, z9 T一直想找到运程修改MAC和SN的办法,苦于无解啊
7 `" l! s6 s9 J7 r1 J$ d$ V8 O
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; B, z( g, _. X' S# R4 ~( ^
& J5 U* t4 x5 L2 M# m' x. Y5 P
修改的代码早有了。到今天不会编译。
+ _3 R9 I- g! Y( C# W! L1 G6 f8 Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! l; x" o$ c; r& t( S3 g
  2. #include <malloc.h>
    9 y1 _# Z& i# _9 M1 W) M0 s
  3. #include <sys/types.h>
    : M8 {; E. _+ b4 i( A9 S
  4. #include <sys/stat.h>$ S9 @8 S9 G$ P
  5. #include <sys/ioctl.h>6 G+ j$ K5 Y6 f8 h* i# l( r. c
  6. #include <stdio.h>. U6 W, |; G6 p# Y* o
  7. #include <string.h>$ p+ }* Z& }' _4 B
  8. ! \* [( e4 K6 M& q0 T
  9. typedef struct {
    5 A. B6 }% k4 b
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; J! F7 u. A- z2 s
  11.         unsigned int        sub_addr_count;' k& X& |7 _, U' X
  12.         unsigned char*        e2prom_cmd_data;
    # A4 W% x  M4 W( B; f9 O7 j
  13.         unsigned int        data_count;0 p! o* c3 \; f6 I
  14. } e2prom_s_cmd;
    : }% ~9 Z" _2 O1 m" ?& _
  15. + e# v8 L6 w, J3 {( Z
  16. #define E2PROM_CMD_READ 1( Z% n% S- a, Z$ z
  17. #define E2PROM_CMD_WRITE 2! p0 R; C4 F4 P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! y& @% W) Y6 ~- Q" e: a( o

  19. 3 n, @) i+ L' \8 `7 J7 \/ u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 _: t; ]4 y5 I  O. Y( R% b
  21. {. l" @+ J2 Q0 M5 x
  22.         int fd, ret;1 w! D, G' d4 H. G
  23.         e2prom_s_cmd arg;
    5 A; _5 W3 Q4 Q/ z/ R! x
  24.         unsigned char buf[0x18];
    1 `# {3 p' e/ j) D7 X
  25. ' O6 S& X, G: N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 T( F& |: [$ p" p6 A; B  i7 j: l
  27.         if (fd  < 0) {3 V7 ~0 t1 o. Y' N/ z7 ]( z8 z* Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ d( g6 s) Y. D, ^: o% Z% U6 R& E
  29.                 return -1;
    0 t) }+ C7 ~$ v7 v# h, a
  30.         }' ~1 s! s( r; j" e7 z
  31.         arg.sub_addr_count      = 2;
    & V- _' G+ p$ _. C' z$ v
  32.         arg.data_count          = 0x18;
    0 c4 J# p9 Z5 c/ z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 K$ c, q+ j5 d, ^% a
  34.         arg.e2prom_cmd_data     = buf;  D/ D/ u8 \; x# t& I8 x9 j% R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 j: T7 R6 p1 L+ `" a% ]
  36.         if (ret != 0) {0 f& l! |: E4 O  W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);) f) S& p3 c8 G5 u* P, y0 D
  38.                 return -1;
    : b" a' |& v. d
  39.         }3 Q, S) H8 g8 N2 p7 U, h
  40.         memcpy(mac, buf, 6);$ L" Y  h0 z, U$ d9 ^* `1 k
  41.         memcpy(stbid, &buf[6], 18);
    % p) x( h6 {* K4 v
  42.         stbid[18] = '\0';
    # P9 F4 g2 N% I# S

  43. 0 I0 H% y; U/ P" B" p9 G% l
  44.         return 0;+ q# p! E7 i2 u! w
  45. }* @: X$ f' B" b( k+ P+ h

  46. , ]! ]6 Y+ o5 s: {8 L
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 n& z  }$ E4 V' E0 k: i8 w; w
  48. {
    # O1 N$ {$ {/ Y; e$ V! W8 c: d
  49.         int fd, ret;! _  Q. U/ M8 s0 M9 [- u& l
  50.         e2prom_s_cmd arg;. V6 T% s4 y; I, E, \5 h1 d
  51.         unsigned char buf[0x18];
    0 y$ e0 _( v8 X) K* [! @, X

  52. 4 X! }& J0 a" a3 }4 \. X  e
  53.         memcpy(buf, mac, 6);
    ) ~6 y( C) S$ n( X0 G
  54.         memcpy(&buf[6], stbid, 18);7 E6 X) Q6 J, t% t! d9 q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( s- S# Y7 d+ M& z) o% T
  56.         if (fd  < 0) {
    & i( Y3 b. r# z3 T. d7 x
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 P8 H* |% Z; Y' q! A" q# X
  58.                 return -1;6 K: \$ l" l0 V, W7 J( T1 ?& K2 X( u
  59.         }
    7 N+ ^4 y# \+ f$ O$ V: v
  60.         arg.sub_addr_count      = 2;! L1 M7 D: C+ \. O) _
  61.         arg.data_count          = 0x18;
    ) H; f/ y/ q$ Y; @7 D
  62.         arg.e2prom_cmd_sub_addr = 0x290;# z+ W& ^: H9 q  c" ~* D5 r& \4 Q
  63.         arg.e2prom_cmd_data     = buf;
    + i9 [, w4 `. v5 f( e. h8 ]" ?) t
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & w9 u0 `3 O  y' O
  65.         if (ret != 0) {5 H4 }& k9 n: Z9 K) U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 o' x& a& D0 r
  67.                 return -1;
    + `0 R% A3 B& F- Y/ t
  68.         }
    3 Q+ Z( [' h' ?3 j9 B

  69. & n3 `0 m0 _+ m: ]; {
  70.         return 0;. H3 h9 Y7 v9 L
  71. }
    8 Q+ J$ W5 r0 `3 V; E$ h
  72. ) c7 l1 {6 X) H5 t+ i
  73. int main()
    6 }4 B. }9 ]0 J$ |, H% F
  74. {
    , M( l8 U0 C$ Q, ?8 r& n
  75.         char c;
    ) V$ q+ b9 h- J% ~. c
  76.         int i, macs[6];
    ! I* |; ~( }, z* X. o" _) O
  77.         unsigned char mac[6];4 ~1 g# Z- p2 l4 J% v
  78.         unsigned char stbid[256];
    ' F- l9 j" @$ F5 f/ W

  79. 7 ?9 s  Y1 D4 A# r( S# w% h
  80.         if (readparam(mac, stbid) < 0)
    - C, b$ h+ a- ?. R4 t( i9 Z
  81.                 return 1;6 ~- A* {) ?4 K7 H
  82. " J9 S6 g) K$ n0 n3 S( A0 k  O+ ]8 W
  83.         printf("Current parameters: \n");
    # T& Q8 q- F8 X1 t
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! [8 p  p: Q3 O. n( A
  85.         printf("  STBID: %s\n", stbid);
    / M! b( Q3 t0 [9 ]
  86.        
    : X* O8 x$ O' ?& W9 g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      y, e1 f  [' k' Q+ B3 F  `
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 P  M: T" [" Q" {0 Q$ `5 n! s( k) W
  89.                 printf("Input MAC error\n");
    4 t2 l# H8 O- J) d8 E, v! D- ?* \
  90.                 return 1;
    7 X. I$ G2 E, E
  91.         }! ^1 a+ r. Z- [) f$ D
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ; f1 B* s+ ~% M& j, E8 A
  93.         printf("\nPlease input new STBID: ");
    8 t) A5 j( @2 g+ b% p& K
  94.         scanf("%s", stbid);
    ) Z5 j6 Y3 @4 b1 w% I5 I
  95.         if (strlen(stbid) != 18) {
    ' Q0 p% s, D( H" l8 E7 b
  96.                 printf("Invalid stbid\n");
    4 p# t( @  N  i9 G4 C* p$ e
  97.                 return 1;
    + a1 C' @/ M; c# \6 D& l
  98.         }" G* S( d! b; a9 r
  99.         printf("\nNew parameters: \n");* H  j4 p7 R2 T# K6 V! f# j
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( o( e, c7 T" G% O0 i0 D' Q
  101.         printf("  STBID: %s\n", stbid);
    : j; ?3 i3 b  S- A0 W( w' t9 E

  102. ! Q; O  `. _5 t5 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' Y- J! u0 f9 p
  104.         for (;;) {" s: n/ X# n$ l8 J
  105.                 c = getchar();; {( n  c9 G) B$ ]
  106.                 if (c == 'y' || c == 'Y')7 E0 _$ G4 H2 N) b; }
  107.                         break;$ Z, E/ a# a8 n% ~3 s& w5 a  p
  108.                 if (c == 'n' || c == 'N') {# E, [# L7 N6 z
  109.                         printf("\nAborted.\n");
    " ^# l; v, Y' U
  110.                         return 1;  q* G. ]# p# K/ O- S* K1 J$ l0 A
  111.                 }
    ; ~6 Y5 k! B7 ^+ N4 H) M
  112.         }
    7 N9 @( P" b6 ~$ r# r
  113.         if (writeparam(mac, stbid) == 0) / |# P( }4 n$ \
  114.                 printf("Parameters changed.\n");, ^' R. z  N" Q* F: ]5 Q! ]4 R
  115. . j0 [4 _0 j3 }  _* S
  116.         return 0;" K. k1 d: S/ Y2 Z/ z& Q
  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 : e& Q) y, y1 `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  t$ ~6 `7 U4 o5 n1 ?你用的编译命令行格式是什么?- `6 Q( n3 n: W0 U
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部