查看: 16549|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  z) z2 [* T  z8 |9 B
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 y( W' m* B6 f1 Z
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ s. q: E' r$ y- z8 l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
. ~, R6 r( {6 R; Q! |3 ~* p, T' a1 C" @! ~

! B. b( ^( q/ N+ c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, c. I+ g! j  G' g
( W( q4 q* m) |$ J, K4 Y
补充内容 (2012-3-8 09:42):
7 M* n: F4 ^: E4 D: bhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- b3 a  x- o$ m; s2 d9 V
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 ]/ ]! C. ?. E  E* e

$ {) w" Q, R+ ^, K6 ~" }himr <address> <value>. sample: himr 0x80040000 0x0
% v3 Q  i# I7 d; ~7 Q8 X- ^4 E
% U  b3 [' ~! M; y( ~/ R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* K+ J4 `* ]/ f2 i( S; u- g7 p, t' p6 Ihimr 0x80040000 0x00* ?1 z! |9 v# v2 p, K3 z% ]
himr 0x80040001 0x11
7 \- I( u8 X7 n$ L0 t2 [himr 0x80040002 0x227 v: s  g+ q  Q7 C! J, ^/ t
himr 0x80040003 0x33
! O) u7 k  B* i1 ]- h& Ahimr 0x80040004 0x441 @1 N& t1 V7 j& q$ _
himr 0x80040005 0x55
0 y  {$ Y2 l" m8 o# F/ {' T3 h) x3 \, b7 J, v7 C) ^# w
SN也是类似。
5 l0 j& x9 m" ^1 D
1 I" @/ N0 h' P2 ~8 e, }现在主要是,谁告诉我们MAC和SN的地址?
! Q3 L4 ^# f% v" @2 b$ Z2 |) _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ L+ d: B, @, `8 D一直想找到运程修改MAC和SN的办法,苦于无解啊

' l; c% Q7 H4 f, k  u" u8 K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + @& W1 s' u, E' }9 A9 y6 A7 y

: E- h! G" a, h# P修改的代码早有了。到今天不会编译。
. M% m" K& u9 A' ~9 I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( z- j( |7 F! s- ]
  2. #include <malloc.h>! Q& ^2 a, m  e2 [; z8 f; t6 P) v
  3. #include <sys/types.h>$ R* i  z5 V& y$ P
  4. #include <sys/stat.h>8 b4 h' f+ n6 c& Z! R; E
  5. #include <sys/ioctl.h>
    5 p0 ~, P1 x6 Q6 m
  6. #include <stdio.h>
    ) p% {& s" o9 s+ J
  7. #include <string.h>
    . p% d) m: _1 v- m+ I: L4 A

  8. & L" Z. g; k2 r1 ~, m: x
  9. typedef struct {- d0 l" p. `5 a0 X* r
  10.         unsigned int        e2prom_cmd_sub_addr;5 v' r; E1 Z" y; H) y
  11.         unsigned int        sub_addr_count;
    : @2 e0 X2 u% H- c
  12.         unsigned char*        e2prom_cmd_data;
    , A: T/ E( h$ b" e) v2 Z
  13.         unsigned int        data_count;- `; S) y/ E* j( u8 E, w
  14. } e2prom_s_cmd;
    4 a1 m' D( R2 Y& O1 h5 g7 W- Q6 M
  15. . G; T( }8 Q: N  m4 p% d9 w
  16. #define E2PROM_CMD_READ 15 z5 ^2 T/ b+ r
  17. #define E2PROM_CMD_WRITE 2
    " {, D' O% V  w4 @
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 Y# Q& Z2 C6 o

  19. 4 _- z- H" U1 h( L( B/ K1 v; F, {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; b% ]& |1 g# }" U0 s, I. V
  21. {  q  p5 A: s+ \% X( r& E
  22.         int fd, ret;7 G; L1 k% q1 W  g6 }4 e7 G
  23.         e2prom_s_cmd arg;3 p4 I" q- `8 |% T
  24.         unsigned char buf[0x18];, P6 V7 x  H' a! i- y$ B
  25. + R( X$ G2 x/ N5 \) G" e6 i4 p, p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * I8 e6 ?' e8 o5 i
  27.         if (fd  < 0) {
    # h$ W$ m4 I8 j9 T$ R# T2 z' S2 y' e* f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 B; i1 a& _4 N1 J* a& J. t
  29.                 return -1;
    , i$ N# D8 H: m& D/ i
  30.         }/ [" k, v) m5 m+ @) O
  31.         arg.sub_addr_count      = 2;
    2 f, r  ^' k7 X! v
  32.         arg.data_count          = 0x18;) a: q9 Z5 h0 Y& Z. @- y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & C" E( h6 K, i, r( y9 i
  34.         arg.e2prom_cmd_data     = buf;; Q. M2 `/ G3 |. P9 Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 i5 q0 S8 H& q+ C9 E
  36.         if (ret != 0) {2 u2 B( g0 X9 X$ C( e. V- n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ; P0 ?3 i5 G( }/ N' g
  38.                 return -1;* V! T8 P: ]# G+ \+ H# M( V1 B2 g9 U+ j
  39.         }
    3 M: v( F3 r% N: ]
  40.         memcpy(mac, buf, 6);# V8 L. W& m* f1 m0 X* j5 v
  41.         memcpy(stbid, &buf[6], 18);& q5 X. t3 q% p5 r; m
  42.         stbid[18] = '\0';
    $ y4 Y& q8 L# p# h. v" p3 Z# F

  43. 1 Y3 i7 n7 A, _; F, p
  44.         return 0;1 f. |+ y9 S) i1 N( D! q2 \
  45. }$ }7 y7 ]# ~6 U& \" B
  46. * G0 M; O) X0 C9 ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    3 ]: X# m, J, j
  48. {
    ) F* y- P$ F& F5 G$ z
  49.         int fd, ret;0 f; [7 [. A; g7 q+ I& W
  50.         e2prom_s_cmd arg;3 i; F: I! y/ L8 m4 i, |
  51.         unsigned char buf[0x18];
    * U2 d# C; I3 X$ ]
  52. ! O5 j- ^4 u* D* y5 |9 r  J
  53.         memcpy(buf, mac, 6);
    ) K, v* n! S" e3 s. U
  54.         memcpy(&buf[6], stbid, 18);7 z. b7 O' H& d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      o& c/ U' O" i6 }9 P7 @
  56.         if (fd  < 0) {
    % ~3 B, x, B8 x+ w7 q; S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 c( t0 S4 h. T# ]' M, S2 ~6 p
  58.                 return -1;
    1 Q# H3 D2 f" F  Z: y
  59.         }
    . O# C, \  p% m+ I5 B' l0 c
  60.         arg.sub_addr_count      = 2;
      h1 s+ J, I/ G" O, b
  61.         arg.data_count          = 0x18;
    ) O3 i5 @7 k7 h& P
  62.         arg.e2prom_cmd_sub_addr = 0x290;" I& s4 z* T2 Y( W& @1 @" N
  63.         arg.e2prom_cmd_data     = buf;+ w, K3 A2 i8 t0 S7 T0 [4 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    - t( c% c. c4 W2 k2 W& a
  65.         if (ret != 0) {
    / A0 L0 E1 q& P5 Z0 l! z3 e, q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * W: _0 M1 G5 V3 p% Q0 f+ W- I4 Y6 `
  67.                 return -1;6 l. F+ \5 B! y! w$ k
  68.         }, n9 c4 h/ w  ^+ t1 x
  69. : [' \. y) ~3 c2 o# f9 Y. ?
  70.         return 0;  ]) n# c7 z, z) e  K+ d0 E7 z) b
  71. }# p. B9 O$ @/ {( D

  72. 9 s  e% Y- D' S3 |3 I
  73. int main()
    2 x3 E9 x. h- _( i0 j' R8 Z
  74. {' |: O4 z/ b: s* A
  75.         char c;2 {0 ?7 ~/ Y' p) m, y+ Z
  76.         int i, macs[6];+ Y: y9 o4 D% a$ y: T/ k4 t
  77.         unsigned char mac[6];
    % d0 d; g, F" c- H' u
  78.         unsigned char stbid[256];% p8 Y6 v* [9 c0 S
  79. 6 n- e. T' t: C! ]# o
  80.         if (readparam(mac, stbid) < 0)) w; ~" `$ p9 w: U+ y
  81.                 return 1;
    - L9 r( o% Y* ^0 S" z% s: i7 n

  82. 3 X9 A& C  s6 G+ \
  83.         printf("Current parameters: \n");
    7 j: V* P2 L- H. M- ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. ]/ @: a+ s" T! {/ I9 K
  85.         printf("  STBID: %s\n", stbid);& [6 [/ l6 E2 Q* W% M* L
  86.         ! c5 D' e8 t. q$ b2 R0 b! d; Q5 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% M$ ?' a! [0 ^2 X' E& _, m) g1 W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {% ^- F. v/ L1 @# p  B# q
  89.                 printf("Input MAC error\n");
    7 L9 Y# E5 R; h5 X5 t4 Z' ^
  90.                 return 1;
    + N8 m/ s' ]0 W8 ?& ~* z: T
  91.         }
    + ?  g: j3 ~& c8 g
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    / I7 a, |  @! m- w
  93.         printf("\nPlease input new STBID: ");% y' ^" h2 P4 p' |
  94.         scanf("%s", stbid);
    0 `5 k6 ^7 m3 j7 z- d8 ^
  95.         if (strlen(stbid) != 18) {2 W+ t5 f2 d; L' Y4 f) W
  96.                 printf("Invalid stbid\n");: B7 T& c. t  B, @
  97.                 return 1;+ G; y+ c- N0 ^
  98.         }
    " ]$ P& V  E6 M" ?2 s
  99.         printf("\nNew parameters: \n");
    0 z# v& E% [2 @; I# ]: Z% m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      h0 j! _: w3 I! V5 m& D
  101.         printf("  STBID: %s\n", stbid);
    8 U) l) i) C& a2 S+ ?( D# [
  102. 9 Q! y+ P) b/ y; v& {3 |% u
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    + a* \+ y. W9 p) o6 c- Q
  104.         for (;;) {8 S7 A9 ~3 q# _
  105.                 c = getchar();/ F3 C; x1 C2 g' f
  106.                 if (c == 'y' || c == 'Y')
    ! ^9 k1 m8 {( ?. @: k
  107.                         break;* `! o- K) r6 M' J, \
  108.                 if (c == 'n' || c == 'N') {) I! i* ]) m' B$ s
  109.                         printf("\nAborted.\n");
    ) A  e- x$ K, I
  110.                         return 1;
    6 d0 [! f# x4 ~% d# [6 z; P& s. X
  111.                 }/ H: Z) H; x) g
  112.         }; p! K4 R6 L. M$ J7 l
  113.         if (writeparam(mac, stbid) == 0) / }1 X9 t# x, l% r
  114.                 printf("Parameters changed.\n");  Y' ~7 h: R( j1 h( T8 V

  115. 2 k% @% r) z+ V5 H( S
  116.         return 0;
    6 t0 x* U. e! F8 Z
  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 8 A* N! H+ X% H. f+ P( b" E0 l4 s
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 d  Z& D" n( N* L; B1 \/ [& q* s
你用的编译命令行格式是什么?
' ]1 Y" T, g1 E7 }5 h' Y0 I* L! A1 I, ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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