查看: 16646|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 W- Z" i# `+ \) t# p* G6 x
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * x% C5 w5 m  N% A, w) w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 N' @4 c3 }" s. L8 ]  q$ V
usage: himr <address> <value>. sample: himr 0x80040000 0x0, d- |( h" e  }% I
1 k' r5 k( c& W2 E

" r# |/ p5 L5 v# P9 w9 \不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?& Q! b8 ~8 i& `- g3 q  |, ~
' Q+ t4 p' u6 ]/ `  t% I
补充内容 (2012-3-8 09:42):7 o3 @# F: y+ a  y6 U
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数/ r- F& @! u" f& R; x
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ C2 p; v9 d. N1 R2 c7 U- y; F# P: k$ a" k( @7 g2 R
himr <address> <value>. sample: himr 0x80040000 0x0
" R. D& j' `% [4 J$ M3 e% x$ g5 N2 D/ |* [7 ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# q. {; B5 E, V% {himr 0x80040000 0x00
& S  a$ I+ s3 |) W" }himr 0x80040001 0x117 e0 u/ {! u- x) c( y" e  d, U
himr 0x80040002 0x223 o# f; D1 ?1 w( G
himr 0x80040003 0x33
' J: h0 H- G6 i7 M+ I6 Bhimr 0x80040004 0x44
( {% {0 O( H: lhimr 0x80040005 0x55
8 q; r8 Z$ [. [7 d8 u9 g' I& J% W7 Q" [8 q7 U0 X
SN也是类似。
7 T1 h( g$ v- I4 z" Q- I: y' ]% Z
  {/ Y' n5 w" `9 c现在主要是,谁告诉我们MAC和SN的地址?/ T+ b2 y& |1 ^$ j6 D
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( U" R  |8 ~9 h一直想找到运程修改MAC和SN的办法,苦于无解啊
* p" b' i* `6 T! n+ [9 g- P, D
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 ]1 A4 K! V" _" m5 m2 G% R6 u9 B
& }) @. r, Y" T2 Z' j2 `修改的代码早有了。到今天不会编译。
- |. `9 t- t' A6 i$ S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- `* O0 B7 r: m# M/ A) }6 s9 H
  2. #include <malloc.h>" u3 Y0 I: r; x9 L! Q
  3. #include <sys/types.h>+ X7 `) @+ K+ ~8 k
  4. #include <sys/stat.h>: b! _9 o% i4 |) W: p
  5. #include <sys/ioctl.h>
    - I6 N# W* p9 j6 I$ d
  6. #include <stdio.h>1 Q! N" H: S, t
  7. #include <string.h>
    + R' z9 i6 D2 _

  8. ) ~* p1 Q% K/ N) |$ v$ P
  9. typedef struct {% F# c3 q+ g5 g- x& i  b9 B2 p
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 J! i( ~' Q! Y8 a2 M5 k$ o  i$ s; ~
  11.         unsigned int        sub_addr_count;
    0 R8 A  ]& o( P
  12.         unsigned char*        e2prom_cmd_data;. L( U, Q5 e+ L5 }
  13.         unsigned int        data_count;
    1 b8 ?. y8 `' t! W& r$ Y
  14. } e2prom_s_cmd;$ t7 y9 T+ e% i9 z9 u% b- F

  15. ' V* c: N; b' H% K) O' D% Z, Q
  16. #define E2PROM_CMD_READ 18 n5 O' s2 c  P" S( c0 H8 @( i% j/ {
  17. #define E2PROM_CMD_WRITE 22 f, b6 }, q. z7 b+ B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 @( e( \2 k; {# h+ R. T2 z

  19. * H. G3 x7 X/ @' N; ~( T/ E% \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    + p' @# I( i4 J  w
  21. {" x: b+ K* R* a, r& ^- e  x" s' V
  22.         int fd, ret;
    2 P, P! B6 m% ~  @; r
  23.         e2prom_s_cmd arg;
    ; t; J4 X6 A# [
  24.         unsigned char buf[0x18];4 n8 {, T9 Q+ B! ]: _/ S

  25. $ R- I+ W- W% F' E" }& e- M/ K; I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' T4 E1 Z8 \/ J& B
  27.         if (fd  < 0) {" G# \: W/ z* T/ n. k4 V& h1 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);; E7 g% d9 C! L1 G3 Q$ i
  29.                 return -1;
    & `8 Q, e; U+ L' X" g( d+ Y2 D
  30.         }
    ; ^5 [; Y4 E  U- q: H# X1 M
  31.         arg.sub_addr_count      = 2;& X2 {" }  U# [" D- i
  32.         arg.data_count          = 0x18;
    " V- R  ~$ n0 V
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' b$ k' P' M. J/ h
  34.         arg.e2prom_cmd_data     = buf;
    6 Q$ n" \$ ~9 V* z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ Q% u. D0 j+ u3 K4 S
  36.         if (ret != 0) {9 k5 y1 e- O6 X- B: [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);  Y5 G! K8 y. \0 K, v. n( I/ b. y
  38.                 return -1;
    ! g' Q, c, U# E% O2 U
  39.         }
    5 g5 h' E* W+ l9 U3 c' s4 j$ t
  40.         memcpy(mac, buf, 6);8 G. D$ n% d# x. P) {2 c. \) z5 g' d
  41.         memcpy(stbid, &buf[6], 18);
    3 l6 s: F& E4 H+ x+ \& ^
  42.         stbid[18] = '\0';. ^5 x* e- N2 y" Q
  43. * }7 M7 l& o4 e- S! _
  44.         return 0;  k; I+ b  g) o& w8 N& _0 H
  45. }+ X' k( p6 [4 g  b% x3 d
  46. 3 s5 E/ S3 \. E* n/ d; w
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& ?# Z7 i+ f4 F1 `7 J  A
  48. {7 V1 B1 G- l* G! A& `
  49.         int fd, ret;
    . p; C( j( o  ?, n0 ^
  50.         e2prom_s_cmd arg;) A8 ~3 o; y! F, I( R* K0 C, `
  51.         unsigned char buf[0x18];
    . t, K% a9 R: L, l; C' m

  52. & k  q6 |; u, |' t8 a5 Z! b. P
  53.         memcpy(buf, mac, 6);9 O( C+ t6 @; _9 ^+ \* _3 B7 [8 h; L
  54.         memcpy(&buf[6], stbid, 18);
    . e5 [; }$ Z! I9 W# X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# u0 a: ^/ K4 c! W
  56.         if (fd  < 0) {
    # `$ S  }8 c8 }) t# z# i
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 g+ y- B7 h  m  h. `1 P1 U; `
  58.                 return -1;" x9 K; m5 g5 S/ f2 \7 }5 Y
  59.         }
    9 S0 C5 k9 _, O; u- \. J- Y, l) w. r* s
  60.         arg.sub_addr_count      = 2;
    7 b, a# d8 S: v; O
  61.         arg.data_count          = 0x18;
    * j+ I, E! X! |
  62.         arg.e2prom_cmd_sub_addr = 0x290;- N* T2 B6 V/ ]; A2 F; _
  63.         arg.e2prom_cmd_data     = buf;' p0 Z. B. n, R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # Y) y8 c( Q( q) c# K
  65.         if (ret != 0) {/ @9 l7 S! ^5 o
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    0 [2 P1 U( ?9 B3 `! z* s
  67.                 return -1;
    . n/ z+ }! p! [% H5 _9 h3 W+ h) C
  68.         }2 R$ Q$ c( W0 d% P8 C
  69. ) `1 F7 N) [% y; W+ C, \3 z( b
  70.         return 0;# m+ Y% Q7 y! g- R; X6 d
  71. }1 Q7 y/ c: I( ^7 S  \1 q

  72. ( Y1 D6 E8 [7 _( H$ f2 r3 Q/ G/ _
  73. int main()4 W# m! @" \$ K# H" a: y
  74. {
      e$ \( D6 i+ @" E
  75.         char c;
    # \7 e0 @9 e5 v$ s: F
  76.         int i, macs[6];/ |! J; `- O( z+ M
  77.         unsigned char mac[6];
    ) z- H  _5 l3 j
  78.         unsigned char stbid[256];& J# [& j' G1 m* Q; G  [: s
  79. - X( G6 O, K$ E0 s+ Q
  80.         if (readparam(mac, stbid) < 0)* t. m/ Y; N. C" f& Y% y
  81.                 return 1;2 \' H# y+ K4 U! l. c( z$ l0 a
  82. 9 g. m5 S* y1 D! v. l6 g
  83.         printf("Current parameters: \n");) l  d! H# {5 Z
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 Q/ ^& f$ L0 p/ `, h
  85.         printf("  STBID: %s\n", stbid);$ F) N! x% a, y2 }) u1 _
  86.         9 ]# t! O8 J2 T( v# D' r+ A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, R+ _0 E8 K) }- o9 t4 b% ]# ?' d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {6 e$ _+ c6 z" f( @& r3 C
  89.                 printf("Input MAC error\n");9 q4 ^5 w3 l( c, @. j6 ]
  90.                 return 1;
    : e0 E# s9 ~: Y
  91.         }- B/ u* u! g% Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];* j- U1 c3 g) ~2 u- _1 e/ r# a3 A
  93.         printf("\nPlease input new STBID: ");
    & ~$ l( L- V+ O( [! f) k
  94.         scanf("%s", stbid);0 d, H# |# o% z( T9 U1 D0 x1 e
  95.         if (strlen(stbid) != 18) {. Q; ^1 c: W0 U6 H$ g2 X; |
  96.                 printf("Invalid stbid\n");
    2 H& E/ H" M/ L& v( A+ \
  97.                 return 1;1 a6 y3 f9 ~, ]  S2 l2 ~& u' j
  98.         }
    6 E8 Z! q8 w8 ~$ P0 v
  99.         printf("\nNew parameters: \n");) }* T* c) k+ e+ i+ R% h
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' S) o8 R0 v0 V# M
  101.         printf("  STBID: %s\n", stbid);
    4 F3 v+ M/ P  y9 v
  102. 7 E, u+ `) m; K2 s
  103.         printf("\nDo you want to change paramemters? (y/N) ");" `& Q. }8 Q7 N
  104.         for (;;) {8 `7 A1 d1 f) c0 o5 f
  105.                 c = getchar();
    + W- n! D& ^2 A8 w$ @+ a
  106.                 if (c == 'y' || c == 'Y'). |( V) J1 n& Q1 p, A
  107.                         break;
    ' \( f# n3 C9 C
  108.                 if (c == 'n' || c == 'N') {
    : Q" Z) m9 b6 T6 k( c
  109.                         printf("\nAborted.\n");
    8 }" e: @# ~* a* A2 u9 U
  110.                         return 1;
    6 H6 ~$ S- Q% T8 r" R# B- N
  111.                 }
    : \$ g/ z0 O6 t5 H; q
  112.         }
    ' i1 F% A: A- h7 V7 {9 }7 E
  113.         if (writeparam(mac, stbid) == 0)
    . [  B- J7 |1 n4 j" m5 k1 t( R- P
  114.                 printf("Parameters changed.\n");& H8 Y5 A+ p0 N

  115. ) u* n. D" N3 A' u3 l
  116.         return 0;; D) ]9 w8 e+ P; b
  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 & C" n# y: m; G" n% r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

' ~: {. Q% \8 @! D% F$ A# }, t你用的编译命令行格式是什么?
% I' i9 Y7 F$ w# R- n- t( V$ W
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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