查看: 16599|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  `2 W. y1 Y/ ?5 R  L  k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    % {$ B( s6 K1 j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ j) M+ A: d$ A8 ]  A+ }( ^
usage: himr <address> <value>. sample: himr 0x80040000 0x0
& `6 G$ K2 w+ G+ N8 N, @: a# J2 R+ n( k0 v5 \# m; }8 K. d* a

/ L! Y* C3 [* [0 e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
& n. J. h; s  Y: j) z8 y6 s
2 c! f! W3 s( i! C6 n3 a5 v补充内容 (2012-3-8 09:42):
+ n7 j; K# `8 M( H) Ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
3 s+ g& L3 J. y, P这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
+ e' y6 m) F9 `; s/ a
  A7 f" ~! ~) x9 @1 P4 n$ R9 `: B  Zhimr <address> <value>. sample: himr 0x80040000 0x0% a4 u$ f" Y" q+ @6 n- ~7 ]
9 F4 \& H. i8 Q" D
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
3 l& }4 _7 q  I6 U- f, ahimr 0x80040000 0x00
$ W+ j/ l8 W5 A' H7 Nhimr 0x80040001 0x11
) Y: t# `! K: Q2 F2 O, n2 {1 ^4 dhimr 0x80040002 0x22
: G& L$ s0 [; i5 Y+ zhimr 0x80040003 0x33; M! S, ]/ i2 @. A' e2 A% ~
himr 0x80040004 0x44
$ M+ x, N8 B$ |' A0 _himr 0x80040005 0x55* \2 w, ^) N# [% [. @  L. Q
+ k; B, F7 E+ _! Q
SN也是类似。
8 v( f9 h0 _/ R% c" Y) O' z$ x+ f  }9 X0 T$ R
现在主要是,谁告诉我们MAC和SN的地址?! G) y0 O0 l$ i% G  Z3 |
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
% w5 p. \) j; v& ?* X* E; e* O' Y一直想找到运程修改MAC和SN的办法,苦于无解啊
/ P: t4 p" ?* A% }9 F
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
5 T; d; z" b5 P8 v9 [4 v$ C" v* Y& n2 a& B* v" S
修改的代码早有了。到今天不会编译。
# q" A  r+ K& r  m# W9 A% W3 j6 l& u需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>% D+ e- P' g3 n3 m1 m
  2. #include <malloc.h>
    6 ]7 o: @$ D( Y& n1 ^' _* K
  3. #include <sys/types.h>- z: a5 u% r4 x$ c
  4. #include <sys/stat.h>" o* _' G" [0 D: F/ H! y
  5. #include <sys/ioctl.h>
    * ~4 N+ I& y. ]& C8 S
  6. #include <stdio.h>
    7 e0 p- _) d/ j  [$ e
  7. #include <string.h>1 u* H( K7 ?, j3 M

  8. 3 C0 k" N% w  m% U; p; Y
  9. typedef struct {% k4 n1 @' p. W6 ~' s
  10.         unsigned int        e2prom_cmd_sub_addr;' x7 z& F# q+ K( l5 ?5 H
  11.         unsigned int        sub_addr_count;
    ' j# h+ r# J+ X# P
  12.         unsigned char*        e2prom_cmd_data;3 v( _+ ^6 S* N8 R
  13.         unsigned int        data_count;; F5 U9 V% g3 r4 _0 I. l  L7 S8 I
  14. } e2prom_s_cmd;4 K0 W- y: u+ @4 d6 a1 `. L

  15. ( i8 x! Z. @+ O) c) n
  16. #define E2PROM_CMD_READ 1, K! L4 [9 v8 \9 z3 y* q: p" j
  17. #define E2PROM_CMD_WRITE 2) ^, [/ b! ~- q' ^- Z: B% _7 f% s
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 S% w2 Y/ f3 A" S
  19. 9 u! M9 o- _- a* ~5 i' I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) ]( a% d# }2 m% Z" w
  21. {, m$ M  S& R/ T
  22.         int fd, ret;+ ?0 u8 y+ {% _4 e, g
  23.         e2prom_s_cmd arg;0 A' a) D' q5 t
  24.         unsigned char buf[0x18];; E$ w2 t0 ?6 `$ g" R0 ]: J

  25.   ~( Z, L+ I, ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);9 k' ]6 O1 g2 c: s- F' Y3 u1 C
  27.         if (fd  < 0) {
    ( ]9 h4 `* Y* V% ~& ]% h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! o5 B3 i' N* c  \9 f
  29.                 return -1;
    & P; k3 H, U  J
  30.         }) W6 y. X2 r3 B/ ?! o$ d$ a3 Y
  31.         arg.sub_addr_count      = 2;
    9 ~& Y" a2 d" ?- o
  32.         arg.data_count          = 0x18;/ n/ H8 U' J; Z$ K6 S2 Q- E7 }2 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;% b: x2 s/ V0 S$ |# Z" f1 Z
  34.         arg.e2prom_cmd_data     = buf;, e3 u  U! y$ s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 T7 U6 @# J  o
  36.         if (ret != 0) {
      P" h8 G* E' D( _1 Q$ V# R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ I3 L# Y5 c' @3 Z6 t; X
  38.                 return -1;1 c5 g+ e3 W4 Q0 h+ v- I6 y
  39.         }
    * J- v) X2 X, @) L6 i! E
  40.         memcpy(mac, buf, 6);
    6 n1 N: x1 A. [. F' s' K0 G5 r
  41.         memcpy(stbid, &buf[6], 18);) ~. Z: }2 T; i' x0 F, u# {
  42.         stbid[18] = '\0';5 q/ _& ?7 v( t9 D* \- M! K
  43. 3 z+ V0 @9 h* i6 ^
  44.         return 0;( C' y) n0 \& v8 {. R
  45. }, \7 a6 i3 A9 b. e+ U
  46. 4 A8 J0 s* u5 q# }  v3 p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : k/ S1 z( \8 X0 w; B; |. L; n
  48. {. S+ `8 Z  o" L  Z6 D
  49.         int fd, ret;2 q+ y/ p- w3 [* B$ s4 x
  50.         e2prom_s_cmd arg;
    ' k' f7 N$ r3 b
  51.         unsigned char buf[0x18];: h/ g( l7 }% y% y

  52. 2 U# _' Y$ ~. r
  53.         memcpy(buf, mac, 6);
    # D  ]& [  t+ N& {
  54.         memcpy(&buf[6], stbid, 18);
    2 `$ v7 r& b+ ^. d; }( S, _9 o2 B+ [- q5 _
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 t- R* Y( M8 M5 @8 b+ P! `+ G4 K
  56.         if (fd  < 0) {9 d& C5 j$ @8 U* D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 [# j9 U9 i( |5 B0 }
  58.                 return -1;
    . r7 F, X8 `" ~5 @' V
  59.         }% `* p+ I; h% r. W
  60.         arg.sub_addr_count      = 2;8 [7 C2 S. W1 W' t9 x7 k
  61.         arg.data_count          = 0x18;$ U* ]7 t$ f9 {/ T$ a8 `
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 ?7 W4 G+ B! n) {& i
  63.         arg.e2prom_cmd_data     = buf;) l# [4 J2 E! ?. P
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! K& ^7 ^+ b# {% x- ]& _" S
  65.         if (ret != 0) {/ z8 {) o) M4 `- s: A% N# k/ U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! a5 y* c0 O7 j5 M+ K0 E" n: }
  67.                 return -1;! a9 s* U. D# v# o$ L
  68.         }
    - X) H, ]/ B, [2 Q$ O7 ~* S  c

  69. $ M7 t4 v" w6 w- }( N* C  j
  70.         return 0;: k& k4 z, f1 H
  71. }9 x2 b7 c! I# M; E5 {0 M
  72. 5 e0 p* Z+ n! V- R# w5 |+ b
  73. int main()
    " C+ a0 E" q4 L. I4 k
  74. {" }6 I4 w, t7 G. w8 N
  75.         char c;
    ) a- j1 H: X7 m7 e# G! F
  76.         int i, macs[6];
    $ |6 }8 X1 H2 j' e+ }  s! ]! r; y
  77.         unsigned char mac[6];
    ) @$ q4 b3 C/ |8 w6 i" v( U
  78.         unsigned char stbid[256];: R1 i' D) t/ k/ p  `3 D+ g/ b  H
  79. , @; b6 d' h- D
  80.         if (readparam(mac, stbid) < 0)- ~0 d: ^( h: f
  81.                 return 1;
    1 D: ]' i; \  k: S9 V) k
  82. ) N5 `$ e+ s$ U, D* w; W6 [% J
  83.         printf("Current parameters: \n");
    - k. ^$ A: m$ i* Z5 x' u9 k9 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 j; D/ y8 `+ r8 |" x# @# ^; }
  85.         printf("  STBID: %s\n", stbid);( t& M& \, u/ @8 s, [3 n
  86.        
    2 w3 @9 O0 j8 y. g& o  g& D% e: c  ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( y) I- F( L+ B# P$ U
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* q% _8 v* A$ }2 C+ b
  89.                 printf("Input MAC error\n");0 t! @7 d; u2 _4 N9 Q5 K
  90.                 return 1;
    , d2 X$ d! b# J
  91.         }
    & q/ t9 o8 t, K' S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * R! {7 ]' f/ Q* V! S
  93.         printf("\nPlease input new STBID: ");
    6 S, }# x5 l" H
  94.         scanf("%s", stbid);$ g* E6 B7 O$ C% @
  95.         if (strlen(stbid) != 18) {! \6 A- H' @! f2 Y( `6 D
  96.                 printf("Invalid stbid\n");, y8 v$ {4 _; V/ q) S0 @/ C
  97.                 return 1;5 Q2 a5 c1 u! ^6 B% h) Y! |
  98.         }
    6 T3 m  F. w, M  M$ a" i0 @
  99.         printf("\nNew parameters: \n");
    6 V" K! E. g" m
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 ?8 ^+ Q: }1 j' V! b( b& I% i+ g# m6 ~) j
  101.         printf("  STBID: %s\n", stbid);9 _; Y; Q0 i2 _  m5 y& w& L
  102. 1 }: J, ]% n/ ~2 ~7 R2 [; Z+ E0 v
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ X) t$ [* X/ N5 G# d4 e- a
  104.         for (;;) {# H/ q9 m% M( X, F8 a) Y
  105.                 c = getchar();' ^; `' T+ \0 D& I8 o( }, p% |
  106.                 if (c == 'y' || c == 'Y')8 {$ L; n: E" s1 l# Z
  107.                         break;4 X3 U# i; z- w) J4 w
  108.                 if (c == 'n' || c == 'N') {
    % C3 h: L+ O5 B0 h5 b- _, [& D
  109.                         printf("\nAborted.\n");5 [' s+ L* N) n: y
  110.                         return 1;: }/ Z2 C. r' a) z" X. m6 J5 a( D
  111.                 }. F3 I" o5 m; g, M7 ~) y
  112.         }) {! V6 w+ m. |5 Z. N% j
  113.         if (writeparam(mac, stbid) == 0)
    : P! ?' t1 ^  w! y
  114.                 printf("Parameters changed.\n");' A/ g4 E( B* B2 x, {

  115. " r: L' Y& Y: a+ v
  116.         return 0;* L1 t; r3 A. z: r5 [' R
  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
( C& C& X" U- s0 ~% ?在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 o, A$ A! F1 v# a& v
你用的编译命令行格式是什么?
) S/ I+ v6 Q2 U4 S, i9 T  P
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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