查看: 16348|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; g$ |# o, m3 }: v4 W( ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , h& [! W) \* H3 o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 {1 |5 U8 w! a
usage: himr <address> <value>. sample: himr 0x80040000 0x0
! A: B" C2 A! Z! e' N, Q; c) r5 B+ ]

4 _, \6 b5 Y8 p2 g不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
5 ~. ?; |) u& H: C9 W' E9 ]! ~
: A% V" ^& L) M" N. v补充内容 (2012-3-8 09:42):1 ^, H7 i5 s9 v" G0 f! j2 q$ L
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数0 H7 \2 i3 ~0 H2 i
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。, @5 `( M* o/ j& _
0 f9 r1 B! T. D3 u
himr <address> <value>. sample: himr 0x80040000 0x0
9 d3 i8 w/ D4 k5 E/ q
2 a" m: T7 _* y3 v例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ k; k$ i  O1 F
himr 0x80040000 0x00
' U5 P) b! j' ?2 z& [himr 0x80040001 0x11
( ]7 q" y6 ]' Q+ k/ e6 y" rhimr 0x80040002 0x22
' A5 D, v/ K  T  @" Zhimr 0x80040003 0x330 }; F+ W6 D& B
himr 0x80040004 0x44! v& ^, I! {  r) D' K3 G+ {
himr 0x80040005 0x55
; H/ Y* S& J$ X* X0 m
5 |/ K( y( B* x  ASN也是类似。, S$ L4 z- R6 v

4 E/ C4 B0 X3 p+ ^! S7 l/ y现在主要是,谁告诉我们MAC和SN的地址?0 B, H4 y6 y+ ^9 \1 _% y% B
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 , R: g  A: m) `7 i: n
一直想找到运程修改MAC和SN的办法,苦于无解啊
& O# A6 v, W/ v/ |& F1 @
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 / M1 h, @: m9 P& O  r/ t+ G
, C. X6 e5 ]9 i! K3 o# @" s! d+ S3 h
修改的代码早有了。到今天不会编译。* x+ {* R( L% P4 U+ A
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 D4 ?# T* j( n  w
  2. #include <malloc.h>
    ! O' Q6 Q5 s+ R3 _0 y
  3. #include <sys/types.h># s$ m% g& t# r$ Q
  4. #include <sys/stat.h>
    . c  O) \" {; |0 g3 q8 ?
  5. #include <sys/ioctl.h>
    ) X( F8 V! W6 z1 E$ o
  6. #include <stdio.h>5 J" o. u8 w8 u6 p6 L$ E. m
  7. #include <string.h>
    ) y+ e* B9 N8 M$ b( I, P8 C

  8. 3 N9 y4 I) P, X
  9. typedef struct {4 M3 K& a' W; }- t) T
  10.         unsigned int        e2prom_cmd_sub_addr;) u, [/ v* n+ W, U( m+ ]/ |
  11.         unsigned int        sub_addr_count;  h) U7 F3 a( F+ G& k; x
  12.         unsigned char*        e2prom_cmd_data;
    / V0 _) b$ N4 ^* O. s
  13.         unsigned int        data_count;& c4 o- P* ~  X% h# g2 Z3 i8 S! f
  14. } e2prom_s_cmd;
    ) z1 E* Y7 P/ t1 @+ E% d

  15. " a5 i: t+ F* A+ k, D
  16. #define E2PROM_CMD_READ 1
    0 q; _( ~$ B+ L0 `, H( T, P; m
  17. #define E2PROM_CMD_WRITE 2
    ( @/ S' ^" F# t( U- b2 ^
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    / @; I% Z+ w( ^8 k& d4 O6 t
  19. ( G: C: c- |: g9 ]0 ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( {" B; o3 Z! y: F- Q
  21. {
      \3 a* T4 w3 N' K9 R6 n2 n
  22.         int fd, ret;
    % Z7 @* ?7 ^1 a+ p- K# P6 u9 v
  23.         e2prom_s_cmd arg;
    , J6 Q0 i4 h4 h) D$ u9 G4 C* G  \
  24.         unsigned char buf[0x18];
    ; `6 ?' Z6 A: H5 [
  25. ! u& e4 e5 W  a. O6 E+ `! j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( S* |' X& f6 `0 Z: n! [
  27.         if (fd  < 0) {
    & Z; m0 T' \% Q  _1 y7 x9 b8 d4 D3 `$ [
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 X& I. k) b$ k0 c7 \4 P- U/ @: F
  29.                 return -1;# ?; n7 A# W- t4 `
  30.         }! F8 u2 G! u: L# g$ a& C4 Z& F
  31.         arg.sub_addr_count      = 2;: p; D5 c- b' L- ~% c+ j
  32.         arg.data_count          = 0x18;0 d; \1 M. B; `: J
  33.         arg.e2prom_cmd_sub_addr = 0x290;/ E8 t& |  D, F
  34.         arg.e2prom_cmd_data     = buf;
    ( A2 V& U  [- o9 Y: T4 i9 l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: V% Y1 m$ a; Q$ D
  36.         if (ret != 0) {
    ' J4 s& n% |  @* p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);- t$ D' c- b7 `, T! n. {. W
  38.                 return -1;) s2 O( c' |4 o# Z( [
  39.         }
    , U6 x# U" A. L8 y% ^7 E
  40.         memcpy(mac, buf, 6);& F# _. Z% f2 A' [3 _# S
  41.         memcpy(stbid, &buf[6], 18);
    ( D2 p0 l, f! ~2 |; U6 X6 s& E
  42.         stbid[18] = '\0';
    + o9 R! g. A7 M' S( l

  43. 9 ~& Y: L# {% X* D" F: C: h  E
  44.         return 0;% Q2 i# s: X: t0 Y) b
  45. }
    * n" L6 v/ ]# i. i$ ~" E6 ?
  46. - F5 m7 b: V* Z) V0 W- j1 w0 n# x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    8 p9 o, |1 k' L2 q+ ?
  48. {: C) G" j, M! O3 _
  49.         int fd, ret;8 q  N) X6 k0 n" P0 B4 B& s
  50.         e2prom_s_cmd arg;3 j/ I3 z+ U6 u4 X  K
  51.         unsigned char buf[0x18];7 @9 ^7 t# y" {. k  s' {; H* G

  52. 6 z8 l- \# G3 [9 j
  53.         memcpy(buf, mac, 6);; k' \# x! a1 [' H8 G% U' c
  54.         memcpy(&buf[6], stbid, 18);
      M( [5 y+ W  W2 ]6 k! D5 S$ p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : \; e* V2 T; k  H
  56.         if (fd  < 0) {
    8 g" a2 I4 i) {% B+ R$ C3 \
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# P+ f6 W+ Z6 h3 c% ^  s' s1 s
  58.                 return -1;
    : @( h0 x) `% E1 k6 ?3 @- {
  59.         }* J6 l; p9 B0 @0 V% ~
  60.         arg.sub_addr_count      = 2;# S- T/ q# L- ]1 f
  61.         arg.data_count          = 0x18;
    : ]- O' W4 w1 g' a3 V
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    0 ^4 L) ]/ |8 t* M
  63.         arg.e2prom_cmd_data     = buf;
    + q" _9 m- Q/ m7 A0 H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # C. N( O1 _! Z! M
  65.         if (ret != 0) {6 g6 c2 K5 M! w5 \9 Q, C1 o) b  _* S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);5 m, u. L  t! Q+ R# D6 j. s. y
  67.                 return -1;
    . i$ k9 p6 D! S5 A  x
  68.         }
    5 T0 T$ N- _- r/ D; v& N
  69. - Q8 a6 L; J! A1 H$ S# X+ i
  70.         return 0;
    3 R4 ~$ ?2 L6 L$ l% ]+ t" E- f
  71. }
    " w" I6 ^0 O) ^/ g/ I( a; }
  72. 5 Y1 H" O5 w, \: v4 w  v: E
  73. int main()6 j1 N- a, r3 ^# v# X
  74. {9 m0 H( |; j3 i; W1 K' @
  75.         char c;
    " V8 ~- |+ c% G
  76.         int i, macs[6];( G* C4 V2 b; E2 F" U( O  G- p9 W# c
  77.         unsigned char mac[6];
    " H8 d8 f6 F7 Y# _/ n# G: B7 [
  78.         unsigned char stbid[256];( [- _% t( H: a
  79. + ]9 Y2 `! H2 X, u& t
  80.         if (readparam(mac, stbid) < 0)
    ( P- u! b. ^" Q8 {& J+ Y
  81.                 return 1;: ~+ i; J- P8 |$ v) i
  82. # \0 B" Y3 y7 g
  83.         printf("Current parameters: \n");
    * w! ~, Z; _7 x5 X* t+ [9 k" X2 R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! u8 f. l3 [' D5 W- m* g
  85.         printf("  STBID: %s\n", stbid);
    2 Z# T* S8 I9 K6 k% Y
  86.        
    & H9 `3 r# ?+ Q! R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  d! h7 P9 N9 c6 [2 @
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {& U- k* |3 G7 M+ k
  89.                 printf("Input MAC error\n");( ^- |( c1 z5 v5 d/ p5 d/ h
  90.                 return 1;
    - n/ C0 \, A4 P! r  F, C. [% N
  91.         }% b" D8 m# k3 \% a: o% s( V& W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];6 g. N* t6 j. Q& Y" y( v  b
  93.         printf("\nPlease input new STBID: ");% U& \, |. }4 Z( F& H
  94.         scanf("%s", stbid);" F# W3 K8 s% s% q2 k' u
  95.         if (strlen(stbid) != 18) {
    ; N5 @2 ~! A, y' V/ E% ^- g
  96.                 printf("Invalid stbid\n");% x4 T# ^$ G4 [, k, Q# V
  97.                 return 1;* D! u5 t" p  @( Z1 v4 J
  98.         }* b3 f  t; R, m
  99.         printf("\nNew parameters: \n");+ }, U% j0 L/ o* Q  l" x, Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, x/ y* h+ B; ]1 o! o: `+ K
  101.         printf("  STBID: %s\n", stbid);9 F: f* Z9 @+ N+ W1 v
  102. " t0 f# L1 J" B7 v9 e: S
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 |. R2 m0 j. E; M& W9 y- d
  104.         for (;;) {% i) I5 B$ ^: Q. y
  105.                 c = getchar();
    + W+ \2 G) b) D
  106.                 if (c == 'y' || c == 'Y')7 u- ?: o$ u; x2 n+ f0 o
  107.                         break;
    ' r2 M1 w3 B, N4 L2 _3 f
  108.                 if (c == 'n' || c == 'N') {
    ( d% y+ \- k  V: I9 _! n! R
  109.                         printf("\nAborted.\n");1 h! C0 I# G4 t" c5 h& Y
  110.                         return 1;
    2 H( ^! V! P  z+ ?) D% |
  111.                 }' U% S( G: L! D) c( T8 \6 Z, g: C
  112.         }7 l: L2 z; |/ Z5 p
  113.         if (writeparam(mac, stbid) == 0)
      W4 }3 u' @  T$ ?$ C2 \9 x
  114.                 printf("Parameters changed.\n");6 I3 F  d7 D2 t1 c1 M+ H( j' D* @
  115. + Z8 M4 V/ {, M5 o  B& y% H
  116.         return 0;
    6 n% D) w; m$ {& v# [8 R/ j7 s
  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 + f+ f: N% O# S6 Y+ `+ p6 d$ B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% g1 H& G) `* [5 S+ Z4 G& I4 P你用的编译命令行格式是什么?2 e- V  y$ {% 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客服返回顶部