查看: 16633|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    7 p/ U2 S' J' t" |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' H" Z' I2 r) G, v7 ~4 g# o7 Q0 x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ O( y4 z! M; N6 k8 F  [% g
usage: himr <address> <value>. sample: himr 0x80040000 0x0& Q( c3 ]) K+ g

" X8 d0 U- |  w7 s  |1 v; Q# `5 ?1 I9 \) ^$ N: o, h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 q+ L7 l& L) @0 z( V2 B" E& c
7 u2 n* N* X; \" A5 F/ K& E) p2 r
补充内容 (2012-3-8 09:42):1 g/ v0 Z9 }, u  L& m. }
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
- F+ G: d( }' o& n这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  g$ c( r* I6 K  ]7 X
! s6 n6 l% ]+ {
himr <address> <value>. sample: himr 0x80040000 0x0$ F  h( V' f. `! u
& C0 j+ `9 ~) n" |% `0 |
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* p' [6 q1 [8 U, j7 u! Phimr 0x80040000 0x00
3 q5 c! x7 }* H. i* E8 {9 Qhimr 0x80040001 0x11
% U- k5 W: q+ c# V! U0 ]himr 0x80040002 0x22  n0 @* D& x3 U* B* B
himr 0x80040003 0x337 I. O- d5 t" R; E4 W
himr 0x80040004 0x441 @* n; B3 Q6 p9 ?) p2 h3 J
himr 0x80040005 0x55
% X$ r# U2 ^3 w  L. b. B; Z1 ~
! I  T3 W8 c" v7 r4 ^6 g2 z* ?8 C) K" ?SN也是类似。% a8 t& [! v3 a5 E
0 L' S3 i% K4 z: ~
现在主要是,谁告诉我们MAC和SN的地址?
' L" R! l8 _% G8 L
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, k. X; \+ K2 L2 U+ B! p一直想找到运程修改MAC和SN的办法,苦于无解啊
3 h  k' f2 R% O0 [
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% u' h' w& J; b. U
7 O1 j. O$ O) L3 r% Y! E1 d: k修改的代码早有了。到今天不会编译。9 C7 ^* U" y( f: c7 ~
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% t. A5 }, Z6 D0 l( }2 A
  2. #include <malloc.h>
    5 J" C& n) |( H8 C( b, h5 Y/ q
  3. #include <sys/types.h>
      {$ [! N# `8 S) z
  4. #include <sys/stat.h>
    8 J- q2 h* i- K4 F) G
  5. #include <sys/ioctl.h>
    $ f! b- {, U. U$ l9 i9 O- W5 `% L
  6. #include <stdio.h>! i6 |2 g! U% m, t; ~
  7. #include <string.h>4 q* `3 d+ A$ M. d: w
  8. ( R! R8 p' W% n  [1 P5 ^
  9. typedef struct {% K6 N5 a) [$ Y$ R
  10.         unsigned int        e2prom_cmd_sub_addr;
      A6 K) B; h+ h/ Y$ @% @) b1 T
  11.         unsigned int        sub_addr_count;
    . {3 ^4 F9 f' `8 u: \, P, a
  12.         unsigned char*        e2prom_cmd_data;4 F+ q& n9 ~2 S1 G' T2 r- V" m
  13.         unsigned int        data_count;2 f# i0 ~$ w9 w4 j( |% A3 Y# M/ G
  14. } e2prom_s_cmd;
    - p$ T% U% @  l4 ]2 V7 B1 u0 G
  15. . t0 y5 L% U  o" R  {' p- z8 d
  16. #define E2PROM_CMD_READ 11 ^; e/ Y8 P( I! ~' O7 S
  17. #define E2PROM_CMD_WRITE 2) C8 p  j  Z2 W0 f( z' s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ v, [* [; t, N+ K7 E+ F  \

  19. 2 `* S2 i- c6 E- i4 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)- \8 ^9 w/ {4 s6 I0 C0 t! R
  21. {4 I- @$ b$ Z- C4 e4 C
  22.         int fd, ret;' d" Q  J; u7 y7 Q$ V/ ^
  23.         e2prom_s_cmd arg;( w3 K2 s+ ]$ @& s# [% h" j' S
  24.         unsigned char buf[0x18];/ L' D8 \# E/ `' T1 R
  25. 7 _8 t* }/ G4 y! J' s2 s
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . {7 S6 D7 \+ G0 `# ^
  27.         if (fd  < 0) {* B$ b! _+ M% i* Z, a& t" \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 I3 A/ r! c, s2 `
  29.                 return -1;
    ; @( C# [3 E, L
  30.         }9 P9 `& J+ j8 ~4 t& ~  l
  31.         arg.sub_addr_count      = 2;
    " f; O8 S/ m  N3 C( i
  32.         arg.data_count          = 0x18;
    7 f( C; y; @5 A; ?) _, \. q* r
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ! {, h0 P$ @. m
  34.         arg.e2prom_cmd_data     = buf;, Z, ?# V4 A" ]7 r: P# ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    5 w9 R* b/ u6 }+ _9 m# M$ `+ B* I
  36.         if (ret != 0) {
    ! D! _3 G- p+ N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);5 q: E' q/ J9 s( ]
  38.                 return -1;
    0 q5 b% J6 Z+ S: A! P: M
  39.         }6 j  l1 f* j8 z/ p3 ?
  40.         memcpy(mac, buf, 6);
    2 `" J2 T4 r6 L, g
  41.         memcpy(stbid, &buf[6], 18);
    ' D$ r2 o1 u1 N/ T& {4 h, W! }4 S
  42.         stbid[18] = '\0';; M9 U; u7 a7 }$ c1 l' }0 F/ q
  43. 9 H2 H9 {$ }" O, t/ I. c* S
  44.         return 0;
    + Q  [& m+ g3 C4 W
  45. }2 F9 Y5 }/ `$ R& r& K
  46. ' D; S- E% _! u2 f3 Z6 V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      ^3 m2 f" [3 n6 n$ m
  48. {
    0 R- e) C& X2 g7 @
  49.         int fd, ret;/ G4 X& A$ }2 R" Z# W0 s
  50.         e2prom_s_cmd arg;
    ' }$ M6 y  n1 ^+ N% {& i
  51.         unsigned char buf[0x18];
    . @* z. U" ?  q  J6 U
  52. ) [& ^! }8 Y8 g! O
  53.         memcpy(buf, mac, 6);" @6 T/ _- V1 x% S; m4 M
  54.         memcpy(&buf[6], stbid, 18);9 {" U4 V/ K* U# T4 {) t  {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 U0 B' k3 m8 t7 Y3 L1 }
  56.         if (fd  < 0) {
    4 P1 ]) ^/ P+ @  z3 I) O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 E% W& u6 V0 {* M- A
  58.                 return -1;6 o3 |) D0 O' N: C5 f6 t2 \7 K4 ^0 P
  59.         }/ _+ j4 G: a3 U; o& U
  60.         arg.sub_addr_count      = 2;
    ) y3 t. ^0 C4 N  u2 s
  61.         arg.data_count          = 0x18;
    , v) T% |0 P5 A9 v, g. Q3 k& Y5 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;" x8 H; [! @9 \' |
  63.         arg.e2prom_cmd_data     = buf;
    4 O; ~6 g7 ^6 @4 Z; s; P: K% v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) [. Y& h3 a0 v
  65.         if (ret != 0) {, w2 j" G/ y) z: L' _/ ]3 i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);) f6 f4 W6 m; n, z, `" c
  67.                 return -1;
    ( d7 k: L9 x; S2 z6 I. u8 s
  68.         }
    2 d! |" H1 I' g) D( @4 N, G/ `
  69. 3 q+ c+ T& G+ `1 n) ?
  70.         return 0;
    3 [% @7 b2 G7 n, o
  71. }
    " J  I' t* ^8 i: L
  72. 9 C& C. k  v4 _) F* }
  73. int main()
      A( Z7 l! e+ F5 e/ P
  74. {2 D+ s$ O9 z* A5 N
  75.         char c;
    0 J# e5 w5 o. [( w2 S' f# j" v
  76.         int i, macs[6];; G) V2 x4 {) l* w3 D, O) y  F
  77.         unsigned char mac[6];2 F; \- g4 d, d. `' }1 y( U. g
  78.         unsigned char stbid[256];
    % n# I6 C0 k7 Z9 I1 h

  79. : C4 G- d+ [. v
  80.         if (readparam(mac, stbid) < 0)
    " ]- S% X( u9 a! W
  81.                 return 1;4 i+ k" q5 Y$ @; O% i
  82. ! O. F8 {; }1 r, b1 w. B8 S
  83.         printf("Current parameters: \n");, B* v' N0 U* D, J1 D
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , B. t- ^- A' c1 j. b* b, F
  85.         printf("  STBID: %s\n", stbid);5 j, X, C( _8 i6 F' N, Q
  86.        
    ' Q7 z, q) F& J/ d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ A4 S, F6 L9 R9 q. a. k% a2 J2 q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    / N7 s) ?9 E. Y9 @
  89.                 printf("Input MAC error\n");
    ; Y) P6 ^& }' l4 X$ t, W
  90.                 return 1;
    . e% S$ u5 q  M3 m$ }4 Z. j
  91.         }
    4 r* s: t% ?9 Q2 X3 z3 ~
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% a7 R: d4 C/ S5 m0 s; x7 }( A
  93.         printf("\nPlease input new STBID: ");
    4 F: y: T$ w7 ]# n* Q1 P
  94.         scanf("%s", stbid);
    ( D# i% B2 r& J& l7 ?
  95.         if (strlen(stbid) != 18) {( ?7 b. M! A' e* }) S
  96.                 printf("Invalid stbid\n");) @9 ^. h( g7 b$ T4 q4 s" T. g& T
  97.                 return 1;
    & p6 o! i/ x  ]$ o
  98.         }
    ' E/ P6 d. P5 O0 e  a8 C
  99.         printf("\nNew parameters: \n");
    6 I* }& P3 W+ P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , ?8 d8 r7 K- e) a, i5 K
  101.         printf("  STBID: %s\n", stbid);
    & L& T# E: j# l0 K4 B& U* r4 t

  102. + k( a6 X1 f8 L) ^% V5 f
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    4 D- U8 B* y% S5 \$ S
  104.         for (;;) {5 ^" b1 v) {, y: V$ ]& \
  105.                 c = getchar();" z: P2 L" Y+ b' }& z
  106.                 if (c == 'y' || c == 'Y')
    ! c( M% K5 P; ~6 @
  107.                         break;6 E0 K9 Z% Z6 {! P5 b& C/ W+ {
  108.                 if (c == 'n' || c == 'N') {
    % N1 }; Z$ C( b0 U
  109.                         printf("\nAborted.\n");* @" F7 V# B& T3 H/ m! x
  110.                         return 1;4 h+ v! H! r0 ^& ~( d
  111.                 }
    $ x; \" w: h0 G2 z( z! e
  112.         }, M" X8 _( Q! n6 [$ j7 U
  113.         if (writeparam(mac, stbid) == 0)
    7 v1 r# S# J% f  ~8 C: ^2 \8 G6 {+ A
  114.                 printf("Parameters changed.\n");
    & ~3 l  H& ^+ d. e* b

  115. 2 ?! n' E. y, S( Z& d4 U
  116.         return 0;) a6 F$ B5 v: Q2 ?
  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
  }) d5 {7 y1 _1 h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 {/ O+ h& k* i  y+ h
你用的编译命令行格式是什么?
6 \& s) g: W6 c! \* {' ]$ ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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