查看: 15930|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . ?# |6 l7 H5 W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * Q9 c" r) s& C8 N* }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
: g5 e) A8 [2 W3 t6 V9 r+ [. w+ H0 Lusage: himr <address> <value>. sample: himr 0x80040000 0x0
+ {+ [5 |& z) U/ R: L9 J; h1 _9 L8 \$ B

. K, ?/ a! s* `0 p% b( R" K不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 ]8 }, K  j" O
5 Z, {) q0 B5 r! a) o8 X7 n5 ~6 J8 u
补充内容 (2012-3-8 09:42):
: h) `' a  G6 _8 q, `9 Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( D: L2 l1 }7 e* j  ]7 i6 J这是修改源代码,可惜我不会编译。
 楼主| 发表于 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  B6 `, V; p% ~; E
0 d3 K; ?/ u" f' I
himr <address> <value>. sample: himr 0x80040000 0x0. W) Y. N+ ~3 W

+ R" v8 Q( S, M# W! u' O例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* |; g1 x$ F/ v- |6 a5 U) Lhimr 0x80040000 0x00! w2 F1 A" a, v* h4 o# [7 x
himr 0x80040001 0x11' z$ d5 S' u) ~! b! `: Z8 }, V; e
himr 0x80040002 0x223 J5 ^3 F" V' t3 p
himr 0x80040003 0x33
) a$ `8 K$ r0 D; khimr 0x80040004 0x44
2 E8 s+ g3 e3 B$ z9 \himr 0x80040005 0x55
' f. K5 U' g: Z) {& T  @8 i
" Q9 x- a7 i" i9 w; `5 q! V) |SN也是类似。
0 j3 e: E! T8 J" d- k3 C4 M. `4 C' `. o' k7 D
现在主要是,谁告诉我们MAC和SN的地址?* S' U' y/ J9 v- v5 V% F+ ?2 K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( A4 y  D7 _; \" C/ |1 t一直想找到运程修改MAC和SN的办法,苦于无解啊
) a. \' \, g( C8 ?, J* y4 E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! `0 p# C% A6 G- A
4 ^- R9 l( P. o$ r. h( B$ A修改的代码早有了。到今天不会编译。
9 b- e$ G; q5 K9 c! L1 T& C( ?需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 q- U* I' @; [  l
  2. #include <malloc.h>" {( X! H* Q4 s: L7 Y
  3. #include <sys/types.h>
    0 R0 _$ g9 H4 Z' T* d
  4. #include <sys/stat.h>
    . G8 f& ~- r- w' f$ P
  5. #include <sys/ioctl.h>
    ' Q5 Q2 P0 H$ l3 X4 \0 L9 c- W
  6. #include <stdio.h>
    5 c- o) r$ @% g6 _0 x: g7 Z, [
  7. #include <string.h>
    ! z+ k1 y4 K' Y- J# o8 j& [
  8. 1 g4 m3 R) b3 @7 [- D
  9. typedef struct {' y, Q- Q. i4 z! u# f6 a4 I
  10.         unsigned int        e2prom_cmd_sub_addr;
      K1 h0 m$ C3 F1 M
  11.         unsigned int        sub_addr_count;+ j- ]" u2 j6 h) O7 z
  12.         unsigned char*        e2prom_cmd_data;
    ! J: P% J/ z6 `4 B; x# j, T7 `
  13.         unsigned int        data_count;
    + }! \7 G2 G! ^+ B( \/ |1 L) v
  14. } e2prom_s_cmd;0 I; D# I4 u$ ~% y$ N/ Z

  15. ' G  s$ A: ]+ _/ y4 X
  16. #define E2PROM_CMD_READ 1
    % ]) U/ @9 a3 t6 l! p5 c+ I; \
  17. #define E2PROM_CMD_WRITE 21 j8 E( w, m- I$ L9 J! z% E0 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
      c! j0 ~5 c# L8 Y# g+ Q3 j

  19. 7 i3 b, S3 {3 y  i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) I  e) ?8 u& S7 p2 }9 K. t* h3 u/ J
  21. {
    9 q8 {- @; B, G- `$ U1 a; V% d6 q
  22.         int fd, ret;
    : Z3 t6 z$ Q2 r6 {! u8 i
  23.         e2prom_s_cmd arg;: J# o/ D  L4 l- C$ n
  24.         unsigned char buf[0x18];$ u7 j% K+ a7 U+ u) \0 m5 f
  25. # d) h6 {6 G, e( @" I" x. }2 j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);1 `3 k8 F2 k" O& K2 Z5 G% L4 U
  27.         if (fd  < 0) {
    , e8 V' G. w, _* O9 S
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 n& B  S4 E/ e
  29.                 return -1;
    + B- B* a8 }3 J- T, C
  30.         }
    % m; R$ t6 N1 f2 S. o% g+ R& ^
  31.         arg.sub_addr_count      = 2;+ _$ x! R' W& [( q- L
  32.         arg.data_count          = 0x18;
    % N' x! T6 n) {0 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : O" v2 [8 w8 w) X: V0 R
  34.         arg.e2prom_cmd_data     = buf;$ T. P" C9 @3 [
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ' O- S: _# M/ Z! F4 J# {  n
  36.         if (ret != 0) {# x, i  C9 c# m0 l6 j! h
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: P' M, {! s2 `
  38.                 return -1;
      y2 T# c% D1 ]+ I' E
  39.         }
    9 L8 p6 [8 ~8 x% M9 J% [; ?
  40.         memcpy(mac, buf, 6);
    - Z! e% J/ v6 L" S2 n% Q
  41.         memcpy(stbid, &buf[6], 18);9 V4 A, e: h) J$ |! ?, y# e3 Q
  42.         stbid[18] = '\0';& v- i/ n& C' U
  43. 7 j" j) {) S8 J
  44.         return 0;
    ) M4 I) B; |5 b7 [
  45. }" I  ?) }7 E2 X' x* E

  46. # X! a7 Y7 ]4 O6 Z; C; K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 Y' O& a3 e& X3 m
  48. {1 |+ w- A0 m. U# J7 V' u
  49.         int fd, ret;; D* N  Z$ P( C
  50.         e2prom_s_cmd arg;# c& Q/ M. I- I
  51.         unsigned char buf[0x18];
    8 d1 q0 a" m' C- R8 g( A
  52. 0 X8 Y. [6 g/ \7 H  C+ I2 t
  53.         memcpy(buf, mac, 6);# A8 |! v7 `8 U* r3 U7 O6 \
  54.         memcpy(&buf[6], stbid, 18);: i6 N2 ?! ^( S4 J9 Z% T
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ W, @9 Y* y6 ]3 m( s* r+ E
  56.         if (fd  < 0) {% l4 Y# g3 p* u: W# E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);. C3 t, n0 @2 }2 W
  58.                 return -1;7 F- f% U8 C. N; k
  59.         }
    4 Q, l; y9 ]& [. u
  60.         arg.sub_addr_count      = 2;
    % g5 {: M* [4 ^7 x- Y% G7 ~& y) U
  61.         arg.data_count          = 0x18;5 E. u% T  r1 C* D
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 _9 j3 y  ~; J
  63.         arg.e2prom_cmd_data     = buf;! W) d* n7 @: O2 Y" ?1 D
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);2 _9 C* ]1 s2 {! ]8 a& H7 o
  65.         if (ret != 0) {
    $ P1 A& _2 I% u" \; J1 f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);. r* h% N0 [1 U  M# J# v
  67.                 return -1;% g. ]; f! |9 r& Q# A! t
  68.         }
    4 f8 v! I2 z: K

  69. 9 s0 C+ S6 l3 w, [. r, P* J3 c
  70.         return 0;
    ( z" G7 p' a- D0 q: b
  71. }
    " C0 ?8 c% ^3 D% ~/ p

  72. * M6 H/ \1 S$ t; A
  73. int main()0 f1 R9 ]* L8 n! q
  74. {
    1 o7 W- k6 N  v& @
  75.         char c;
    / k; D' t$ s3 P% `: _1 `" p- i$ J9 d
  76.         int i, macs[6];9 x# ^9 y, L3 S' C8 ^
  77.         unsigned char mac[6];" k% r. F+ o9 l/ M/ Q) Z
  78.         unsigned char stbid[256];
    - E# `4 U$ n0 T8 n" n

  79. 6 R5 h. y' F0 b7 E5 E
  80.         if (readparam(mac, stbid) < 0)
    6 |! Y. F6 O2 i5 p/ ~
  81.                 return 1;3 x* r) j% K: O) z
  82. 5 `( ?3 s% D" a, O% g
  83.         printf("Current parameters: \n");
    " Z# {4 I' p$ J. ]6 Y. N8 u1 R2 j
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);  V$ S2 i9 _( A9 v8 V4 _: d4 l
  85.         printf("  STBID: %s\n", stbid);% N; v# P/ ~5 P
  86.        
    ) p8 G+ M8 C3 P+ `8 L" h
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & U7 ?9 ?4 V5 m
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 H" O) }: q' s& w" g& t
  89.                 printf("Input MAC error\n");
    " y& a3 j  W$ Z0 x5 L1 ?
  90.                 return 1;
    $ u9 X/ @& U9 X
  91.         }
    7 q3 j- n! k  p' k+ X$ m/ R" G) }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( ~! U. W2 d: X
  93.         printf("\nPlease input new STBID: ");
    3 Y6 {0 l8 {9 T0 T
  94.         scanf("%s", stbid);
    + {' j$ O. |  o! k  k
  95.         if (strlen(stbid) != 18) {
    0 B! X3 X" Y' a: e8 {
  96.                 printf("Invalid stbid\n");
    2 t2 C/ L' g, H
  97.                 return 1;
    * E# A4 O" a' g: f% S' D# d0 {
  98.         }8 X( n1 I! |% p' |; K
  99.         printf("\nNew parameters: \n");
    5 {1 U5 j. ~$ o- N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 M' K; W; \& ^' w2 o
  101.         printf("  STBID: %s\n", stbid);
    , f' D$ R9 [3 _0 y
  102. ) K0 V! `# m  |; T. }  H
  103.         printf("\nDo you want to change paramemters? (y/N) ");* e4 v3 z1 J9 w
  104.         for (;;) {; N' m( f+ J, ]' |
  105.                 c = getchar();5 w' |; s2 k/ L' ?
  106.                 if (c == 'y' || c == 'Y')
    / q! F4 {- I0 f# b7 l
  107.                         break;
    2 W% S' l4 [& h" v: `
  108.                 if (c == 'n' || c == 'N') {
    6 z  }! E! r% M/ C1 N
  109.                         printf("\nAborted.\n");! B/ G6 c* T4 _- I! ?
  110.                         return 1;
    - w3 u+ z# y+ L( l& X& E
  111.                 }; _+ o- E3 t  C5 n% o7 p
  112.         }
    8 z7 t- F, v! P  Z
  113.         if (writeparam(mac, stbid) == 0)
    / W" O0 a! Z* }* W+ a
  114.                 printf("Parameters changed.\n");
    ' P3 Z  c) u0 I6 V0 d3 z
  115. 6 v, b3 D* [9 r- S7 k
  116.         return 0;  z0 ^" j' _3 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 5 k+ M) R4 J7 ]( p( p5 f
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# l" l" o' \0 h. S& U, n+ o
你用的编译命令行格式是什么?
& l3 N! ]' T4 Q8 p% N
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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