查看: 16898|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / ?6 F8 u, R3 u) q2 P; j* H
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 M3 q) E# R' [
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  n% g# K/ J" ?0 Q7 Z
usage: himr <address> <value>. sample: himr 0x80040000 0x0; F% Q/ G2 C9 R" G% j/ X

5 f' H$ i2 e  q- V+ f* ^
7 y2 m" n, y# t& N  R. b不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
0 S  A. [1 D5 H5 Z% `, V1 x2 [/ c* z$ b/ ]3 h
补充内容 (2012-3-8 09:42):7 W. T# D4 \5 _+ K$ E
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 k: u0 Z! m) a" ]+ K1 ?9 |这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。  t& ?/ u: T- H  o- a$ u

7 a: ~' @$ _# }9 W2 C9 H0 u8 ahimr <address> <value>. sample: himr 0x80040000 0x0
6 r, z6 r# a: l) i1 _% u5 X0 D& y6 N  ^# W: U5 q
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; z) P2 B- ]# S/ x5 A6 \himr 0x80040000 0x00
$ e6 E+ g( y3 T; G1 T" vhimr 0x80040001 0x11
0 c4 a1 u4 f2 Y% h: ~# }himr 0x80040002 0x22- U5 f7 D$ [: e! M
himr 0x80040003 0x331 g% ]/ h# |( j' Q8 \+ U; ~  D
himr 0x80040004 0x44
# T; G- @& p+ F9 l  i, khimr 0x80040005 0x556 i; E# @' b9 u, c" b2 X5 |
2 z' l4 e# U! I8 c# o: n. r
SN也是类似。
. @  k; p- [! m$ v0 m) r# y; s4 S) Q% ~& F' M  ~3 U
现在主要是,谁告诉我们MAC和SN的地址?- T; m1 V; @  {
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 [  R* D4 s4 g一直想找到运程修改MAC和SN的办法,苦于无解啊

7 ^& Y$ \4 O& e# C2 b源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 X4 b/ E* o1 U) H( z4 l, m6 {7 w3 M; B
修改的代码早有了。到今天不会编译。4 e1 S+ U. S6 E5 n) b3 L
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    - ]  d5 o7 ~- X  P
  2. #include <malloc.h>7 D4 L+ R: B& U; Q* t; s; f5 ?
  3. #include <sys/types.h>
    2 Q4 X- M; o/ t6 w; ?$ I
  4. #include <sys/stat.h>- }0 M& u9 b$ K
  5. #include <sys/ioctl.h>& J" |9 r2 |& G; k, x4 s
  6. #include <stdio.h>
    9 ]/ n1 y* P# S! N
  7. #include <string.h>$ \5 F$ H/ a" H- Y6 _! }  B

  8. 6 }4 n8 o+ l  j0 I1 \4 b3 y
  9. typedef struct {+ d; \  C3 ^+ o8 S) @
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 H* I' K0 l; l& v* B2 I
  11.         unsigned int        sub_addr_count;
    + S1 }. t$ R' ^; a- m1 s
  12.         unsigned char*        e2prom_cmd_data;* L) K! _& Z2 {: ^
  13.         unsigned int        data_count;
    1 {& _: ]5 a3 Q2 y7 ~4 k) M
  14. } e2prom_s_cmd;
    / M1 _9 n  [+ {0 I
  15.   S1 C! @" I) E6 v. t
  16. #define E2PROM_CMD_READ 1
    4 u& S5 Y5 a4 Y2 c+ D
  17. #define E2PROM_CMD_WRITE 2! t) G4 w  C' V/ o9 r
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % n$ f% E( p+ W& j! k7 }" v
  19. % B2 w( S* H* Z- f$ N/ U$ a0 a& c! w/ g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( t) F& {& I3 h+ v
  21. {
    ( A4 H( d2 d3 Z  z% X! @
  22.         int fd, ret;
    ; `  y, L/ a2 ]
  23.         e2prom_s_cmd arg;
    . i1 h+ z/ W5 m, r
  24.         unsigned char buf[0x18];- C) |0 S; r! A
  25. 3 J0 U6 e+ A! f9 @& E: d
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ i' Q2 k0 z. K8 P" e
  27.         if (fd  < 0) {
    ! l' S7 B+ w& V* E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);, K" f5 K' u! K9 H: A7 C0 p
  29.                 return -1;9 Y8 `  l6 C8 v2 h& K+ M0 Q
  30.         }
    ' \9 ^! h. C' |  F3 H
  31.         arg.sub_addr_count      = 2;
    # {- F+ B+ m7 ]) w" {6 {7 ^- m
  32.         arg.data_count          = 0x18;( u6 _7 X% f$ W+ e4 M" o
  33.         arg.e2prom_cmd_sub_addr = 0x290;& j9 Z' Q, C7 J8 I- K3 T' v2 T/ E
  34.         arg.e2prom_cmd_data     = buf;; K% P, n" c/ X$ v0 r0 T
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' F9 a( \% {$ y5 F4 i# e' e. y" d
  36.         if (ret != 0) {
    * ]# |5 H& ^+ a2 l5 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" m% A+ ~1 C- L- C/ v  d( g/ H
  38.                 return -1;  P- H! ^7 x0 I) d
  39.         }
    . ?9 G$ b* @) u! [9 N7 @& i+ Q
  40.         memcpy(mac, buf, 6);
    ) s/ w8 y2 D' p
  41.         memcpy(stbid, &buf[6], 18);5 ?- b4 R' y9 F+ @. ]
  42.         stbid[18] = '\0';- r) e2 a$ C/ z! f) V# A

  43. - i: u) d+ m4 H( w+ Z
  44.         return 0;
    # q! }8 O2 j& X: g/ E* u5 u* O
  45. }
    + ]' x4 C- v9 G7 X( |% _4 G+ X
  46. - i8 i6 l! r+ I7 b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ I; z& {' m0 V! F
  48. {
    - P: o) n% K3 ?$ y- M2 P+ }
  49.         int fd, ret;
    $ @/ Z4 K! Q, G, A6 W5 A
  50.         e2prom_s_cmd arg;9 e1 D" a& o+ q$ c  S, M3 W
  51.         unsigned char buf[0x18];
    1 v8 c- |2 O4 \& F$ g
  52. 4 y- L: y" ]$ \* f1 }7 Z3 K
  53.         memcpy(buf, mac, 6);
    * ], A1 `/ |7 ^3 j
  54.         memcpy(&buf[6], stbid, 18);
    ) Y' L6 b1 ], K2 e5 F2 l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " u, G2 [3 [$ n0 R9 s. J8 W
  56.         if (fd  < 0) {
    4 Z3 _: w2 O+ i+ U8 ^5 H
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * L9 b( a" E8 A0 h
  58.                 return -1;6 |. N. ]8 h7 c' `" ~/ p# j/ s
  59.         }) C' X% `( F* v1 c, S
  60.         arg.sub_addr_count      = 2;% y. d6 G' V( W0 B5 _  }0 S
  61.         arg.data_count          = 0x18;
    & t3 ?* P  h# }. [" Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 g5 Y% l9 o7 \" p  b& Z  K
  63.         arg.e2prom_cmd_data     = buf;
    9 B2 b2 h- u+ |4 i- X! @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 G+ X8 j2 V$ [- D- o
  65.         if (ret != 0) {
    ( m' p2 j% I3 c+ E  y! \3 P
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);" n, {3 X. ?1 |  s. x- P
  67.                 return -1;
    ! d! N  H4 N7 ~2 e: X" Y- x4 \1 e# Z
  68.         }
    , N8 C7 X: k6 J' P; u1 t. J' E% S

  69. % f# D) u/ J  b% l3 ]" a2 y( U  q
  70.         return 0;
    / ~6 b. K( E7 C0 H" h/ b: E( q$ {
  71. }9 l3 v5 M5 v. ]& s, w9 d

  72. / ], f) F, F7 a5 j: v) P  g
  73. int main()- H+ |1 j5 M: T* b
  74. {
    / x  Z# a4 V$ e2 q2 \, X' V0 Q
  75.         char c;& ^1 h# u' c; [2 u7 b0 e" H2 U
  76.         int i, macs[6];9 j. J7 ^0 Y5 T
  77.         unsigned char mac[6];9 s* Z  f$ G8 p2 K3 s3 U1 D$ G
  78.         unsigned char stbid[256];/ n$ w1 }5 j0 d8 x  e7 u. z
  79. % j; R' ]$ N$ S" D, E
  80.         if (readparam(mac, stbid) < 0)
    ) C) E, Z  z# P: ?, \% ]0 W/ p
  81.                 return 1;3 I8 U3 F4 i( a/ ~
  82. 6 S6 ~9 m4 c  C
  83.         printf("Current parameters: \n");% A7 k  D8 d# r! }9 R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 h# D& [: M  I+ P2 N, l
  85.         printf("  STBID: %s\n", stbid);
    / v# D( J2 X) |' `: R, S' M
  86.         ! t# ~" ]. X) I2 |/ l8 {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 d5 y1 y5 ?: I+ O  Y6 @8 N
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! z- y5 B; U. g9 c
  89.                 printf("Input MAC error\n");* n; V8 p! p# N) g: ]+ z
  90.                 return 1;
    ! W$ J: m$ _5 r4 w! N
  91.         }1 T) q3 j0 k: c" Q2 Z1 h! r0 s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( K- O+ Z5 q5 ^* Z
  93.         printf("\nPlease input new STBID: ");2 Z1 h! p9 z' J6 Q2 P
  94.         scanf("%s", stbid);  Y7 U# E; O$ E" F) k/ F" I
  95.         if (strlen(stbid) != 18) {9 J/ I' }/ S6 L( g& U% ?0 A
  96.                 printf("Invalid stbid\n");
    8 H2 V1 {$ B: b9 |; G
  97.                 return 1;
    5 c9 a; M, T, C  u, Q# n
  98.         }( M9 S" K$ V6 T- Y( R
  99.         printf("\nNew parameters: \n");
    , p- S. ?. j+ i4 N' @& u6 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! S+ \/ b0 p. t& x! C; K8 N
  101.         printf("  STBID: %s\n", stbid);+ V! g, N0 Q/ G1 v3 f
  102. # n" w- [$ k7 ~9 K  y* U: o! ]/ b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 f/ ~/ t& `  B$ S
  104.         for (;;) {9 s" c' e, Q* n) a
  105.                 c = getchar();- b7 a3 _5 o5 u$ f6 F
  106.                 if (c == 'y' || c == 'Y')
    8 Y# [6 p: L& ?2 `7 ?+ G% K
  107.                         break;
    9 b( H/ o9 y4 N; b! I: e. F
  108.                 if (c == 'n' || c == 'N') {
    3 T. k, x6 V) G4 Y: M- F6 N
  109.                         printf("\nAborted.\n");
    6 y, M. @1 f6 C5 L1 U9 }
  110.                         return 1;0 j( B: |. q( u* X
  111.                 }, Q- j5 u0 [3 J
  112.         }1 l' l3 w! B; M) s
  113.         if (writeparam(mac, stbid) == 0) 1 ?7 ^) W5 F6 ?' l
  114.                 printf("Parameters changed.\n");9 v7 E+ M+ N, b/ L& S* J
  115. ! `+ f% M0 L% K6 H. {1 ~' ?
  116.         return 0;; w; y7 ?0 W  c$ v  }
  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
6 |. p, H3 p, t) h; ?' k( {8 ?& }1 t7 h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
" [! W- G7 C, |8 S" ^) @8 y5 z* C
你用的编译命令行格式是什么?7 ~) {3 g  F- U3 I3 W, g. i/ z& R
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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