查看: 17775|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr  y0 `4 \+ Y: L9 U  V+ ?% u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 K: Z; v4 c9 P) {4 T/ f( \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 l3 F" O) L  M9 I3 y8 E/ v
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) A# a; F* v3 k1 |/ G+ d% Q0 Y7 c4 a5 c1 C

( A: r) t( q3 V- d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* ]0 n: H5 b1 n5 I$ d# G9 X8 M# }- L5 C% {) N8 x! k9 ^1 v3 L
补充内容 (2012-3-8 09:42):: G* Q' f0 o- `+ p- U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
& Z3 p  @( r) x6 Q! E0 G: g这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
. b8 O1 B2 Y$ i) X0 e9 I* a: o9 M; }  j+ F7 G) d
himr <address> <value>. sample: himr 0x80040000 0x05 M. q. ?% Z4 A9 E1 `5 S! {

' j2 e; F5 f, f/ r& k; ?$ t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  S0 {4 M' L; f% L0 w
himr 0x80040000 0x00
" r8 y6 _& L  u0 }( E' yhimr 0x80040001 0x11* A  v* Z4 K# C6 E  n
himr 0x80040002 0x22
. d4 O" p* b- F2 I6 Lhimr 0x80040003 0x33" a! J' X2 p' l( B8 v6 s
himr 0x80040004 0x44
. c  X5 K7 v+ j- N/ Vhimr 0x80040005 0x55
/ e, l& d3 L" w8 |2 g! H* j
0 K; q" o9 x$ \/ D9 A+ b2 C9 {2 rSN也是类似。3 n$ [; [7 I, X( m4 S+ i2 V& b
3 o7 |5 {( P# l. f' q" ^7 ^+ W9 k
现在主要是,谁告诉我们MAC和SN的地址?# H! T* g6 \3 c8 F9 I
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' U. Y) k$ h4 W& k* Y
一直想找到运程修改MAC和SN的办法,苦于无解啊
3 _' G+ j; C+ h
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; |9 a$ \0 _+ ?$ X6 O7 G$ e. `) x1 t/ y) `$ ^' g! k- [
修改的代码早有了。到今天不会编译。
$ r' h5 J' v0 @9 E' C" u# Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) T0 S/ l5 Z* F1 e
  2. #include <malloc.h>
    6 u* T3 Q4 G  I
  3. #include <sys/types.h>
    4 B) [) h" ^: }
  4. #include <sys/stat.h>- X7 Q5 H( s/ P8 w
  5. #include <sys/ioctl.h>% ?$ m3 e0 A# ^. }- Y, h
  6. #include <stdio.h>
    " f& [% _# [$ H' S! d
  7. #include <string.h>" ^+ z/ V% E" B4 ~4 X- E9 z0 @6 {
  8. + f+ J% p0 ^( D4 p
  9. typedef struct {
    ' `1 E4 ~- V" n5 I1 b2 C
  10.         unsigned int        e2prom_cmd_sub_addr;
    " w& m( b1 r  F7 Y5 W. a9 l
  11.         unsigned int        sub_addr_count;
    0 j- e" }' [) L0 ~+ ?$ ]
  12.         unsigned char*        e2prom_cmd_data;
    $ C; e1 l. M3 T6 P9 \0 B4 h9 L5 R. d8 c
  13.         unsigned int        data_count;
    % c$ f& D* V! I' Y6 y" L
  14. } e2prom_s_cmd;4 P7 p2 ~# _8 m% A% I6 f

  15. 6 n. e! k1 G& F& b1 Q# [6 G! j$ |+ \
  16. #define E2PROM_CMD_READ 1+ e5 `5 a% g3 A
  17. #define E2PROM_CMD_WRITE 2/ D5 n, b. {" |8 {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * U9 |3 L& ]5 r, ^8 h) B

  19. ( i: r& n1 v* S# D( O
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 _4 u/ p* d% q0 ~
  21. {
    ) Y1 U5 H4 V/ _% D
  22.         int fd, ret;7 o9 n' T" q' f
  23.         e2prom_s_cmd arg;
    : [5 N5 @+ N& {% r. J4 ]* }$ O
  24.         unsigned char buf[0x18];8 D# t- Y2 {6 |5 V
  25. 9 S- Y3 C/ k- r/ y" m# Q  v- q8 Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    + s$ G2 F7 t6 t. Z& t4 _# f1 n+ w
  27.         if (fd  < 0) {
    - K9 P8 `* D- _' [# ~, ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% H1 g2 F) Y+ E0 J$ q% B
  29.                 return -1;1 n- c7 E3 n% m& q& F) g2 _8 S
  30.         }7 n% c" f& U/ H  X9 y1 B
  31.         arg.sub_addr_count      = 2;
    8 L( \! O9 O3 X, R9 }
  32.         arg.data_count          = 0x18;0 D6 j9 u$ u; Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;' o, Y; r: M( @3 u9 L% X6 t5 H
  34.         arg.e2prom_cmd_data     = buf;
      M! v$ L, Q  g  D- w. I
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    * Z2 D; `5 E7 K2 J6 g
  36.         if (ret != 0) {
      O  R0 {' V7 D( _+ [4 y# `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) y5 k' }; W3 @1 z
  38.                 return -1;
    * h) \% W1 o4 U6 i4 u" I
  39.         }
      b; I) O  p6 v& @: T& @, T
  40.         memcpy(mac, buf, 6);1 E8 Y+ _, Q: H7 R$ E# B, u) }
  41.         memcpy(stbid, &buf[6], 18);/ w; l  G% e6 a( k
  42.         stbid[18] = '\0';& b9 t8 G+ J; k* t: |

  43. 4 G1 s0 S$ y. {4 A- D' O6 Z0 C
  44.         return 0;
    ' S! E( l" o3 u  j1 Y/ H
  45. }7 T# z2 l4 h; P& f/ W: R# Z

  46. ! N0 _9 G! P# F/ P
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - ~) g8 A: ?0 F
  48. {
    ) f4 @4 r4 b& H1 B# @; G
  49.         int fd, ret;# T" m0 Z, u, e% b' X) H' T
  50.         e2prom_s_cmd arg;
    ( m2 x$ o& y  O, t* @" D* f- E3 o
  51.         unsigned char buf[0x18];
    & w" E' R" `3 C- D/ {& Y( V

  52. " S- W+ F6 l1 V. w
  53.         memcpy(buf, mac, 6);2 e. L$ W( n1 d& b1 V! r
  54.         memcpy(&buf[6], stbid, 18);
    ' f6 J* L, M5 f  E7 X2 Y* P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( N6 ?" n. n9 U* `/ i( Y+ p0 F
  56.         if (fd  < 0) {2 T$ ?# k3 ^* n; ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);& C9 W$ P& \( N
  58.                 return -1;5 g% i3 s5 f' k' V- q3 M
  59.         }
      s9 x! w! X. a6 L6 _- L$ m
  60.         arg.sub_addr_count      = 2;1 Q0 {5 v3 g$ `; q0 K  W6 ?) k
  61.         arg.data_count          = 0x18;8 M+ d: N% k. ?+ Z( {- G
  62.         arg.e2prom_cmd_sub_addr = 0x290;: T4 d8 m) J8 ^6 k! N6 P" H
  63.         arg.e2prom_cmd_data     = buf;' F$ ]% {7 W: C! p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 j& Q# _- K( B, @
  65.         if (ret != 0) {
    + a& h8 {% F( Y8 V4 K6 _
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);( ^$ i* J' N1 T( @2 G0 D
  67.                 return -1;! b( N2 A, E1 \
  68.         }
    9 X* D/ P1 i2 H0 s% }1 b$ S, J8 t

  69. 4 `# U  T$ f" v7 w
  70.         return 0;
    & Y6 Q# c  e+ _+ \
  71. }
    + {" w. Y- G  `

  72. : s0 e% M3 y( G& L9 ^7 N+ Y
  73. int main()/ j4 Y* J5 ?" w  c7 j. l1 f
  74. {' S* P4 K7 C7 ^
  75.         char c;9 z  e6 P" ~& I' l) P
  76.         int i, macs[6];
    3 e6 h/ m' p% |& p3 I$ x/ o) A
  77.         unsigned char mac[6];/ w9 E, T: u% U2 Z9 S1 S! u
  78.         unsigned char stbid[256];
    # i$ o% `3 U% d8 l: d
  79. ! ^9 D: F+ h4 L4 R% u0 K1 O; B' M
  80.         if (readparam(mac, stbid) < 0)
    5 Z$ d* z4 c# L: U0 n
  81.                 return 1;! x- Y  a- t0 R- E" m" [
  82. 6 C) s& v# C: i% B, ]
  83.         printf("Current parameters: \n");
    4 d  q( Q% E7 Z: q4 `: R" L/ r% O
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);( H% ~- y9 p1 f: A' Y: I, A4 h
  85.         printf("  STBID: %s\n", stbid);
    , F2 X8 V& y1 z" {. Y  w  P' a. P
  86.        
    , C  s- f9 [/ Q) P$ d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 ]5 o; D* X* F% g9 l2 X% g7 h7 W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    3 P" [, y- }  x, K6 s
  89.                 printf("Input MAC error\n");
    1 Y/ n" x- Z: K, i
  90.                 return 1;
    , G+ f# A0 }: U
  91.         }+ D: I# j& \0 s& y
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    $ _. _5 y# h( y+ o# }
  93.         printf("\nPlease input new STBID: ");
    9 d/ e$ D: n& [
  94.         scanf("%s", stbid);
    : J: a3 V; ^5 a9 `) V% j( [* o: O
  95.         if (strlen(stbid) != 18) {( m" y5 S8 V& ^0 R
  96.                 printf("Invalid stbid\n");4 V! i0 n' T$ x1 E, p$ y5 V
  97.                 return 1;1 [7 O+ }6 @$ ?" w4 G
  98.         }1 [2 `$ y5 ], E
  99.         printf("\nNew parameters: \n");
    . w/ n- I( J/ v2 Y7 A9 y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + [& g. t6 J- P4 K6 j; e. \
  101.         printf("  STBID: %s\n", stbid);
    ; Z/ ^2 `$ j. e" h

  102. 9 t* s) X! Y, {& H4 G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    $ `1 z5 g# c- F- f; _
  104.         for (;;) {
    ! _  o% ^, e% h0 j- q5 {
  105.                 c = getchar();$ B: V+ a) c0 [
  106.                 if (c == 'y' || c == 'Y')
    9 [: j3 R) w9 f7 z
  107.                         break;4 J: `- Y2 p2 N; w& n4 x. a- R
  108.                 if (c == 'n' || c == 'N') {( c1 t! b- z' c) T3 u0 k
  109.                         printf("\nAborted.\n");3 U/ B7 s5 C, E/ o% X
  110.                         return 1;
    6 A$ P1 x, A, a* i
  111.                 }1 z4 c7 {6 }4 V! Q; P& u' W3 x2 o' T1 e- y
  112.         }
    ; O, q4 [$ I7 D8 N
  113.         if (writeparam(mac, stbid) == 0)
    & S3 ^. b9 A. ^9 B5 n" \
  114.                 printf("Parameters changed.\n");, q3 a; C. d( i# y/ |! w# L
  115. # D. i, |6 T: c) s9 P7 ]" u
  116.         return 0;
    # H$ Z" T" f3 M) D* x/ [9 \" 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
' r4 M7 f2 d) f8 z# ~在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
  W6 k9 s8 M6 _' O" r! w
你用的编译命令行格式是什么?
: H" n4 N9 @; J* Z' N
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部