查看: 16569|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    2 C8 l1 Q) C. a( E9 Y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 J% o  c/ ~7 {7 E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 m8 ^  @) Q4 r1 V1 n( y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 J; H1 b, Y9 U# M
7 F( s- ~/ c( C" g3 q1 |2 \. s# ^6 z7 B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 b+ a) [- w) J4 o$ w. ~
3 C0 S; x$ K5 x* o3 y# H" n, R# U补充内容 (2012-3-8 09:42):- a: D* e0 n) |" @! N( T4 \9 ]
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数8 X) R6 v, Z- J# L$ {- X  d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
0 _4 E" H. {0 r
2 a# u$ s3 `8 a: Qhimr <address> <value>. sample: himr 0x80040000 0x0
' o* f/ M  z  t' L; J4 ?6 y/ Z7 z+ e& _0 f6 {0 @
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# w" T6 c# L8 K) l7 b- a( i% r3 `himr 0x80040000 0x00
- y' f5 J" \7 _! D$ q* y( hhimr 0x80040001 0x11
# P1 p1 u- g+ |% [4 D! Ghimr 0x80040002 0x22
2 q7 A' C/ p# n9 ]7 `himr 0x80040003 0x33
- M0 }5 W7 ~7 B% dhimr 0x80040004 0x44
3 z, F. q* O' s9 U" x8 Q" Chimr 0x80040005 0x55
* x3 G9 A# f; z; T3 G" e+ c9 ?5 x7 X( L5 Z) ?- M' `9 b* f
SN也是类似。) a3 K& p) G, r2 c: [# h0 P1 Z
: L9 c7 k  e# y  O
现在主要是,谁告诉我们MAC和SN的地址?
4 n% G0 O; [$ {: [& k; S- Y2 I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 n) ^6 v2 n6 x8 U# {% g. b% m一直想找到运程修改MAC和SN的办法,苦于无解啊
. \8 M$ P+ b" Q" c
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
* u) G. \5 p) h  [; H
) F3 ^% a( b/ @& x9 o+ X修改的代码早有了。到今天不会编译。% E1 `+ F/ }+ e. Q3 s+ X! Q/ v
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) P3 e. e+ y6 w! i1 d% ~, p
  2. #include <malloc.h>
    7 V( S% z1 R+ V7 i3 N
  3. #include <sys/types.h>4 Z. _; |# @: ?- H$ k
  4. #include <sys/stat.h>
    ( G/ n3 C2 ]- |8 A. G! G; q& D
  5. #include <sys/ioctl.h>
    6 b. R! ], D. a9 q. J$ F
  6. #include <stdio.h>5 K4 @- o5 Z& M& o; ]; @5 o
  7. #include <string.h>
    3 m) J9 }9 N+ y8 b

  8. . q2 \7 ?7 h2 |
  9. typedef struct {
    9 A2 `% C2 s6 @* B) B; d
  10.         unsigned int        e2prom_cmd_sub_addr;; u6 s( h9 y- ~% {! w# d5 S7 @
  11.         unsigned int        sub_addr_count;0 D& x% s) @9 A! X) e
  12.         unsigned char*        e2prom_cmd_data;
    ' y3 t& Z# z5 l; x% V7 A' R
  13.         unsigned int        data_count;
    5 X/ y4 h" H4 u5 J3 w  n
  14. } e2prom_s_cmd;+ J/ Z& ]  M* C2 V  A1 b

  15. ! F0 j& s9 I. W2 [/ W: A/ E
  16. #define E2PROM_CMD_READ 1
    * R2 v6 r1 i! b9 l6 g6 Y
  17. #define E2PROM_CMD_WRITE 2
    2 f; G2 E* T/ D$ L2 O: G* {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", K0 ~0 x9 Z" G. o: i

  19. + _4 F4 z! u. s; K
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    . D1 G  J5 w5 q5 g3 M
  21. {2 M9 }; f3 J0 c! l; V) o
  22.         int fd, ret;
    4 {7 Q: s& O6 |# u- B) a$ R
  23.         e2prom_s_cmd arg;/ u4 h6 S4 H! q
  24.         unsigned char buf[0x18];8 {3 l6 i4 e0 a

  25. * i4 p+ E  V' ~0 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    2 C5 T. e% f! r$ T9 F
  27.         if (fd  < 0) {
    1 N: [0 R' D4 }7 v1 x+ c) i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& D- R0 I. C3 Q
  29.                 return -1;
    ; _2 J& x5 R/ s# f; v
  30.         }5 k# e3 l8 e' [9 u- E1 m5 E
  31.         arg.sub_addr_count      = 2;' J' L) i: B3 r4 x, }/ W
  32.         arg.data_count          = 0x18;
    & [, A% U3 a9 t) _; x6 [( d
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 F1 O9 _1 R9 m4 _& o8 u
  34.         arg.e2prom_cmd_data     = buf;2 i2 `! a" i8 [# c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 ^5 t4 V) b$ \# a1 c" A( A
  36.         if (ret != 0) {
    . L6 d7 W7 F. c4 K; h& U
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . K  {1 Z0 h+ D1 }; Q# ]8 v
  38.                 return -1;
    9 D0 G' ^" w% F! t5 ?
  39.         }
    / D/ Q/ B5 |6 H. L* U. Q' }2 r3 Y
  40.         memcpy(mac, buf, 6);
    1 Y% K% A: r4 {& g5 v0 R0 O3 k
  41.         memcpy(stbid, &buf[6], 18);# ?: Z) P/ l9 ]2 ?" t( s
  42.         stbid[18] = '\0';5 r" t) X3 g1 H* i* W/ L4 \

  43. 6 [7 ], o1 ^$ h  f! Z6 Q, Z! q  L
  44.         return 0;
    ; }# z0 R1 i# U# `& W
  45. }3 U9 F. T6 ]/ x; j6 X

  46. 8 @6 H0 h# J. D6 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 x6 t, r* B; D, a. m
  48. {3 G# _3 [+ C: w) y8 V* L2 _
  49.         int fd, ret;
    3 e4 a! x: [9 C! h( K1 W+ E" v: p6 q
  50.         e2prom_s_cmd arg;
    0 a$ J' \) F6 T; q/ j& r
  51.         unsigned char buf[0x18];0 |" @% N' P' s  N  Q: }& v
  52. + o& e7 [2 K4 J5 t  q4 c, {; B+ B
  53.         memcpy(buf, mac, 6);
    0 Y& k  G, P  f! I1 {8 ~
  54.         memcpy(&buf[6], stbid, 18);
    ; b  V5 @! @& @# h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);3 L4 }% J; Y- o- E+ m
  56.         if (fd  < 0) {
    . j, A9 g# Y0 {+ J, |/ q; u/ b  W5 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 m3 O- n. |' K
  58.                 return -1;% [+ c6 z$ ?7 X8 K
  59.         }
    & q% c3 s3 o) l( `& W' G. `( m
  60.         arg.sub_addr_count      = 2;
    $ _& T* Y9 L) i& Q  ]
  61.         arg.data_count          = 0x18;% ]5 Z% |% \) K5 Z/ M0 i! h
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      `9 ~6 k4 F" W8 O6 e6 M, Q8 P
  63.         arg.e2prom_cmd_data     = buf;
    : K5 @! |4 B' H: K( S- Y' a3 A7 R0 V3 ?
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' G' F% c; T! L# q; T
  65.         if (ret != 0) {
    % U' ~8 f6 a. E. ^2 L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# X! J8 z; L) P
  67.                 return -1;
    7 l: m: |6 d, |7 R/ a
  68.         }
      O! c; B6 _$ ^, G& Y3 q0 U% q

  69. . ]2 Z- G6 k3 g2 [* n1 \- w
  70.         return 0;
    1 F9 k0 A$ a/ W9 \, T
  71. }
    % ?9 O4 y& j3 h! D+ j
  72. , [+ U$ x: A3 f% `2 D, e! H* ~
  73. int main()
    1 T7 ?8 a- ^: T7 e( w' A& P. J+ g9 F
  74. {- h5 ^5 ]! v! \
  75.         char c;# [5 k8 g  R, m' |- B7 [/ ~$ C/ E
  76.         int i, macs[6];. X3 p0 p& _3 d9 b% T/ T: u; K' i
  77.         unsigned char mac[6];" @( g1 V0 ^' M2 Q( ?9 H
  78.         unsigned char stbid[256];2 o$ Z. H9 L% y5 o! }2 \
  79. # E4 I+ v) ~& P* O: {/ T. @
  80.         if (readparam(mac, stbid) < 0)
    ! p# ~4 L& h, t8 T' c+ q
  81.                 return 1;
    / V) E3 x  W. `- g$ O& m

  82. " m; O: G2 x% F6 q4 |' k4 y$ s
  83.         printf("Current parameters: \n");
    " g- B3 w# ?( ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + V" I; d6 o( i
  85.         printf("  STBID: %s\n", stbid);7 v" i- R; G& s
  86.         + r( f9 u6 g  U+ Z0 Z  m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; `+ J/ n3 S+ R2 v( i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ T7 ]1 D1 ?7 I8 _
  89.                 printf("Input MAC error\n");
    : n8 X& v3 q! C/ p) x/ V4 I0 Y
  90.                 return 1;
    5 l+ R2 Y% b2 T3 m, H, O5 Y
  91.         }
    * l2 J7 r. R% W; z6 |7 F* T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];  A9 N! m; F. e& k  j- E
  93.         printf("\nPlease input new STBID: ");# e4 h$ ~. }0 T2 o4 [. W. G6 u2 d- D$ w" l
  94.         scanf("%s", stbid);+ u: k# h$ Z/ _( i, I
  95.         if (strlen(stbid) != 18) {- W4 C/ b" c3 g4 i! k: T* V% U9 b0 ?/ q
  96.                 printf("Invalid stbid\n");
    * |3 `/ I% u; s% M% B, I
  97.                 return 1;2 v7 v( p* K8 e& H1 ^5 r& C$ w
  98.         }4 J0 p2 U* _2 R9 {6 U. L
  99.         printf("\nNew parameters: \n");
    : j/ [% W4 s. z' i4 Y, ^% j3 c' D/ }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / [  w9 D7 f% |, ^# p* m( e
  101.         printf("  STBID: %s\n", stbid);( L  `2 e1 P9 O; I' I3 T

  102. " d. B6 J! r( d* r0 Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ( T+ r) {, h1 C) {4 J
  104.         for (;;) {
    ) T$ w* B# k% u- d
  105.                 c = getchar();# b) x& Q; v7 g! Z
  106.                 if (c == 'y' || c == 'Y')
    * X3 U8 h% Z/ M) `! Q
  107.                         break;
    6 ?( M$ D+ k8 n& O
  108.                 if (c == 'n' || c == 'N') {
    2 l7 h- n2 E0 H1 s  }; F! w$ ?
  109.                         printf("\nAborted.\n");/ m% T4 _4 q0 v
  110.                         return 1;
    6 i! U! L( D1 ~7 S* g: |2 b
  111.                 }
    4 I" M0 A! L6 }6 m1 c) z- ]8 M
  112.         }
    & ]7 L; n- S1 Q- }
  113.         if (writeparam(mac, stbid) == 0) : U9 n; j4 d' e6 B3 c7 s) Q7 L
  114.                 printf("Parameters changed.\n");3 X4 r4 h* u: i& j& v, O+ t

  115. : B+ h  E* ]" a6 h  v; L
  116.         return 0;7 L) K0 @9 H$ c+ q, `/ ^
  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 }0 w9 }5 a+ ?! \9 a7 \
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

4 r  K; M& n# x- H8 e3 d$ O+ I5 i你用的编译命令行格式是什么?( V, |, `! c5 u; u' 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客服返回顶部