查看: 16040|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! C  `5 Q/ h; J( D+ s4 D
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig4 Y3 G) e  ?- ]7 {& V
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:' D8 y3 A  l5 c0 A0 Q) j$ d- s& ]
usage: himr <address> <value>. sample: himr 0x80040000 0x0" o& p  L  u) u/ |) \4 @' d

0 ~* E/ p1 ~/ H# `" {6 O& E; i; I3 q( F' Y" j( s. d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& h# u, w6 b- j% n
; `$ Q: A5 K* i, K" ?
补充内容 (2012-3-8 09:42):' w# F/ g7 A) n7 o1 T/ b3 a  B
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' j9 n/ u* }; p  o1 a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
5 j& s$ k- X! Z+ _; R7 n% W( k2 o& `: _8 m6 J
himr <address> <value>. sample: himr 0x80040000 0x05 W4 |2 g2 k, y- n

% S* D) Y5 ?9 `. ]例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 t9 t' T4 M0 \" x9 i" dhimr 0x80040000 0x00
8 |$ Q, y' O5 yhimr 0x80040001 0x11
# L: C  s# k9 B  o7 s' bhimr 0x80040002 0x22: I% F! R, a* N
himr 0x80040003 0x334 P# _0 r' N% l7 E2 Z) J) R
himr 0x80040004 0x44, s0 ^, x1 M" N& {  u
himr 0x80040005 0x55
* k4 m  c& |9 D5 x5 ^+ Z& a
( B5 V4 {5 U; wSN也是类似。
3 d/ T# w3 @9 y8 x
) C# |* Q) V: k3 o% @现在主要是,谁告诉我们MAC和SN的地址?
; n) _& D& c+ `2 F) k
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 h+ ~0 r7 \- u: `. U
一直想找到运程修改MAC和SN的办法,苦于无解啊
& y3 I6 w% g. |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 {# h+ U" N' r( B
- v- B1 u/ C$ j( A$ W8 ?  v
修改的代码早有了。到今天不会编译。5 G+ x, c' F& O9 o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) t( ?. q* \; a5 R( k# Q
  2. #include <malloc.h>/ t0 i2 _5 A: O
  3. #include <sys/types.h>
    - ?  C5 ]) C3 Y" c
  4. #include <sys/stat.h>
    % W" }/ t5 F6 _, ~9 q
  5. #include <sys/ioctl.h>
    : X& Z8 B7 g* v$ U5 \
  6. #include <stdio.h>
    3 z- E" _1 R- G+ ?/ J
  7. #include <string.h>1 ?' C  H# _/ B, m3 S
  8. % E8 Y7 ^" b, m: U/ ]4 g
  9. typedef struct {
    - B. E) y2 b2 I
  10.         unsigned int        e2prom_cmd_sub_addr;7 [+ H8 e" [: D4 u- a  z
  11.         unsigned int        sub_addr_count;
    4 A3 U. d3 w( b9 S* }
  12.         unsigned char*        e2prom_cmd_data;
      x3 j8 k. Y5 [' Y
  13.         unsigned int        data_count;
    7 k) c8 j+ U- l+ B
  14. } e2prom_s_cmd;) o  E: l% @5 B8 ?2 F

  15. ' L# C& [5 h3 x7 R. `
  16. #define E2PROM_CMD_READ 1
    0 [/ ^# R% d. P5 U
  17. #define E2PROM_CMD_WRITE 23 y# J0 N4 j: X6 f
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * r7 l, I. g, g" b+ D3 n
  19. 8 e1 y. P6 e9 U& `; F4 g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : E- W8 U6 D" M2 u5 e. C
  21. {
    6 ?# t) }6 e% S* k6 Z% H. d
  22.         int fd, ret;
    $ k. o. k3 d  ?' R
  23.         e2prom_s_cmd arg;/ Z; p  F' O5 t& T6 \. n
  24.         unsigned char buf[0x18];9 a& W6 }; z2 Q) h

  25. 7 U) h! d2 E, p4 o0 B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- {$ g5 G$ p& g' |
  27.         if (fd  < 0) {9 T' H7 A( N4 ]' v, ]0 r) S) C9 C9 c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    % t) f; H; H( y( g1 X: i( D
  29.                 return -1;
    ! L/ T! \8 B1 R7 p* G) l/ B
  30.         }
    3 W, P3 K0 ~2 n  n
  31.         arg.sub_addr_count      = 2;
    . A/ h6 Y) p; {, z3 S
  32.         arg.data_count          = 0x18;' ^8 O' h4 H8 }$ |! T4 h7 s; A  f
  33.         arg.e2prom_cmd_sub_addr = 0x290;) o7 g/ w; H5 M5 G
  34.         arg.e2prom_cmd_data     = buf;6 t) r7 T$ N% O; h2 h
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    1 e/ r, o3 C2 n* w* }9 B
  36.         if (ret != 0) {
    ( j8 w# F9 \& O1 D! ?
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " u- w3 K: N7 l& |0 [- \( c
  38.                 return -1;
    6 H/ |5 H2 z* N5 {1 p3 {' d
  39.         }* V$ t6 j5 f1 K) c
  40.         memcpy(mac, buf, 6);
    % x8 e' ?+ D' z; O9 j) A$ a
  41.         memcpy(stbid, &buf[6], 18);* v$ h7 y$ I8 }: W9 F- ^( ]1 q- _
  42.         stbid[18] = '\0';& Z. w. N: f% ^+ W5 X/ P  F

  43. 0 K5 Q$ v* {) M" _3 Q
  44.         return 0;' @/ _3 [/ f- w' K/ f
  45. }0 S/ Z: `2 f  A5 i0 n/ ^
  46. 7 h( |6 |5 ]/ S2 x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 k0 ~1 \  e' Q2 T3 N
  48. {
    , {- M" l  Y" g
  49.         int fd, ret;
    / ~' k4 z' A& L# p5 @
  50.         e2prom_s_cmd arg;' l0 v( v3 H6 ^# T7 v
  51.         unsigned char buf[0x18];4 u; B1 @( z+ B8 V& h* m5 x

  52. ' m' {& [( g7 G7 G- h: \' ^9 |
  53.         memcpy(buf, mac, 6);
    $ Q0 U8 m  G( O( g$ w0 q) @
  54.         memcpy(&buf[6], stbid, 18);3 ^6 E* u5 R% x4 M1 D( A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " H, l, T6 }7 L
  56.         if (fd  < 0) {% V$ l4 Q6 m" m$ O6 W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);' J/ m7 m+ F; Z8 j0 ~5 h/ [4 w
  58.                 return -1;
    ! f  @/ L3 Y- L1 J5 w2 P
  59.         }0 C9 J& ^2 N4 Z( o7 m9 y/ P
  60.         arg.sub_addr_count      = 2;: Q; ^/ S% S' c, |2 @! G4 |
  61.         arg.data_count          = 0x18;$ [$ \1 u, ~' J0 p% H  A
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # {2 t1 }$ J+ O( F. D1 a
  63.         arg.e2prom_cmd_data     = buf;5 i# {8 Z& Z4 ^# W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);9 W6 ?2 b: \9 {7 z" G
  65.         if (ret != 0) {' v# P, u- v7 m% U! @) Z' Q$ e
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, C1 G6 k0 L0 L9 L
  67.                 return -1;
    ; \0 ]1 R5 ?: g0 ?5 t4 e: O
  68.         }& b  }% F) z/ r, S
  69. # {& F9 Y( j# e6 |5 o- U4 S* \
  70.         return 0;
    ) H2 A( r3 O! |" w' T% i( O  p& J/ z
  71. }
    ) Q5 y3 q" q) J2 g; G- ~& B/ y3 ^' B

  72. - d9 n8 K& h) ~! L  l
  73. int main()
    + f# Y8 m% B# E0 ?: x# c& T% S8 v
  74. {; E! |+ s6 i" L5 a/ V& C# O
  75.         char c;# u7 D& w* Z5 L6 \
  76.         int i, macs[6];! ~' \2 ~& i" m; E* N# `
  77.         unsigned char mac[6];: E+ v; W! {) i# l4 r) S- J: C) y  S
  78.         unsigned char stbid[256];
    & k! s& {  {8 J) ?
  79. . R; ]* P! ^3 t
  80.         if (readparam(mac, stbid) < 0)
    6 _2 _- c# l  C7 k
  81.                 return 1;
    9 }6 q( B0 [  G# b/ c0 ^3 a: B

  82. , Z: y3 L% Q& d! \
  83.         printf("Current parameters: \n");
    : J( Y2 R3 v6 m0 w. G/ R  m
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; r4 C3 d* Q1 a$ D* ]
  85.         printf("  STBID: %s\n", stbid);1 C6 a9 N1 {  p) \
  86.         9 c5 S' d0 a& Z' n% o' e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . }; V0 ]3 S3 F8 V+ J. a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    6 `! C* p6 h3 Q& s2 C$ q
  89.                 printf("Input MAC error\n");$ v) T, w- q' m. s/ i
  90.                 return 1;) }9 X! s) r, T
  91.         }$ W2 T. C; E# U( t1 n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    2 k1 O- ~# N: l' T, u
  93.         printf("\nPlease input new STBID: ");! y; Q9 X( d+ b& q' s: Q
  94.         scanf("%s", stbid);
    ' H6 f. |1 {1 r6 y" i7 q8 A
  95.         if (strlen(stbid) != 18) {
      x4 z+ T& s' C: r/ A
  96.                 printf("Invalid stbid\n");
    * z( @3 d3 e; y% t9 ~& q7 K4 J7 {
  97.                 return 1;7 r- b; O% C  g# |+ O
  98.         }9 W" I4 T$ L5 d2 O7 x- a# I$ V
  99.         printf("\nNew parameters: \n");
    ) _* M/ c8 D4 o: ]1 n7 |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # k0 K0 d/ @% F) m& s8 {2 C2 I; s9 w
  101.         printf("  STBID: %s\n", stbid);3 @7 t+ W0 N% z, l; p
  102. ; l0 R/ q1 A% I0 T. N  M! u5 u# x
  103.         printf("\nDo you want to change paramemters? (y/N) ");. H% c3 k$ j; w0 g
  104.         for (;;) {) r0 t" D( ?) w. Z
  105.                 c = getchar();' s1 ^3 H, X: e+ M
  106.                 if (c == 'y' || c == 'Y')
    6 b% o2 ^" [4 ]# C& h" n  p& A2 v
  107.                         break;4 ~* @" ]2 O+ j: v9 n
  108.                 if (c == 'n' || c == 'N') {2 [3 n& c' U) z0 G& k+ W' j
  109.                         printf("\nAborted.\n");
    2 d3 y) Z2 L1 h! H
  110.                         return 1;
    2 W7 i2 h: k2 \5 Q: h6 B! [& }
  111.                 }. u. O7 k1 n& \5 {. W# F
  112.         }
    4 r0 c/ \  H+ X
  113.         if (writeparam(mac, stbid) == 0) . h  p/ E: b7 w7 ?/ P
  114.                 printf("Parameters changed.\n");
    7 n$ j* b. a1 {

  115. ) [* ~: V; I; o2 `& H6 o$ F$ ?
  116.         return 0;- c0 |! Q! u+ ~, u
  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 h( K( ^  j# G' \. e在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; `/ r" s5 H1 L" x* C* U
你用的编译命令行格式是什么?
! K# H' O% `! v5 i% k
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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