查看: 16380|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 k9 j; {/ i5 v; s4 [1 J9 q6 I: \
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' ?6 V7 o9 u& V9 x- C
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! p8 w0 e6 ^! Q; t/ V8 m+ Qusage: himr <address> <value>. sample: himr 0x80040000 0x0# F8 G) v! J0 a  l

- i8 v7 _7 n6 h# n5 l
) O* s2 M" _2 X$ ?不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 z; u- }  k; l3 A( b8 y9 a  y, ~3 X  Q
补充内容 (2012-3-8 09:42):* R+ n+ D0 j$ t8 U( Z! D6 Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 k- N" k) A" B4 O, P( K# K1 K
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
. Z& ]) U% Y; _$ p6 X& O
3 h+ s9 I; ]! b, P. E$ ahimr <address> <value>. sample: himr 0x80040000 0x0
0 T3 ^6 m$ i* _4 E2 d6 y$ d9 v! \, r' ?/ U& F7 d5 b
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ S1 ?- p. w# B  q" R7 @% k
himr 0x80040000 0x00$ ?* o( g# I. U& u4 W) r
himr 0x80040001 0x11( f2 p' P7 P' w
himr 0x80040002 0x22+ H# c- p! I8 y. t" k& E: V5 s
himr 0x80040003 0x336 Q7 W7 x, _8 P1 F* K1 m
himr 0x80040004 0x44
" E8 S: T; K9 H& T4 @" b: @himr 0x80040005 0x55# a. Z' B/ f/ I
2 \2 C" l( c$ q- t; ]" X0 N
SN也是类似。
3 b4 j6 K) V, B+ i. x+ n& H0 _
. }1 L7 l2 F9 M, e6 M# x: _; F现在主要是,谁告诉我们MAC和SN的地址?
. }! T! J6 `# p  w
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * U# a& k: o5 V& @( t- x, }6 g
一直想找到运程修改MAC和SN的办法,苦于无解啊
+ a% ~& K, K5 l5 T( A# J1 q0 R
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
9 b1 I% O  ]1 g' q5 S% `" |
5 j/ F3 o6 m: o5 N5 W修改的代码早有了。到今天不会编译。
  i0 {3 o0 ^/ e: W9 E需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, @5 ]4 |0 Q5 h& D2 |
  2. #include <malloc.h>
    % k. B. F2 u+ Y+ W  W% b! v
  3. #include <sys/types.h>/ t2 r( _2 m+ R" }& _
  4. #include <sys/stat.h>
    ! `3 F! R3 }/ u. z6 X& X; B' [
  5. #include <sys/ioctl.h>( |" e) t6 {- N& I. q' t, q
  6. #include <stdio.h>
    7 D- I% ]2 P) r
  7. #include <string.h>
    # G0 Z1 R- L- `+ H

  8. , q; r- E$ h6 k
  9. typedef struct {, v3 Y/ e1 }/ h/ L$ y" {
  10.         unsigned int        e2prom_cmd_sub_addr;
    ; f$ {4 @; ^1 C
  11.         unsigned int        sub_addr_count;
    0 k+ U* Q1 y8 f3 E4 H# ~
  12.         unsigned char*        e2prom_cmd_data;
      U6 `- f- G: n0 i( J# f
  13.         unsigned int        data_count;& o% V7 M) y4 n- Y  F
  14. } e2prom_s_cmd;
    ; ~* N1 v+ F+ Z' H* e8 x
  15. . U/ i. }; ^$ i5 o5 S7 R: D7 m+ _
  16. #define E2PROM_CMD_READ 17 O# H5 m5 @6 }) A
  17. #define E2PROM_CMD_WRITE 2
    - [: ~% G" a3 J" |) d" x( \/ f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * k$ ~& j& ?6 g! B, g9 v' n8 j
  19. / J. U3 Q. O5 ~3 E* F' P+ i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' R, G$ J, U+ Q. t$ g* `/ d
  21. {: i4 a; X" t3 F/ ^( N) W
  22.         int fd, ret;
    $ F0 @8 Z( B* f) u; P$ `' E1 x
  23.         e2prom_s_cmd arg;) f/ k. W: ~1 Y+ O6 \  Q+ p. S
  24.         unsigned char buf[0x18];
    7 ^# J( U6 Z! H* j* X
  25. 7 r* }( b8 `8 Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- R, T( |+ @; ^1 A! d
  27.         if (fd  < 0) {* A$ E4 d. b+ C- e; {) d1 B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 t% H  _: V* M. r
  29.                 return -1;+ O5 d% n" R! `% @! `
  30.         }
    6 t4 e% m4 V' A( K; c4 r
  31.         arg.sub_addr_count      = 2;  l9 ?. q# {- |, D
  32.         arg.data_count          = 0x18;$ O- ?, X9 h  p+ N' F6 n$ I
  33.         arg.e2prom_cmd_sub_addr = 0x290;- A4 X, X) K$ C' R3 o4 u" ?
  34.         arg.e2prom_cmd_data     = buf;
    5 c# n" P7 ~! ]* G( ^- f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    7 r) m. A& ?1 e* `, Z6 j9 u
  36.         if (ret != 0) {; }$ U! G- q& J, K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    # O, K% i& T% M2 W6 J
  38.                 return -1;. Z" l7 R' |6 ~& t  X) c
  39.         }2 [# j7 j/ P  f; u4 m# }
  40.         memcpy(mac, buf, 6);9 A3 ^; C/ W, p4 [% d- }0 `
  41.         memcpy(stbid, &buf[6], 18);
    : ?( J6 l2 E: M
  42.         stbid[18] = '\0';' d3 r2 t1 Q# j; z( _$ ]( g

  43. 4 y# C; z+ z3 k) T5 |" `
  44.         return 0;
    4 Q& B. [+ J8 U0 Y- l6 Y, @
  45. }0 W/ x) x4 O$ U( n- E8 w" @2 J; A
  46. ! W& A4 L% q( K5 H; b
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 Q. A. ~3 F6 n8 P
  48. {
    * Z4 h/ Q/ Y# G+ U
  49.         int fd, ret;
    8 E4 b* p$ A1 w
  50.         e2prom_s_cmd arg;3 }. Y" Y# Z* ~% M4 a
  51.         unsigned char buf[0x18];$ H$ ^2 F5 l: u( ^8 A

  52. 5 T1 I2 {. ~1 V# Z7 h2 p' p, \2 n
  53.         memcpy(buf, mac, 6);
    " v. S9 |; x/ Q6 D* w: t
  54.         memcpy(&buf[6], stbid, 18);
    ' P+ s: L& O! `5 Y7 c' L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    % h" U; h/ M- n9 x4 E
  56.         if (fd  < 0) {
    1 {, ]; G& l& I, G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 Q3 O) r( `  e2 [
  58.                 return -1;8 Q4 |4 s& ]6 z' j) q
  59.         }
    % I! ~+ `5 M6 n9 P& R+ ], w
  60.         arg.sub_addr_count      = 2;; y1 n5 U' ?5 c: m. L- f, l
  61.         arg.data_count          = 0x18;
    : m* j2 W5 l" R5 Q! T
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 t7 e1 V5 E! g; z6 l+ U
  63.         arg.e2prom_cmd_data     = buf;* s7 K% B' ~9 t7 U* k7 L+ m  m
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ) Y- D+ w: Z, D
  65.         if (ret != 0) {
    / y- r2 _& V, @6 J# W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% N! V+ I/ B0 a. n3 x  J
  67.                 return -1;& \' O/ N5 q( m9 T/ ~& }% n
  68.         }
    ' \; g# |0 ~* k  J9 J( h$ \, ~
  69. 1 u" u: u3 F8 Z; a4 @' o& G; u
  70.         return 0;2 Y* y% }  X2 ~5 S0 Y6 u
  71. }$ |5 d1 x2 w9 K7 v  f, }
  72. 5 A" {, K2 |; N2 I# C
  73. int main()& H' N3 R" b( p( p: l, ]4 C
  74. {
    9 j9 C% q' E9 i4 p) t3 b
  75.         char c;* o7 ?$ a7 E  t' _" D1 [
  76.         int i, macs[6];
    7 r5 Z" N7 t- b; _) K
  77.         unsigned char mac[6];
    ! ]: t8 A8 h8 x; E5 k
  78.         unsigned char stbid[256];+ ~; _% O4 u2 J7 Y, a! q8 i

  79. 4 ^' x( O! Y. o5 q6 q9 s
  80.         if (readparam(mac, stbid) < 0)( C" D- Z# o0 E- @# g
  81.                 return 1;
    8 A2 ?1 w8 [" j: B$ h
  82. ! k1 l3 I6 B0 x
  83.         printf("Current parameters: \n");
    . n. U2 s0 p8 _8 S/ r3 M  y6 ^, R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 y/ @, X: o8 O) T! a* G
  85.         printf("  STBID: %s\n", stbid);  T* u8 i% k, S6 b1 w
  86.         ' Y& Q. x. Z4 L$ {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% A* t7 L$ M: r5 L5 w) P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) R( g' I( R$ b4 u2 W3 b: K
  89.                 printf("Input MAC error\n");
    , S" u. t, h; D
  90.                 return 1;8 I4 [9 U2 ]5 L, p: j
  91.         }) I1 V$ e: R7 @+ X
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 z# ]& j! V. h& A8 d
  93.         printf("\nPlease input new STBID: ");
    ! c, `+ f0 K( _+ A9 _/ Z; n5 _! a
  94.         scanf("%s", stbid);4 P" f, B6 u0 o3 o! v/ m7 M9 e3 K
  95.         if (strlen(stbid) != 18) {
    7 W, D& P9 B- ^  f
  96.                 printf("Invalid stbid\n");& i# |/ W. b8 ~0 w! j1 @% h" G  R
  97.                 return 1;
    # z0 H; w" S1 X7 k# \/ B& i
  98.         }8 u4 U/ C7 i+ K
  99.         printf("\nNew parameters: \n");
    1 g" s& k' ?/ `8 k# L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, S% J) R3 P4 ~2 d* R
  101.         printf("  STBID: %s\n", stbid);
      _( C" f7 i! m

  102. ! ?% [: p4 t/ A7 v, X
  103.         printf("\nDo you want to change paramemters? (y/N) ");* a& r2 x2 b# ]& C( K' Z2 F
  104.         for (;;) {, `4 ^! C+ N  w6 C
  105.                 c = getchar();' m/ V( D* Y- o5 E. Z
  106.                 if (c == 'y' || c == 'Y')( A( J' q1 p3 _' {4 J/ u
  107.                         break;
    9 N% C) s* t3 v
  108.                 if (c == 'n' || c == 'N') {" \# \3 s+ {) O' {0 ]# l. ~
  109.                         printf("\nAborted.\n");( A- T9 B5 t6 E. \& I; l6 B
  110.                         return 1;$ T" j  a8 Y/ |6 l( S3 P9 p4 H
  111.                 }
    7 Q# d; I  s* S# n
  112.         }' {; A" l. a$ ~. G' j/ C2 `' g
  113.         if (writeparam(mac, stbid) == 0) 7 x# E" ?2 I( W4 R
  114.                 printf("Parameters changed.\n");
    ' R. t, ], w/ j  t0 {) {* _9 {

  115. ; n3 M# h  h8 a/ [" `( ~0 u5 Q5 O  B
  116.         return 0;* {, v' B/ l: P" K9 Z9 c0 f0 g8 X
  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. D. w8 c* m% x4 x在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 h, l$ x! v' O+ J" k9 C  Q
你用的编译命令行格式是什么?
1 R2 [8 S$ x, f) @& \& s7 K- c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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