查看: 16684|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    / o7 N6 y  E- _  [( H$ j% K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig& `* n# ~1 L& l2 \
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 M" x& F( ?5 Y/ b, B$ h: M, Y; O6 r
usage: himr <address> <value>. sample: himr 0x80040000 0x0% m, @; p1 |  Z' i* u
( O/ V5 ^" U# v1 Y  I& Z$ |
( d) `, h6 E3 y  u# `
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. Z( p/ c2 {! L$ y) o9 o- i7 ]3 U4 A( H5 X6 h2 B# `! x
补充内容 (2012-3-8 09:42):6 F. y$ O  f9 l9 m
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% u' I; T5 R' s$ u$ j* x/ ?7 |这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。* `: S5 y( d% Z0 |

9 N" _5 ?$ z. M7 |' khimr <address> <value>. sample: himr 0x80040000 0x0
* z1 j1 `6 |* h5 M/ Y# R. ~# j
9 N) R, ^* p! K( L* ^5 @例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。. [9 `3 V5 u9 G0 {
himr 0x80040000 0x00) E( v5 G( M" f$ x$ k6 m
himr 0x80040001 0x11
! C0 T: [8 f8 c) Yhimr 0x80040002 0x22
* H  \; t. O# x5 fhimr 0x80040003 0x33
- s: R5 s1 A/ c8 }# o" Bhimr 0x80040004 0x44
0 p' J) w: V1 Shimr 0x80040005 0x55
/ N, ~7 v7 i$ X. L3 q; W3 J
+ C$ h# |( h1 u7 [SN也是类似。
% b3 w; Y# r: ?' [
0 l# G3 D6 _/ D$ w" |现在主要是,谁告诉我们MAC和SN的地址?1 ^( E" I8 O' X" i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 * A- G/ `! d9 A/ {0 P1 T! }
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 P7 y8 k+ e$ b; f% J% C- o
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, q# R5 c  K! G# E3 w( B& f* p' Y0 ~; L( [) M1 d7 P
修改的代码早有了。到今天不会编译。8 h) [% Q0 F; z7 _0 S% n3 K
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    # Z& \0 T7 r6 B9 X
  2. #include <malloc.h>
    6 A6 n; f# v; C& }# g2 r
  3. #include <sys/types.h>
    ; w, y8 e: u. _0 f& Q
  4. #include <sys/stat.h>: \* ?3 ^+ D7 _$ o* Z
  5. #include <sys/ioctl.h>3 z3 V. p, N' W+ Z1 r
  6. #include <stdio.h>4 P) q( B% z: v- b  O* o
  7. #include <string.h>; T3 n2 t0 U9 L; e+ B0 }! }

  8. 7 K4 T! E# x% l. O" x3 q
  9. typedef struct {
    8 m7 `3 V3 {: ?" S( `# g
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 K3 _9 M2 ~0 T1 s5 {- D( x
  11.         unsigned int        sub_addr_count;
    + q0 o4 }% K( [- L7 Q3 f
  12.         unsigned char*        e2prom_cmd_data;: U1 C: R. z* R+ C& G* e" v
  13.         unsigned int        data_count;
      i  [. }, _0 S% \4 Z* T7 ]& {
  14. } e2prom_s_cmd;" h( @+ R* K8 C6 L/ W6 r  s0 ~

  15. $ K3 H, W; F$ A+ s5 @% \  S
  16. #define E2PROM_CMD_READ 1
    6 i6 ^8 t. H$ c1 W- f
  17. #define E2PROM_CMD_WRITE 2; q: Y: ]% r5 e5 X
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 K( K) A1 z0 [7 b- X* H

  19. 1 T4 \2 P6 a: T/ ]* X7 e1 q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)* T0 Y% _( U3 P2 B' g% p
  21. {
    ! x: R2 A9 f0 s* h- E) g% ^
  22.         int fd, ret;
    : _0 J$ c! {/ z; R
  23.         e2prom_s_cmd arg;1 d1 R/ i. m- |% x2 }' k7 m
  24.         unsigned char buf[0x18];5 r! Q) b! c( W' D
  25. 3 ?" w5 Q+ S( Q+ F) h
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    " ?' ]1 K; d7 }7 s2 r/ W7 u  V
  27.         if (fd  < 0) {9 i$ E- b/ y4 ]# J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 u$ p9 C" E# `" U& s
  29.                 return -1;
    / t7 n# v# S0 _
  30.         }7 s: b* O0 S+ W5 \6 a
  31.         arg.sub_addr_count      = 2;+ ~7 ^3 Z' Y: W3 h4 w: b
  32.         arg.data_count          = 0x18;. l2 r. B+ C3 Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " v0 q  N' d% C
  34.         arg.e2prom_cmd_data     = buf;
    $ }# [/ e) S. R, ~1 z  F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 q0 g; l# S# s: w. K+ N5 p$ u
  36.         if (ret != 0) {  J6 a; Z& S; {" f7 L' b7 e
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 X( N1 z' R* H% p3 i
  38.                 return -1;/ D1 X  K" @# [5 {1 o% s; \
  39.         }
    7 q3 w* I4 ^  ~* c( B) o
  40.         memcpy(mac, buf, 6);- q2 ~; d' {- c
  41.         memcpy(stbid, &buf[6], 18);
    2 ]. T+ P3 g0 g& Y( \! O
  42.         stbid[18] = '\0';
    0 L  h) G1 `9 e+ u  d& I" ]
  43. : J2 F# `7 m$ S; q6 S# ^* V
  44.         return 0;
    : ^; i% d- Y$ e$ q
  45. }
    ; r0 r9 i! A# }5 ^0 h5 X" j
  46. 5 ]7 d7 ^+ W5 A7 E8 d, b2 M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
      }5 H- C$ u! {& a
  48. {, j; p7 Y; U6 y/ v2 U6 n
  49.         int fd, ret;
    ; h. ~2 Z+ {4 ^: k) ~: [) Y
  50.         e2prom_s_cmd arg;
    2 @' v+ R8 J% u1 o
  51.         unsigned char buf[0x18];
      d% B8 ~" j0 }# \7 T4 H
  52. ' A3 N- _. d, \9 x+ {. @. w4 {
  53.         memcpy(buf, mac, 6);
    ) b" m6 s% S  d! D
  54.         memcpy(&buf[6], stbid, 18);
    % v+ a0 o; w+ o0 a7 G7 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 `- P7 i+ }' h& W
  56.         if (fd  < 0) {0 K! ^5 v: S5 o" x$ K0 l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);, j' c3 [) k7 e$ h/ Z
  58.                 return -1;4 a: c( `* \1 Q! b. t
  59.         }
    ' H7 H; X: d" F- U
  60.         arg.sub_addr_count      = 2;# t) H$ w' \9 B& R. U
  61.         arg.data_count          = 0x18;
    + J( M% q' D; |0 t: b1 \/ m+ f/ f/ D
  62.         arg.e2prom_cmd_sub_addr = 0x290;- w' I$ S! z, A3 ?  G9 C3 V' C
  63.         arg.e2prom_cmd_data     = buf;
    4 d& X4 N. N$ c2 Z. @
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 T  z) x- ~3 x7 z- d# s
  65.         if (ret != 0) {
    : z# X; o0 H: e) Z. y* S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    . |; O1 ]% l7 C. _1 C5 l
  67.                 return -1;
    # F3 d- E* O$ U9 {
  68.         }
    % K* _$ D1 O9 ~. `2 k

  69. - |2 P7 G/ d8 w% A; v+ ^- C1 |
  70.         return 0;# }) d6 e9 Z+ ]* p2 V( h; t  N& E
  71. }
    ! U/ c  r) D! u. ~7 E8 E0 Z- I

  72. + |4 e/ Z3 L! J5 O; ]) ~, y) B- \
  73. int main()
    % r6 `' d6 X6 x
  74. {
    ) c) b) P: c3 A+ v1 N& p
  75.         char c;$ Y3 A9 j* C. _/ Y/ ^4 T6 }6 b* }0 a) \
  76.         int i, macs[6];9 v! |/ `+ Y% Q" M2 ^3 C  Z
  77.         unsigned char mac[6];& W1 M5 p# p9 ~4 `$ y9 j
  78.         unsigned char stbid[256];" J7 U9 e& Y+ o) F) ]
  79. & Y3 F* N+ f% t! O/ J' I
  80.         if (readparam(mac, stbid) < 0)
    + h7 T* D. s, v
  81.                 return 1;/ [9 i8 R  d# g" F8 f" K  u0 L

  82. ' N0 [; k/ K6 a8 Z1 E
  83.         printf("Current parameters: \n");
    4 n9 w2 o& D( e3 L
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ i. d* b, R5 p$ I5 r5 Z
  85.         printf("  STBID: %s\n", stbid);
    7 i1 I: b4 A7 n. u- q
  86.        
    % X1 g6 N. e6 z+ f
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ) j. Y$ {4 s( N9 e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. _: V/ w1 q( f) }8 A2 i, ]5 Z: b
  89.                 printf("Input MAC error\n");+ b5 ]2 ?! j! w% d. \+ y4 u5 q
  90.                 return 1;( d' r9 l5 F4 `9 h
  91.         }
    6 ~0 ?7 A, ?% O; o* X& C- {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 X- T7 I+ u3 ~! a
  93.         printf("\nPlease input new STBID: ");
    ; c- \- G7 d+ n$ f; }2 q  [
  94.         scanf("%s", stbid);
    % q2 S8 M9 d, i2 B+ y/ r4 a# n* V
  95.         if (strlen(stbid) != 18) {
    % g9 w* o" _1 s9 ^) `
  96.                 printf("Invalid stbid\n");  ^+ p6 Q% m/ [" }% `, V
  97.                 return 1;( Z- \) C. J9 g1 e' q
  98.         }
    ' w% u# O3 \' |1 D# A
  99.         printf("\nNew parameters: \n");5 G( b$ d9 }1 {' `/ Z! }  @& ]
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 A3 `3 ]/ A# y( C) A1 ?* z
  101.         printf("  STBID: %s\n", stbid);
    % }; S; z& v9 U4 V; M/ i
  102. ' z4 L2 h  z8 u# b7 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");, J) g6 H8 P1 N
  104.         for (;;) {+ @9 d  W  T) [+ P$ b. l; L
  105.                 c = getchar();% K0 W: N2 k2 O5 o1 y( F
  106.                 if (c == 'y' || c == 'Y')
    % e7 v4 p! D2 Q, p
  107.                         break;2 x$ ^+ |! W4 O' C& b6 h0 M
  108.                 if (c == 'n' || c == 'N') {
    & Z, e; k- a( H$ Q' D
  109.                         printf("\nAborted.\n");
    3 |# a5 ?2 X% d0 a  ~1 f9 ?  Y
  110.                         return 1;7 i, n! l2 R4 D' Y4 [# X  f
  111.                 }
    , q& v0 X, F# I7 l1 c
  112.         }
    . y+ X- ^, T+ Y8 W/ y6 `: W5 B; s
  113.         if (writeparam(mac, stbid) == 0)
    + K' n- J. v5 y" X+ K% N" M
  114.                 printf("Parameters changed.\n");1 w& a2 n/ l8 Z
  115. % B+ I  t. w$ o# g. g
  116.         return 0;
    ! S: ~  L! W8 }5 ]! w8 S' f
  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
4 _. r+ F6 t- p, l在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. d+ _0 i2 G! @* n你用的编译命令行格式是什么?
' X: K" w2 d0 ^. R* x4 N8 r$ ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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