查看: 16095|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 g  s$ J: r$ \2 {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* `0 |0 ^: C: L& W& S
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' ~* l( _9 ]7 Dusage: himr <address> <value>. sample: himr 0x80040000 0x0. E. W8 y( }& e

2 N% M. h4 \1 W9 Q! i
" P2 _/ q2 ?$ ^. B9 u" B2 q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- a- B) V* ^( ?: C4 u  n7 K8 s: f& W* g& ]
补充内容 (2012-3-8 09:42):
% f8 K8 E" S1 a! ehttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
/ n+ \/ j+ v: O( J+ t3 x: g5 }这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。' E9 P0 _1 V' I
) d( w1 [! y5 O9 p( Z
himr <address> <value>. sample: himr 0x80040000 0x0
! k; @! G- R, n/ T/ h( b. K; D; c+ o  M. o# _1 F! X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
. }8 r$ {9 M: D  x: |$ ?# y6 \himr 0x80040000 0x003 _  B3 |- y/ m8 P- P/ W  c
himr 0x80040001 0x110 v' ]0 Z+ x/ X
himr 0x80040002 0x22& R2 n5 @7 @, ^/ G( j& o) u
himr 0x80040003 0x33
; f, B# b& I6 P; m9 Xhimr 0x80040004 0x44" [8 A* b. O! M* H! L( P% c
himr 0x80040005 0x55# J7 N8 Y5 D0 }8 g6 v, m9 Z3 }* @
# ]! u1 F% h/ {( r0 @( k  q% b
SN也是类似。: G  \/ Z- ?' G. v0 W/ l

$ E( |7 S/ G( S$ Z+ x! ~现在主要是,谁告诉我们MAC和SN的地址?# [. r4 b1 C# s' M& ]
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, p% J& A: C% h一直想找到运程修改MAC和SN的办法,苦于无解啊

( t+ L# t$ @0 R; H& d) `4 q* d! A源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. w9 N) g" M7 c7 w: J+ O" G* m" s
. R8 ^. A% E8 G9 h- u  C5 x修改的代码早有了。到今天不会编译。
7 r7 o3 x/ V3 b' V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 a9 n3 P% M4 b& Y
  2. #include <malloc.h>
    " `) u, t  q7 q3 o7 |; ]2 q
  3. #include <sys/types.h>5 I! s. B  X. v5 \9 p% M
  4. #include <sys/stat.h>
    0 _8 g2 V3 u# G/ z8 x, U- l, Z% p
  5. #include <sys/ioctl.h>
    ( C' ^4 u1 `. e5 m" \  F+ h
  6. #include <stdio.h>( o3 u) O& [& M; y6 ]. b/ L% C
  7. #include <string.h>2 z2 L, Y9 w5 W9 F, h

  8. ' R/ {3 `# w. O
  9. typedef struct {  K- P4 [" b( `7 _
  10.         unsigned int        e2prom_cmd_sub_addr;3 ~1 A- H, [4 ], M
  11.         unsigned int        sub_addr_count;+ `0 n, q% X+ H1 _
  12.         unsigned char*        e2prom_cmd_data;
    ! d4 Y2 D! n1 X% g0 j. B1 k
  13.         unsigned int        data_count;
    0 m- q, P& w( j% N/ S4 M! _7 R
  14. } e2prom_s_cmd;
    ) e0 j3 L# i+ n2 F
  15. 5 A) Q2 p+ X2 {7 G) ]1 N' j
  16. #define E2PROM_CMD_READ 1
    8 U, B2 }' N' H
  17. #define E2PROM_CMD_WRITE 2
      G3 f( s& z+ U/ F9 W( P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / f2 A8 h; ]# ?9 V" K( e

  19. 2 a4 H" O& u/ a" V! N+ d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 D$ I  `0 Z* X8 _7 X' e/ h  n; J' N
  21. {6 {1 M/ u0 l4 T7 h0 E
  22.         int fd, ret;
    " w6 z* S" H% V4 w: `4 b
  23.         e2prom_s_cmd arg;
    0 ?& V7 e4 l& U! K3 w
  24.         unsigned char buf[0x18];
    1 o2 R9 R" a+ T7 Z: [* T. |

  25. % d7 h# z6 g7 C4 E% I- J7 [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 {) h, l7 {- B7 s/ c  c
  27.         if (fd  < 0) {  ^' H: c# D( h9 f- Z( Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 I$ s: _4 R9 i$ i. t6 h  `: A$ |+ L
  29.                 return -1;/ W) C. q2 ~' E5 Q
  30.         }' K, }" {. ]1 e: I$ P  U* x
  31.         arg.sub_addr_count      = 2;' m4 X$ n- P: O# x% u+ |" j1 l
  32.         arg.data_count          = 0x18;
    6 Y3 g) S( L" P' n1 @) l- A
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    $ a' p5 _( R3 g& R$ b, N, @
  34.         arg.e2prom_cmd_data     = buf;" b( n1 \0 {, i3 w9 \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( K  _4 i. @5 |. N1 w& h
  36.         if (ret != 0) {  d8 N$ l, F% V4 E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. ~1 X( Y. @4 ^5 _* v2 L
  38.                 return -1;
    : b7 L* Z$ f" i' D; `1 |. ^/ }
  39.         }
    + a1 x& b' K3 _) L* N
  40.         memcpy(mac, buf, 6);
    . R. o' q. p3 K, a
  41.         memcpy(stbid, &buf[6], 18);$ q9 [" s1 @- k, B( o  P
  42.         stbid[18] = '\0';, t- J+ N$ ?  e: N  i) J
  43. , l7 D! U" \2 t8 c, r
  44.         return 0;
    * Q4 R' W% s) H0 B) E' K
  45. }) u1 t( b$ X- P: d, W( v
  46. 9 ~! ^. ]; ]1 c" P, C1 m/ H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)' b' R( O+ y7 c& H# i" U, z( N
  48. {. a; |9 J: w; M- h
  49.         int fd, ret;! n0 K# Y) e7 t8 s1 P. r
  50.         e2prom_s_cmd arg;
    4 I) Q4 S- d9 i2 V
  51.         unsigned char buf[0x18];2 `" |1 E$ q! f! h. H3 h4 D
  52. 2 @) r6 F7 v) @8 b
  53.         memcpy(buf, mac, 6);
    # P9 y/ [& j9 e  A# c
  54.         memcpy(&buf[6], stbid, 18);
    ( x  e* g% a# }& s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % C% P& z$ g9 R! F$ e
  56.         if (fd  < 0) {
    ( C+ z+ K% ^/ s- C; `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      k2 M5 L" _2 a; h1 G- I
  58.                 return -1;
    ; _  C6 @2 v# L$ L
  59.         }
    . _5 t0 ~' i; K1 v% n! g6 y$ i
  60.         arg.sub_addr_count      = 2;
    ) ~5 ?: }5 f  Y, H
  61.         arg.data_count          = 0x18;# a/ z8 {! g& C; f
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 N9 W1 Z9 k7 g! b+ W! W4 r6 M0 d, G
  63.         arg.e2prom_cmd_data     = buf;. m& t2 r% A9 T4 }3 o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  Z" Z/ ~. t4 _3 f. P+ z' [  d
  65.         if (ret != 0) {
    / ]6 p) ^. I- n" F
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 ^, ~, ]! w" W. O" M& U: H. Z0 @
  67.                 return -1;
    : f' Q7 S- Y* N- O8 _: |5 f
  68.         }
    ; n) z8 h$ l4 c; I8 }5 [- e
  69. ' Y' A! h0 y* P9 v* ~
  70.         return 0;1 c( ]+ A8 {. C' v3 U
  71. }1 G) y3 L, F% a9 @+ h8 s
  72. 7 t8 _0 F5 ?3 S/ {1 Z5 q
  73. int main(): ^: q& F3 U9 H; L. U
  74. {
    8 E! Q* ?5 {6 y2 J
  75.         char c;
    2 P  Y; m3 w) |& D' Y# D
  76.         int i, macs[6];
    1 X( M* [3 Q. \
  77.         unsigned char mac[6];# ?  S  o, y) z  s" _
  78.         unsigned char stbid[256];
    3 \% [6 P  }6 H5 W( y4 A
  79.   t! ~8 H- Z/ {
  80.         if (readparam(mac, stbid) < 0)5 l' O+ t$ T+ S8 N& L
  81.                 return 1;
    ' h; U& F: I0 V. m3 a
  82. 0 A* {2 j3 N8 a2 k& f
  83.         printf("Current parameters: \n");7 h2 d* p" n- A+ K( ^# a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 b% D+ p3 z3 Y  y- I9 q& C
  85.         printf("  STBID: %s\n", stbid);+ [) {) ~2 _: ?/ _
  86.         $ i+ g$ v, L% K2 Z  H: e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");6 \5 \; h, V2 A. b1 t1 A
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 p$ E# y5 A" }' c6 k% B: P2 M
  89.                 printf("Input MAC error\n");
    1 u# {$ i6 z/ Q4 i8 N8 k
  90.                 return 1;2 m! u5 |5 g1 K8 u
  91.         }3 \0 Z" j: j1 f% ~: Y2 Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 A* p" _$ {9 t" t+ }, @" h8 G* O
  93.         printf("\nPlease input new STBID: ");5 `( z3 d4 {, Q0 G
  94.         scanf("%s", stbid);
    + Z! H4 j" n) V( f; q
  95.         if (strlen(stbid) != 18) {
    / K8 h0 i8 T2 n$ j; Q' J8 C
  96.                 printf("Invalid stbid\n");' O8 K3 x, |1 P8 x8 B, m! ~
  97.                 return 1;
    8 Z) i$ @+ x# |" _* f5 Y
  98.         }( f$ t/ ~7 d, Q1 b  g* Q, {" K7 q
  99.         printf("\nNew parameters: \n");; s+ J! m0 q6 T9 b8 E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! M, M0 n8 E8 k
  101.         printf("  STBID: %s\n", stbid);
    , a  ?( R2 z" U3 S, |$ K
  102. - w3 T& V0 l0 h& w
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & ?- t" ~* S; @7 H
  104.         for (;;) {% I; c( T7 \" x" i7 C7 p7 @
  105.                 c = getchar();
    ; Y& J& C9 I- F4 R* t
  106.                 if (c == 'y' || c == 'Y')
    , o) B3 \, F( [9 f: n
  107.                         break;
    ; I7 m- N) y' P+ X
  108.                 if (c == 'n' || c == 'N') {* T0 K& m) a( J+ Z$ ~" x
  109.                         printf("\nAborted.\n");
      j; M2 [  J3 {/ j# }, r0 C# n7 J
  110.                         return 1;
    + C. {( Z6 p( d" R6 E" b( h! N
  111.                 }
    3 v. H4 O  p7 D" E+ B, d5 l
  112.         }" d. y% R; R, r0 w) k
  113.         if (writeparam(mac, stbid) == 0)
    ' N& E- I+ J- Y8 p8 _6 I0 f
  114.                 printf("Parameters changed.\n");9 R0 B, K% W3 l% J
  115.   R$ \" ^; p, y; M# b" {3 }9 h' Y
  116.         return 0;
    . G* n; c/ L+ 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
# T8 x8 d& t! b" N3 r4 k在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& ^7 [2 {( |" _& e6 v3 P7 @$ l* q你用的编译命令行格式是什么?
; A: R) y" C5 H
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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