查看: 17063|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 ^! n' V5 {3 I  J# y9 v- ^
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! |* H: ?7 ]4 R- ]1 @  Z) S) s4 _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 e6 F1 v+ s9 }" r. N1 [usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ J+ G" H. x, T& i+ p
9 L* \' O0 `4 `; }
+ q3 C  `1 V1 t  A! T3 U  i不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?/ w7 I/ x0 M8 d5 i. z
: w- ~  f: L. ~$ C3 `* U
补充内容 (2012-3-8 09:42):" u) b0 @8 m! \- n* L+ ~! k: p0 a
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% U: ?: `9 ]+ K$ J* y( G" N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
$ \$ ^8 o+ q, ^5 m0 y& m) A- Y( T9 @+ O6 y
himr <address> <value>. sample: himr 0x80040000 0x0* ]/ K+ N. y. \) e: q5 h
: \0 |1 I# e( m# b" H% Q/ U
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 L4 f. `8 m7 s2 F( C1 i" ~2 \& S! n
himr 0x80040000 0x00
  T# l4 ~: }, h& r( R, Shimr 0x80040001 0x11+ {9 L! T. W" y( w' R
himr 0x80040002 0x22
8 x9 b1 z* C% |, C/ d! lhimr 0x80040003 0x33
2 `0 E. Q/ b: P7 Shimr 0x80040004 0x44
. V/ N# W+ X- b% M) qhimr 0x80040005 0x55
2 l+ N2 a0 L1 J+ x9 H& X6 n0 m
+ ]# r8 N! r' @1 z& bSN也是类似。
! P: k7 x7 k+ u
& w" ~6 [/ J1 C& N. R现在主要是,谁告诉我们MAC和SN的地址?
; x) ]7 ~" \7 U! O9 g7 G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * p4 _3 y+ X5 I2 M% m, |+ X
一直想找到运程修改MAC和SN的办法,苦于无解啊

' Z% e) d9 w- t7 _$ }源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 r1 Q0 V- d1 H% I: u) T7 S
" a! ^$ u+ a* w) p$ n4 R
修改的代码早有了。到今天不会编译。$ k" E( `4 P. b4 W) ^/ o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>6 q: S7 D7 }4 c# g3 Q5 k) g
  2. #include <malloc.h>* ~# L' ^$ s8 m- c4 e, X6 R9 z
  3. #include <sys/types.h>
    & Z+ a5 D; Z' h7 v
  4. #include <sys/stat.h>
    4 ]2 [& ?/ j. f% E( p
  5. #include <sys/ioctl.h>
    - I7 u: @9 _6 \7 ~
  6. #include <stdio.h>$ K0 W' v6 }- f: O2 S# A7 t
  7. #include <string.h>* r4 K6 D# W7 C9 J# D: ~  y. ?

  8. 8 K8 E6 u' d5 a0 P! U3 A
  9. typedef struct {$ Q0 n% t. S; W' t. y7 c- H; K* ~
  10.         unsigned int        e2prom_cmd_sub_addr;
    , S$ D) \$ s# ]8 e8 M0 p
  11.         unsigned int        sub_addr_count;
    # y: O4 \% A7 D0 ?# g8 x
  12.         unsigned char*        e2prom_cmd_data;2 _+ ^. Q% L! _) ?  v. D
  13.         unsigned int        data_count;
    " U7 H) B/ ]% p, E7 I1 D6 w: O$ o
  14. } e2prom_s_cmd;
    2 |& R; t) j) \$ X4 k/ i2 U& B

  15. + q0 |% A# N; x1 d. z( g% J
  16. #define E2PROM_CMD_READ 17 ?+ O, M" J6 K: `/ v( V; s
  17. #define E2PROM_CMD_WRITE 2
    ! H4 R! v6 }$ V# }0 s) @6 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"6 Y( ]) }" L1 I: ?+ r
  19. 7 l  ]% n" }+ w
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 a! l2 {$ r) w* z0 q" i8 P& P
  21. {  ^4 q4 ~$ Z3 l! S
  22.         int fd, ret;' B/ m5 Y, _, v" T
  23.         e2prom_s_cmd arg;- J' E4 X' G4 q0 Y: d) H0 J7 X
  24.         unsigned char buf[0x18];
    : \4 I  {0 U/ k

  25. ; m- o) i4 n2 F* r, t+ P* U# N
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) U. S9 n- c% i- t
  27.         if (fd  < 0) {' z3 ?/ Q1 M- ]4 l" ~* n
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 S/ F  t; E, W! G! Q' H: q
  29.                 return -1;
    - N8 ^) y! k$ J7 _1 {5 R
  30.         }, [# d+ A3 B6 b$ t$ n
  31.         arg.sub_addr_count      = 2;
    " y/ m4 b7 j+ I  D- r5 M
  32.         arg.data_count          = 0x18;# e& N, q" L$ F  w
  33.         arg.e2prom_cmd_sub_addr = 0x290;: N" Q' q  m  I6 F
  34.         arg.e2prom_cmd_data     = buf;
    ; q, b% u+ L. F$ o; t! V6 \8 r; o2 O& U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , X* e2 k. }; S% }" G+ u6 v
  36.         if (ret != 0) {
    $ u8 n! \# E2 Y* }  A/ H2 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: @, K2 g/ I0 S1 q
  38.                 return -1;; {) p) O  x* V" C
  39.         }' g" N" D! X* h! I5 r& h+ y" G) S5 E
  40.         memcpy(mac, buf, 6);
    & s9 l  c4 U8 N2 P  n9 D- J
  41.         memcpy(stbid, &buf[6], 18);6 U4 ]! m+ h( Q% C; f" i; t, i3 Z
  42.         stbid[18] = '\0';# e' n, y7 n! n& |  ^. j- F  ^
  43. 7 C& b+ f5 x$ A& K( H
  44.         return 0;
    9 \" |( ~" I8 s% o& d& `( S9 }
  45. }# T" \# T) f" I8 g& D2 e; {

  46. , M9 z6 x8 ?# ?: O- G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)6 x: l# _( E3 ]- a
  48. {* L9 T% @  u( ?) I
  49.         int fd, ret;& D/ }8 c+ @- \9 e
  50.         e2prom_s_cmd arg;
    % b- `6 G+ V4 G( I9 S( b
  51.         unsigned char buf[0x18];2 u1 p- ?' a+ a9 a# R
  52. - x( t! u6 `2 S" g8 Z" s( e7 [
  53.         memcpy(buf, mac, 6);
    0 {" e4 k& F" Y$ E! l/ H
  54.         memcpy(&buf[6], stbid, 18);
    ' ]3 m& I3 Y& m& Y: k* M
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 `5 g* I+ \, k7 P6 }
  56.         if (fd  < 0) {
    / `! |/ M. C5 P/ t
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 H. S, w& Z/ y5 d
  58.                 return -1;' J' u3 e; p1 r. R
  59.         }7 v+ y1 m: ?# I  q6 G6 s9 Z- \
  60.         arg.sub_addr_count      = 2;
    9 h9 ]+ M; n! X. S9 E# T; Y
  61.         arg.data_count          = 0x18;2 G* p. b  e4 b$ Z" N6 F) R, G; Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;7 Q' x) p# O  @& g- @
  63.         arg.e2prom_cmd_data     = buf;) r( B! ~. C/ L( J; \) n  c; k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 j( E! k4 r7 O, U: G1 g& P+ Y
  65.         if (ret != 0) {8 X) {; e; L) e1 p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * v% U' S1 E; e% [/ I( N" o
  67.                 return -1;/ G+ c4 O2 e4 e" @# [9 i- _
  68.         }. V3 |. ~, N) ?$ w
  69. & o6 j2 r( e* Y7 B1 |
  70.         return 0;+ p3 h& e7 a7 l! ~2 i1 H
  71. }9 u# r* B; c: Z

  72. : N  S  Z9 U4 |) G
  73. int main()
    % }! ?  E, |. O- ^
  74. {( j. R0 }$ e! r4 I5 @5 X" r4 W: W
  75.         char c;
    9 Y6 J* R  z' s) X# Q* k
  76.         int i, macs[6];2 e$ ^0 u7 ~2 m! h2 X
  77.         unsigned char mac[6];
      t" l: o% V# G( ?* ~5 H
  78.         unsigned char stbid[256];, o3 U8 b/ ]6 ?# @; T% }

  79. + `7 \; U$ J; |1 s' Y8 d8 H9 A4 P& \
  80.         if (readparam(mac, stbid) < 0)
    % P# ]* j; v+ B( I- N# \( T
  81.                 return 1;3 j% f7 p0 s4 G4 y$ E3 a
  82. + Z3 p1 }" K- D# l: c; b' M& U
  83.         printf("Current parameters: \n");
    " }: e& g# o' i
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . D/ w7 H2 i3 I2 ]
  85.         printf("  STBID: %s\n", stbid);
    6 G, \$ z- q' T3 v8 f: ^0 N
  86.        
    $ B& ?: I3 A4 @* Q, M- t  P! J: _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) |4 R' R. f) r$ i" h+ r
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( A$ y  [) `- _" l( x( _* B
  89.                 printf("Input MAC error\n");4 J- m4 O* U) p5 R5 {6 b% H
  90.                 return 1;
    * a% p9 e6 ]+ _
  91.         }
    / v4 D' I$ v( ^2 `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ r' |  \7 j. O+ F
  93.         printf("\nPlease input new STBID: ");: Y& z+ b2 G0 v4 U0 L# q
  94.         scanf("%s", stbid);+ E4 f! u+ F; `
  95.         if (strlen(stbid) != 18) {+ g, S* Y" Q% g# x* ?1 h
  96.                 printf("Invalid stbid\n");3 C# P0 I: F- @( j! V1 A3 T6 Y
  97.                 return 1;3 ]! }' p# `9 R( ]8 x7 z) V6 |2 U
  98.         }% h4 q* P5 V1 i  _, r5 P6 M
  99.         printf("\nNew parameters: \n");! R; I5 F0 y( H
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 S1 z/ H* v: u, E( F
  101.         printf("  STBID: %s\n", stbid);
    + x0 p6 f1 [0 h/ X. [% m# C  P2 N
  102. 7 p+ Z* v, N* x/ s+ y7 h& a
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 d6 e( k" r2 ]" _9 V1 q& X+ L+ C6 |
  104.         for (;;) {
    + S, \. \, a) T9 ^! u% N$ ?4 _# T
  105.                 c = getchar();# X1 D2 r2 _# E
  106.                 if (c == 'y' || c == 'Y')9 m& Q( [  t. ]* T( r' r
  107.                         break;& q+ ]) X5 V. a' _, l+ h) L
  108.                 if (c == 'n' || c == 'N') {- p$ p" P# F8 T4 c
  109.                         printf("\nAborted.\n");/ M" N+ ^: X0 Z* X1 ]
  110.                         return 1;
    - ?8 d+ k$ O* S3 Z8 c% ^3 i* M
  111.                 }
    3 M3 H  ?7 z: Z7 g0 K- `  c
  112.         }
    1 \# ^, P1 l0 @' G' ~; w9 D
  113.         if (writeparam(mac, stbid) == 0)
    9 {' `6 ^5 F( E7 G
  114.                 printf("Parameters changed.\n");
    8 ~1 b# [/ P/ O  v1 T  }

  115. % W* I; X% q2 Y( |- b
  116.         return 0;
    0 q, O) I! T% Y" W6 E
  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 % r# C( e. p8 C8 N. O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, X+ o3 B8 H' R5 u5 q8 q& w
你用的编译命令行格式是什么?
$ ~4 V/ H3 A2 y( m
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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