查看: 15947|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % M5 r* g) Y) k# J/ D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 \- p- |4 [4 _8 f9 K1 g: @8 a' c
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
5 a" p9 P( ^7 E: eusage: himr <address> <value>. sample: himr 0x80040000 0x0
# Y/ N8 n1 W3 _) u" V9 O' u7 B
3 W$ }; L* T8 f, |6 T8 N, i# [9 W  Q( x7 t# B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?; |1 N; }& S/ e% S, I' q# L
2 g  X, Y7 ?; k5 x3 n
补充内容 (2012-3-8 09:42):
$ w4 \; p1 l( z0 @( nhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 Z  n3 l5 a2 s2 \这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# j4 K: @- u2 U* b
. h# e( P7 J0 @5 Q' K/ W" Khimr <address> <value>. sample: himr 0x80040000 0x0+ U1 @3 n* I* l+ O9 G: E

8 B) m3 c# ?" H; c* w2 n1 E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 `3 u" m' r8 U  t1 I1 B6 p; p
himr 0x80040000 0x00
5 i7 k1 }% A& h5 v/ p# \himr 0x80040001 0x11
7 _2 k  z# c( [) A. i' Uhimr 0x80040002 0x22
$ J- b+ V" R! \7 V, [2 ?6 d) Uhimr 0x80040003 0x33! y/ G3 s( e" E5 G6 X6 G
himr 0x80040004 0x44
7 l% n/ a, P9 rhimr 0x80040005 0x553 f& l3 D8 }0 T$ u' X1 k9 w
. u; ^5 m# t- V! J, A. k! r
SN也是类似。
! c, }" C. g: N0 k: ^5 D/ H8 _. O
现在主要是,谁告诉我们MAC和SN的地址?- _7 G5 ?: O4 _; r9 |8 s$ r* t
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 J$ V# ]% n0 T: ?. y7 I9 p! g. n一直想找到运程修改MAC和SN的办法,苦于无解啊

  ?) `4 s5 u7 d) ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( |! m. ?- f  V! K
! Z1 Y2 D' a3 [修改的代码早有了。到今天不会编译。( _, M) I( W- F: p1 {" X' N7 K
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 w3 n/ b( o: }, M( D; Y) c( d
  2. #include <malloc.h>1 Q: u/ P6 m5 o2 @
  3. #include <sys/types.h>
    # D+ f6 P7 f! O; ~6 d' j
  4. #include <sys/stat.h>4 z2 F/ ~$ w) V7 A
  5. #include <sys/ioctl.h>
    % }/ G; @5 s2 }% ~/ l8 p
  6. #include <stdio.h>
    ' f1 ]! o( q5 E) b# p! q+ H
  7. #include <string.h>
    3 ]5 x1 }0 }! j3 l( S, d3 m0 k* ~+ ]

  8. 5 w4 O8 S( J1 f! U4 i9 [
  9. typedef struct {: g% z1 _# {; _7 V* ^$ @+ L
  10.         unsigned int        e2prom_cmd_sub_addr;1 R, m1 B5 d1 E. w9 S- O$ o
  11.         unsigned int        sub_addr_count;
    1 \1 B4 s. Y9 C7 N) N  i
  12.         unsigned char*        e2prom_cmd_data;, ~5 D  M$ e, k3 h/ d- k1 d& O$ G: b
  13.         unsigned int        data_count;
    1 x  J9 ?1 e4 U" J3 W+ p* v& V
  14. } e2prom_s_cmd;. i- _) g* L5 Y) ]1 `  @6 D
  15. 9 C5 m; ~8 L* j  L" B
  16. #define E2PROM_CMD_READ 1
    0 V4 @6 I& K0 y8 r2 U* L! s, T/ q
  17. #define E2PROM_CMD_WRITE 2
    $ u' w" Z6 q, P, c4 J( {$ P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    % N: [5 p, P8 ]  H1 u
  19. 5 J7 X) y' B+ {' R5 ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid)9 i$ E( L/ N9 Y
  21. {
    - o4 o# a; I9 D4 ^: h
  22.         int fd, ret;. J7 |/ s( V" b
  23.         e2prom_s_cmd arg;6 H! }/ H; H0 Y8 s/ Z1 W
  24.         unsigned char buf[0x18];
    2 S* ]" P7 [# `" Q8 x* p
  25. 8 @' d7 s" y" Q$ Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# i5 U6 `7 g; d6 S- g; `4 E
  27.         if (fd  < 0) {/ f. Y+ a$ Q. y; j1 E
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ C4 v7 ]! a. c
  29.                 return -1;
    - W1 S/ [% J5 C; S5 B9 y% P! r
  30.         }; X- k8 ~: n5 i4 K9 ~
  31.         arg.sub_addr_count      = 2;+ ^/ }) R& J( b+ k
  32.         arg.data_count          = 0x18;
    6 X' u, e7 }% t
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 a% H8 S. ~! `/ j
  34.         arg.e2prom_cmd_data     = buf;
    7 ?" Z: {. M5 I  L
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  ~3 P" f4 d7 W; ?2 [
  36.         if (ret != 0) {; A+ G: G6 G2 A5 F7 u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& g" h" [5 u6 S3 R9 Q. f, G5 F4 R, o
  38.                 return -1;8 L, N, X: x- t! z. d# k/ i
  39.         }
    9 w' U+ Z, v2 }( Q8 }
  40.         memcpy(mac, buf, 6);1 Q2 {0 B  v2 {9 d. {1 v
  41.         memcpy(stbid, &buf[6], 18);
    2 h4 C# b7 l+ _+ u$ q2 j+ Y8 A
  42.         stbid[18] = '\0';
      T; ^, l% ?; N4 Q- ~( n2 B) T

  43. % G+ J( q, Y* m7 A
  44.         return 0;
    * P' n+ S* N9 C1 A9 x
  45. }
    ; o8 Z4 Z( f0 h$ J$ |+ m8 S
  46. " ]" ^1 J* r" H5 G  N& q; y; A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 W$ b7 c- U7 q1 m: H
  48. {
    $ P! n; C% s: l+ ?" R. C
  49.         int fd, ret;
    6 W0 S3 a5 G7 T  Q' k, H, x
  50.         e2prom_s_cmd arg;
    # `* W) f1 a5 A' T
  51.         unsigned char buf[0x18];7 K: V0 \' C4 [- y! w9 h
  52. ; _/ `( P% K; Z9 ?
  53.         memcpy(buf, mac, 6);7 I" u% `0 t8 ?8 ^! r4 ]( s7 L
  54.         memcpy(&buf[6], stbid, 18);
    + F' U$ o0 n7 {! o4 Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! I: V# c: x6 n# o4 w' l/ l+ u
  56.         if (fd  < 0) {
    6 B' a# K; Z- O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 D. L0 Y) F2 R. ]* ~, p
  58.                 return -1;& P# K7 j$ V  z3 R' J0 x3 R
  59.         }/ b8 J+ W8 N; R3 w$ o; w4 T
  60.         arg.sub_addr_count      = 2;
    9 A, A$ g/ s1 V" ]9 v1 h
  61.         arg.data_count          = 0x18;
    2 b$ y; B0 o- f
  62.         arg.e2prom_cmd_sub_addr = 0x290;: p; ^1 D, ]1 A) y
  63.         arg.e2prom_cmd_data     = buf;4 f6 _3 z. @! X! E) Q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    * s# y& g9 e' c' b1 A# z
  65.         if (ret != 0) {; w/ u6 S0 m" F( d
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * q: _* I( `" \( U$ S% M( ?; [
  67.                 return -1;2 S3 q3 P" j9 K' I$ E
  68.         }5 H% Z5 H( f9 v: k3 F. p

  69. / F- e. E0 F9 _
  70.         return 0;
    7 e$ j% y( O( o6 G, p, S+ e& j
  71. }1 U- U* X) S4 E3 m

  72. # a! [" H- z* F7 s0 ~5 d
  73. int main()! r4 _; M0 a* E5 C  g- s" o; i" g
  74. {
    : J4 F9 `% R1 S
  75.         char c;! s8 v8 r8 R, v
  76.         int i, macs[6];
    $ a" f3 E9 f1 ]' ?( s
  77.         unsigned char mac[6];' E9 z3 i% s# D* G
  78.         unsigned char stbid[256];5 I3 H8 m3 R, p0 M! r# ^# p$ B
  79. ) h' q$ K' c8 ~
  80.         if (readparam(mac, stbid) < 0)) r& K; u' {; y1 k% h9 _8 [1 f, B
  81.                 return 1;
    & }1 I& [: F( Q* Q. N( f. Y* q

  82. - k, A& U, j' h8 ~* m
  83.         printf("Current parameters: \n");% A/ t, \$ H% v, F, S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; ]7 J# ]& r, M. u9 F' t4 |  g
  85.         printf("  STBID: %s\n", stbid);: _( R2 r+ h" x; c
  86.         ' ?% q% @3 T; o+ T: Z. r! X( |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% q$ V) J2 [  N0 d( X0 V5 ^2 L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & r* _6 P1 m; V2 I7 ~0 n/ E3 u6 n' p
  89.                 printf("Input MAC error\n");) p0 P" ]0 J' I
  90.                 return 1;
    - f" ]) Z( b/ x; z7 D; p: \* P  }
  91.         }: U4 W. b+ k- b0 d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];& V' ?# y, n6 O( N0 R$ K/ [
  93.         printf("\nPlease input new STBID: ");
    & y( c; W2 {4 K4 r1 c; ~
  94.         scanf("%s", stbid);
    # N+ h: W' [7 ?5 `
  95.         if (strlen(stbid) != 18) {7 B* f2 h. {2 Z. y
  96.                 printf("Invalid stbid\n");
    , e: W- b& \, Z! T: s9 @% x$ z( _
  97.                 return 1;
    1 p0 T, f+ g5 o1 g8 J2 K2 s
  98.         }
    / t  P; M8 ~/ j. C- b. ^( x! {4 u$ X
  99.         printf("\nNew parameters: \n");
    - b$ {7 }' m0 M/ |4 B; j$ {3 y: @
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 G# J' w' C& d2 S7 ]
  101.         printf("  STBID: %s\n", stbid);0 M! F& B/ y. U8 g5 b

  102. " Y9 }* A) v  t  Y. t) y
  103.         printf("\nDo you want to change paramemters? (y/N) ");4 P6 [, `8 P0 w9 I. D
  104.         for (;;) {* L2 s6 Y0 T: Y# U
  105.                 c = getchar();
    + p, X2 [' \: w* J
  106.                 if (c == 'y' || c == 'Y')/ m, g8 {: t4 p9 W1 J1 [( m
  107.                         break;+ t1 o) i9 v. J4 J
  108.                 if (c == 'n' || c == 'N') {
    : F0 w6 q1 w$ `/ ?, T8 D2 V$ G7 f
  109.                         printf("\nAborted.\n");5 X1 R6 e2 k, L) C0 S" o
  110.                         return 1;
    ) ~6 h/ @1 u9 j7 n1 `0 s
  111.                 }
    . I! S9 Z$ Y, p' B5 k5 K
  112.         }
    7 f7 D! E3 g# C( ^/ ~  Q- B5 I
  113.         if (writeparam(mac, stbid) == 0)
    $ m1 O7 n7 }% Q8 U% v
  114.                 printf("Parameters changed.\n");
    0 m) t, B5 A% X9 t& k6 B  |; @

  115. + H9 t5 s0 Y  T1 o% A0 ?: E
  116.         return 0;! H5 {% q2 F+ O
  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
) w/ B& d3 i3 p8 _/ ^+ S在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% D, O" x0 b0 g" N# s你用的编译命令行格式是什么?
7 o/ z$ L" }8 A
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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