查看: 16660|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. F1 B/ f, e# y. r  V5 O9 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    8 N# a& {" r% w3 ]# l4 ]; L, J
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ S/ ?5 t9 c# }4 ^: h6 L& J" r# w
usage: himr <address> <value>. sample: himr 0x80040000 0x05 H4 Y) ~1 O$ ^" K, h* `

& g# E7 [- l( s5 C1 k, Z
+ R: |) Y* X0 a. j  y- d不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?" S: H9 ]* ?. Y6 E

0 H8 h4 B& f' t+ _- j/ Z0 x1 B补充内容 (2012-3-8 09:42):5 M4 J) B5 W4 Q: R' _" T
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 v) `7 e; M' [4 S& T1 P这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
# }: q. J% Q+ L$ v+ \) @& u' @2 y' x$ `- ^3 c  ]
himr <address> <value>. sample: himr 0x80040000 0x03 ^7 W1 O0 n6 y# V- G/ s7 T1 O
( I% [2 Y0 ^6 _% y
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
: A+ v8 p2 v, J) y, ^; E5 ghimr 0x80040000 0x001 o$ B6 r. l) W& e$ x& i  O5 g+ J
himr 0x80040001 0x11
9 r, k1 W: X$ }6 I5 R/ u- E. Yhimr 0x80040002 0x22/ Z, ]) k0 E  y, a& X
himr 0x80040003 0x33$ @! F" ^0 S8 `$ V' D8 i+ U, k4 r
himr 0x80040004 0x44
) w8 Y: z) C/ `) dhimr 0x80040005 0x55
/ t, E8 w9 p* p
0 l8 |/ J/ U9 R5 D( b6 \6 v0 X2 bSN也是类似。
7 ^# \: c8 F& @8 }$ W
' T2 x" p$ g0 j2 e' A" w现在主要是,谁告诉我们MAC和SN的地址?
& p% s5 c$ x  N. \
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 ?  j; F  H* p' i$ {5 q  ^
一直想找到运程修改MAC和SN的办法,苦于无解啊
5 k3 i0 P+ j2 A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! ~% ?7 D0 W( E) {* S. Z

. m8 @% q$ w  I9 f) O修改的代码早有了。到今天不会编译。! N* y0 ~7 n( ^- `6 g
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 r3 b+ f9 J" r9 R
  2. #include <malloc.h>  S# E; U' h6 l( Z; c* `/ e
  3. #include <sys/types.h>6 g* Z1 H0 g  S# D) X
  4. #include <sys/stat.h>
    ( t3 J& l3 r$ T
  5. #include <sys/ioctl.h>
    + Q, R; {& H9 R: G. T6 [( w! O% j
  6. #include <stdio.h>
      |& j* a1 X" D
  7. #include <string.h>1 H6 z, j/ H0 d) s

  8. 5 c& x! I, B: I. X
  9. typedef struct {
    9 b, S0 F0 I" B& p. x0 j
  10.         unsigned int        e2prom_cmd_sub_addr;
    3 j; k4 @& T( r! p) K5 H0 s
  11.         unsigned int        sub_addr_count;
    8 Z; Z! o4 p( p
  12.         unsigned char*        e2prom_cmd_data;
    0 k7 ~& @& F( a! ?  i( I& `* F
  13.         unsigned int        data_count;
    $ Q3 d& |. f$ S
  14. } e2prom_s_cmd;
    : _6 ~) Z6 }/ ~6 `4 U
  15. ) `2 I1 E& R' y% @0 m& u6 j
  16. #define E2PROM_CMD_READ 1
    2 r; F& ]; `5 V3 w: B/ e6 Z
  17. #define E2PROM_CMD_WRITE 2! x7 ?% p3 D8 r# X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ z* U# j2 |* T3 _1 j, c
  19. 4 p1 q3 [0 I: ]7 l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" I  K: t1 }. R' V
  21. {+ D. j# D0 p4 G# S: x1 L1 w4 ~/ X9 p
  22.         int fd, ret;" `2 T3 Z( U- b' J) m+ s
  23.         e2prom_s_cmd arg;4 s" V, L6 q4 [: o  L9 S5 u* Z; X6 G
  24.         unsigned char buf[0x18];
    , }; T' M1 c8 K' t

  25. 0 r" N1 S* z* B! w8 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 ~+ w5 d6 T6 e6 y% C8 @$ @8 K
  27.         if (fd  < 0) {! o8 p. |/ f9 L( }. L0 b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( h9 h1 J% E) J0 c) `, _$ V
  29.                 return -1;4 C! o2 m# ]; n+ R5 @3 u
  30.         }
    6 i2 V" C4 h/ n4 w4 g
  31.         arg.sub_addr_count      = 2;  \$ A7 z8 ^' n! |+ L; C% T
  32.         arg.data_count          = 0x18;
    ' Z4 q+ b( u( Z; ]$ X: U' [7 p) k
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % ^9 N% C5 h1 ~
  34.         arg.e2prom_cmd_data     = buf;
    & j% Y$ n) g+ O, [( R, ~/ K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* X0 p" i+ T5 }$ C, T
  36.         if (ret != 0) {7 g$ ^' x. G5 q% p$ s. f3 ?  }
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 C  \  J, L3 V' T; o
  38.                 return -1;) B0 J9 U3 @5 A) Y! f2 J
  39.         }
    6 N$ J- _- r! W
  40.         memcpy(mac, buf, 6);. x5 k" k7 n! c! S1 O
  41.         memcpy(stbid, &buf[6], 18);
    & A- ?9 |2 w8 l. `% ^
  42.         stbid[18] = '\0';$ F, M: ~5 [# n. F# h2 a# E4 i+ O4 L

  43. 0 a- a5 `3 T1 [
  44.         return 0;
    ' U; q. j& p, }) r
  45. }
    " [; m; Y! g8 E/ M- P" H$ B
  46. ) o9 g0 p9 q* D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" U, m- ]" P" O9 g3 g
  48. {6 b$ i' N- r7 S7 E. W! _7 i  i( M
  49.         int fd, ret;1 h7 z! _2 w3 O# D; M
  50.         e2prom_s_cmd arg;3 ^1 L: s4 I: R
  51.         unsigned char buf[0x18];
    : |6 E7 y* L& p1 m2 M# O

  52. 8 O: E9 ?. f6 U% _4 E' ]7 S) E1 Y, {
  53.         memcpy(buf, mac, 6);7 b( x8 o' F. u
  54.         memcpy(&buf[6], stbid, 18);& ~' t2 R; [2 b
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 |3 O" w5 O% x, j; n! ~
  56.         if (fd  < 0) {
    . `& }8 s' ~' j) ^! u- k% q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: e1 d$ I8 L- [5 S  l
  58.                 return -1;+ J6 b: q+ @- H' Z
  59.         }/ z7 Z0 K' x9 S: _2 P6 m
  60.         arg.sub_addr_count      = 2;
    % o3 T- X  `" u0 Z; b6 \. E5 b- D- s
  61.         arg.data_count          = 0x18;
    * q. u9 x2 V1 p+ {9 P' m2 b0 b/ N
  62.         arg.e2prom_cmd_sub_addr = 0x290;% [# h  x' G! o/ ?, |: d" s
  63.         arg.e2prom_cmd_data     = buf;
    4 N: {, L' p" v% Z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 w# z0 C  Z$ x9 I- q" K
  65.         if (ret != 0) {9 G# `' e  M+ q" E, |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);* Q5 ~  {+ f% C
  67.                 return -1;
    4 l* u2 Z. D) ^8 O; g
  68.         }
    4 k" X+ D  S" {1 E6 K* k

  69. 8 d& D0 X, v) {) K* y7 ^- k
  70.         return 0;5 e, n' W; v) }9 c6 H; H( p8 H
  71. }
    % ?5 L& F' ~6 b( W$ o1 X3 g
  72. ' ^& a# [4 G$ w( e
  73. int main()
    ( E: }) G- z4 C5 c5 F
  74. {0 P2 |# w$ R- H) \" S5 l! B
  75.         char c;
    ( @" T& w+ a6 [* w$ J% b. q
  76.         int i, macs[6];
    $ G- c+ h9 I5 _+ M8 ?9 `# @
  77.         unsigned char mac[6];
    & i- b/ _. K% h( F6 o3 ~* a: h; K
  78.         unsigned char stbid[256];) Q8 \, ^9 f% E, m# O5 K

  79. 9 i% Z% l; f+ a$ V
  80.         if (readparam(mac, stbid) < 0)  q" v( D5 s6 E$ \' I
  81.                 return 1;
    . G- j' R0 o9 ^' ^- L9 Z) w7 E  n1 s

  82. * F+ F* u0 h- u
  83.         printf("Current parameters: \n");
    2 e, D! {6 |4 R- ?* ^; M4 U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    , ^" y0 Z1 o! |* L' [6 T
  85.         printf("  STBID: %s\n", stbid);
    * N, G" R' f! x8 N  b9 h
  86.         2 u2 L, \. b) R; r" R; x% S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* S9 v& x9 {$ v+ b7 }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 C0 x6 z- R  U: S3 s$ y2 ~
  89.                 printf("Input MAC error\n");* `: Y- ^; o, h; ]8 y8 L4 S
  90.                 return 1;0 A. k" K& v  q8 J# l0 ^5 |
  91.         }
    0 Q) h( i( T# e' t
  92.         for (i=0; i<6; i++)mac[i] = macs[i];0 \& ^  q( q0 a* @
  93.         printf("\nPlease input new STBID: ");; k* p+ Y& d5 R# W- J" _. e
  94.         scanf("%s", stbid);4 u1 }  P1 @0 c6 t
  95.         if (strlen(stbid) != 18) {
    * A5 z8 d3 j  o7 }6 D, k/ t6 q
  96.                 printf("Invalid stbid\n");8 e3 j1 r; u6 u# m# O+ J6 q; N# @
  97.                 return 1;
    0 H8 Y  b* s) R" H$ o4 q
  98.         }
    * H0 ^5 k1 ~. d. H' `. \+ E
  99.         printf("\nNew parameters: \n");
    9 e& \. `3 q( w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! A8 i0 l5 `6 `+ |& M9 r
  101.         printf("  STBID: %s\n", stbid);
    . H6 s' u, J% C9 L/ B- }' O

  102. 2 n5 p2 }# O# |) E, a% U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 z; `7 D8 y0 L: t
  104.         for (;;) {4 h3 z: T" G! u$ Z1 U  d. D8 X' F* E
  105.                 c = getchar();& V8 {7 U9 }7 M0 {  k( R% G& E+ X! }/ I
  106.                 if (c == 'y' || c == 'Y')
    ( ]- K1 x4 L9 w# y
  107.                         break;
    0 ^2 c1 a  E8 T. N3 K% @; b% g( }% [
  108.                 if (c == 'n' || c == 'N') {
    2 W5 l- h6 j6 i/ q, R+ b1 @
  109.                         printf("\nAborted.\n");) ~; ]2 Z0 [! ]6 W7 X
  110.                         return 1;5 h$ B3 I6 P. g( q* h, u1 f" p
  111.                 }* l9 `7 T' e2 o' @5 Y
  112.         }
    % Y# r/ w( u, r. Z
  113.         if (writeparam(mac, stbid) == 0) ; M9 s: z7 L: U0 H6 H! l4 _
  114.                 printf("Parameters changed.\n");
    / e7 e+ \& R/ f1 |9 w

  115. 3 h7 C& f6 C& j" D) y! `
  116.         return 0;, {! _5 O# G6 w& V6 ~
  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 1 d9 E8 Z- s; [
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

, Y, _0 B% k3 f; p' E/ O$ @7 u) z你用的编译命令行格式是什么?, P# F; M% U( L- v  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客服返回顶部