查看: 17293|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) J' j, Q8 j+ W/ f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* a' ~  q3 `' `, l6 x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:, Y& V, f/ R. x3 N- d% p
usage: himr <address> <value>. sample: himr 0x80040000 0x04 B9 ^& h* a' k$ |) i6 Z/ m* j/ y
8 l2 `" ^* A4 O/ t6 j; s, Q) r

2 f% x" a; p" g9 x/ ?" h不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 T0 P0 H9 G! x- S$ _2 g" k, @" N
& m3 f! G  f" k  i0 C( P+ c
补充内容 (2012-3-8 09:42):
9 h% U0 s& W2 }  d: o8 Y3 b$ Ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数; ~( O9 ?* ~" b$ o4 B* A* T9 S& B( P
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
" ~) h9 z" D2 y
2 n9 w& Z" U. N: ehimr <address> <value>. sample: himr 0x80040000 0x0! z% p" S/ o2 e* ^

  P7 x  G+ f1 P$ b% r# a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ N3 v9 C3 w% B) p  }6 W, H( \
himr 0x80040000 0x00
. A# ?) O) r3 n& `: yhimr 0x80040001 0x11
  _5 ?+ w2 L  L0 M; hhimr 0x80040002 0x223 Q; L, g) Y+ H  c* f# i: K* }
himr 0x80040003 0x33
1 A; }- T! D! o* q4 f) ?. j; mhimr 0x80040004 0x44& H7 ?: [  R) c& F0 I- c/ _; u
himr 0x80040005 0x550 O* n4 ^, ~" ]
0 Y, K: q5 m) c% g
SN也是类似。
5 d/ `8 v! n- _' r) J+ T, A5 @! ]# S  D
现在主要是,谁告诉我们MAC和SN的地址?
" S! v5 c& O. Z% I7 h
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
+ S$ p0 F, ^5 P& N一直想找到运程修改MAC和SN的办法,苦于无解啊

. X) N# s) ~. f* `源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # ]7 h# X( K  T

2 [( k0 f+ o$ U1 W修改的代码早有了。到今天不会编译。
; a3 B) U; x  f, v/ W  t& y6 t( P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 j8 P; r! x2 N
  2. #include <malloc.h>1 G1 {3 P* e2 W0 _1 u: k
  3. #include <sys/types.h>! D& e2 D; m* M+ d
  4. #include <sys/stat.h>6 a; {$ E- L# C' f9 h& d
  5. #include <sys/ioctl.h>; J$ y' O/ Z# B; _
  6. #include <stdio.h># B( J& F1 u' q; O5 Z
  7. #include <string.h>
    0 r/ e0 T' e, o7 B; K! G
  8. $ H$ K& ~7 \# N% u
  9. typedef struct {
    3 U, w0 D7 W; p$ M9 ^+ i9 l8 w; r% ^
  10.         unsigned int        e2prom_cmd_sub_addr;) k3 ], i! x9 Z' |( k
  11.         unsigned int        sub_addr_count;
    * ?1 L' `5 R3 d3 |/ A1 _# L
  12.         unsigned char*        e2prom_cmd_data;
      Q( x6 j- U. ~7 G0 d- \
  13.         unsigned int        data_count;
    8 x9 H: @* I  j% H# J3 [8 z- E
  14. } e2prom_s_cmd;
    / q$ Q0 O  D2 w% q' E
  15. . z6 |$ l3 w* X" x- N" y
  16. #define E2PROM_CMD_READ 1) L, S( c, I% b, J
  17. #define E2PROM_CMD_WRITE 23 n0 W' ~! q3 q& @) z) c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      k  I* Y* I. B* t" d% f
  19. . D+ i$ E% C) Y+ |1 r
  20. static int readparam(unsigned char *mac, unsigned char *stbid), a& T1 M! A5 q+ S( X
  21. {
    5 H/ u4 f0 f0 G6 p3 B" |- f7 a
  22.         int fd, ret;, a* U, n" n, q1 L
  23.         e2prom_s_cmd arg;, C8 Y. q$ }& s
  24.         unsigned char buf[0x18];( q2 Q' a; R0 A2 I  D" X

  25. % ~# m! y8 D, k1 P8 [% T/ y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    5 u3 z( ~0 u3 V
  27.         if (fd  < 0) {
    , K, z$ B; i4 K- k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # v  B# Z4 @  @4 q4 w
  29.                 return -1;. q3 R! h& c, ?
  30.         }
    / Q0 \- P, M: Y9 x, f7 }9 g  m
  31.         arg.sub_addr_count      = 2;, a2 Q2 B4 E+ G$ ^
  32.         arg.data_count          = 0x18;
    7 N: _+ `  ]1 K; ]: z
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    # {' ]( I; h) O* q9 s$ S
  34.         arg.e2prom_cmd_data     = buf;
    1 O( S' K5 v* l: E  ^+ X; N* G6 }7 Y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ! _' ^8 W$ a( U$ N6 ]" V
  36.         if (ret != 0) {
    1 Z- G+ h& K6 q3 E, ], P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    & E& [  J" @; f" a
  38.                 return -1;! g) H% G1 p! n0 P" H: o- }/ V) r  d2 B
  39.         }
    5 x, W  d6 Y: `0 N
  40.         memcpy(mac, buf, 6);
    ; P# I8 c2 v2 F
  41.         memcpy(stbid, &buf[6], 18);) b7 H, j! x8 a3 f) K6 |
  42.         stbid[18] = '\0';
    ; Y- {; R) S) I

  43. , X7 K, b2 u" b, F0 V+ H
  44.         return 0;
    4 a7 D! ]2 _& L, F% B, x
  45. }7 s; n- Q, U0 B
  46. 0 I" F) p4 l0 V. k, a/ v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 R- m( W5 h, i% s3 [, ?. N: l
  48. {
    5 k7 s7 K' H" q# y. V: c
  49.         int fd, ret;
    1 i5 M  x) T6 {6 n0 \
  50.         e2prom_s_cmd arg;# j+ x8 x$ N% c$ J
  51.         unsigned char buf[0x18];
    : _& J6 P7 t# F1 r7 Y; A, ]! y6 o
  52. 2 Z7 u- Z3 ~; L* W
  53.         memcpy(buf, mac, 6);
    . u+ T8 Y' A/ R1 ^4 g; G
  54.         memcpy(&buf[6], stbid, 18);! g7 G) B( W2 {3 K2 X" w
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 H8 a7 b  y: F) W: M' ~: E
  56.         if (fd  < 0) {
    ' Z+ R- e: Q1 A+ j+ U# N
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : W5 R' S5 E  \& i& Y
  58.                 return -1;2 R5 s, X8 U( M  ^4 n! F. J+ k! |
  59.         }
    3 R5 P# E! J3 u. c. U, r
  60.         arg.sub_addr_count      = 2;1 K4 O6 D/ T4 g
  61.         arg.data_count          = 0x18;! M! p/ t* W2 ~- X
  62.         arg.e2prom_cmd_sub_addr = 0x290;  C* Z5 w: q7 V* M
  63.         arg.e2prom_cmd_data     = buf;
    % z4 a' f4 l/ F7 _. C# j1 T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 f- _. e% \$ a
  65.         if (ret != 0) {. L. E$ I% K* V9 U2 a" V5 \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * B6 u9 Y% C; d; i) u
  67.                 return -1;' z  }# T- g$ ?6 b. b% w; o* B- v% C
  68.         }/ r3 Y' g6 c. C% U: ?
  69. : |% K) U' J) H' t8 T4 S5 @
  70.         return 0;; |; P) D3 R8 m1 P  i4 u
  71. }
    ; |% R! M. p( h

  72. ' P$ i& }5 F! F3 D7 O) m3 _) }
  73. int main()1 B$ @( h1 Z; Y, N) ^$ J
  74. {
    / o, R) v! L1 P3 G. _
  75.         char c;
    6 v+ [7 G% ?4 W! _
  76.         int i, macs[6];
    5 w# s$ z7 M; V/ G; F- n0 }: n
  77.         unsigned char mac[6];* H( ]* r" E$ N" B
  78.         unsigned char stbid[256];' o$ ~# b& f* \: B3 W% H
  79. 0 R& W# b2 |1 ~0 \4 x
  80.         if (readparam(mac, stbid) < 0)" I' {, m1 l7 G2 d$ j  j; h2 x0 M
  81.                 return 1;/ V# J4 C: [" I, M9 y4 }

  82. 6 e$ h- C" X+ D/ A- R$ |
  83.         printf("Current parameters: \n");' g) w5 a6 ?2 a) u0 T( u
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% @7 C6 g$ w6 C3 ~2 X1 [
  85.         printf("  STBID: %s\n", stbid);& _! f' M1 w* W7 s0 o9 n
  86.        
    $ }) G2 d' @9 b- D- \0 }! y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    5 E* ^. h( A0 z* i* l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- H7 z2 z- m: F. Q, M7 D/ x
  89.                 printf("Input MAC error\n");
    - u% q# s  F2 B4 j' T( a+ J
  90.                 return 1;
    0 r; y# X1 C3 p, J1 F# |' a1 O
  91.         }
    + ]' ^) [! n4 `8 a: N. _8 t8 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( G8 E8 B8 U8 r1 z, W- ?6 h
  93.         printf("\nPlease input new STBID: ");  Y8 C/ W5 _3 n
  94.         scanf("%s", stbid);2 x) g# L' Z8 {3 V
  95.         if (strlen(stbid) != 18) {
    + c- G. V& a. g9 C& C0 h
  96.                 printf("Invalid stbid\n");
    - l, u# W$ ~2 O! R
  97.                 return 1;3 b& o8 N* q0 s0 L
  98.         }
    5 T' v, ]% Q/ f; ~3 A0 B& K
  99.         printf("\nNew parameters: \n");* E% p* g0 X, b# r( `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# H" b8 @( X* K) T
  101.         printf("  STBID: %s\n", stbid);
    0 C' Z# C, a) c3 {. g- I

  102. 7 K" X2 w  v. p( t
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 v( R1 `* @& _
  104.         for (;;) {
    7 l  W' {0 J3 h7 p$ }
  105.                 c = getchar();
    ! [, ^  }9 D: f0 K( D9 `
  106.                 if (c == 'y' || c == 'Y')7 J% r" {/ d% \) A% m
  107.                         break;1 W: f/ W" E0 V* q
  108.                 if (c == 'n' || c == 'N') {4 R8 T7 q8 l8 x; G6 `  v
  109.                         printf("\nAborted.\n");
    * {' K9 z1 B* c- i' V9 _. b
  110.                         return 1;; D$ m9 B6 G! ^% u- k
  111.                 }4 |7 G/ |+ L5 y; u0 q$ {
  112.         }# P; ^3 a0 t) \/ v. \
  113.         if (writeparam(mac, stbid) == 0) 8 Y8 h' e! Q- q3 s# o9 Z/ G
  114.                 printf("Parameters changed.\n");+ R9 C& h4 k$ H/ @$ b% G5 W
  115. " n# _9 H2 l3 f+ q% x- x2 {8 ?
  116.         return 0;
    3 {. `* D* V  g" T; 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
# R% j0 Q0 H0 |# Y, t9 R$ P在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# F# x2 e1 \/ R. O/ v你用的编译命令行格式是什么?0 f" G1 N$ q" 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客服返回顶部