查看: 16274|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 q# ]  j; Z4 i" ?" \9 u( w: `0 a
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    - |- @: n, ]# C5 }0 q3 s9 @; p
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ y7 Y+ q  [" j, ?usage: himr <address> <value>. sample: himr 0x80040000 0x0
5 W3 G( ^. N7 |4 q3 l* c+ W" O- G) k: S4 H1 T
9 s! P' a  Q) V, {3 Z. q0 [
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' O2 T! W! u: ^$ G" X" W5 _% M
$ {& [8 W1 B7 Q8 W0 b" j. O补充内容 (2012-3-8 09:42):
, z( q! S7 }3 D3 X* k. C* Q1 ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
) F3 T+ K, U' ?这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。  U% ]. S  |, `; h. P, m
$ d: Q7 l  r" N6 `, I! c
himr <address> <value>. sample: himr 0x80040000 0x0) B$ I* ^4 M8 z7 `8 L" i

/ `' t3 J5 v8 p9 o2 h% {* w2 o例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& \+ i3 W% N# j" H: Z7 d+ B9 n3 a  e
himr 0x80040000 0x003 Z7 @2 ~0 y1 E1 v  d+ u
himr 0x80040001 0x11
( h5 B3 l, g  q; ihimr 0x80040002 0x22
. n  r) C- x' r5 x; _. j0 Z; qhimr 0x80040003 0x33
0 A2 }3 q6 t' Mhimr 0x80040004 0x44
2 k! N2 z, d/ P' l( ^, @5 Y8 Xhimr 0x80040005 0x55
% S# n  Q4 Z' U
8 w" q# k; |( L6 H4 \/ ~/ n+ u" BSN也是类似。1 ]& P1 F' d9 T/ i  _
' r! h" O& ~* _
现在主要是,谁告诉我们MAC和SN的地址?  n$ c3 h6 x/ i: X, A% {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 c. w) v  b; ~$ J8 R( S! U3 ~
一直想找到运程修改MAC和SN的办法,苦于无解啊
: [4 g/ i8 o, k! U
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 ^/ S: f( j0 c
7 W4 Q' ^9 V, v3 r: O7 U( m修改的代码早有了。到今天不会编译。7 c7 S! E! @7 y; Y! [
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ( I4 ?$ ~% L- B; u
  2. #include <malloc.h>
    5 k! g  k/ A0 N' s
  3. #include <sys/types.h>
    $ u# j8 x1 `; H1 R
  4. #include <sys/stat.h>
    % k. R; p! K; I" w; v
  5. #include <sys/ioctl.h>
    - l2 l& q* u" z( n
  6. #include <stdio.h>
    1 y, h7 T! K$ Q
  7. #include <string.h>( a* E5 g. {2 ]% C3 Y
  8. + z: f7 ?3 }9 ]0 g1 g$ G2 }
  9. typedef struct {
    ' J, M& Z2 F) V; d
  10.         unsigned int        e2prom_cmd_sub_addr;1 A" q* ]& D6 ~6 X
  11.         unsigned int        sub_addr_count;
    - i! Y& b; P* F5 x- c! f8 |
  12.         unsigned char*        e2prom_cmd_data;
    " I2 j1 L  N6 V, _$ G3 A; r  n
  13.         unsigned int        data_count;
    ; j1 X+ ^3 Z1 W7 a, ]
  14. } e2prom_s_cmd;8 W, L. S: |. b( }, S# \/ ]

  15. 7 {, E8 X4 ^% S' d' m6 B" `0 f
  16. #define E2PROM_CMD_READ 1
    ( b' ]- K4 W$ E1 Y5 {
  17. #define E2PROM_CMD_WRITE 2
    3 [5 x9 J7 c' D; t5 z9 L6 p* ?; B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! {# n: R; A3 T0 k( K* Q" D" j5 F) z. t
  19. % f8 P# I0 \; g
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    $ J$ U5 q. Z1 S' ?+ Q
  21. {: r& [8 F8 D3 K- p6 h- K
  22.         int fd, ret;  s, f0 m" t; a- ~: J  [
  23.         e2prom_s_cmd arg;' d+ j% n' l7 z: h# _& s: W  F6 o) y
  24.         unsigned char buf[0x18];
    - a( _' s* q6 @# p# W

  25. * d% s& U% a2 W3 H
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% M' V, m, a1 V' R- L$ }
  27.         if (fd  < 0) {
    * r9 Y7 Y- _9 b- K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);  S3 P" n1 y! ]5 B
  29.                 return -1;
    0 `/ _' A. |$ l6 h5 w
  30.         }; W1 R9 {2 K* p3 U. p4 P
  31.         arg.sub_addr_count      = 2;7 w* t4 ]( y4 j" R' ?4 f
  32.         arg.data_count          = 0x18;* L: J# J# c# C. ^; Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + A( ?# e6 ?1 {2 a6 `- ^1 ?  j
  34.         arg.e2prom_cmd_data     = buf;8 y4 ^' K- ]' E0 C: F
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & e6 m" `$ t8 p0 G+ D8 j
  36.         if (ret != 0) {
    2 K2 e, @( F+ i5 _8 Y) I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( U5 X, }9 ^0 C
  38.                 return -1;
    . Q8 \5 R/ a# B
  39.         }
    5 m* P. t( p' Z: \; A# @
  40.         memcpy(mac, buf, 6);
    , q7 h! X& O- [' N
  41.         memcpy(stbid, &buf[6], 18);
    ) Z' E" i9 d" i3 K4 i8 ~
  42.         stbid[18] = '\0';
    * r+ K4 `* C2 b- M& Z& q2 c

  43. - @7 Q) R$ A+ r+ y, E2 j8 _
  44.         return 0;9 q6 @, S5 e/ c6 u
  45. }% R. ^/ w9 d  j- ?8 D
  46. * ]& A  C* w" c) {; q+ D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % R  V* c' A" n5 p
  48. {
    6 J! B: n# w# u7 {+ M
  49.         int fd, ret;
    % Y5 |) ]1 e1 N& h- Z
  50.         e2prom_s_cmd arg;# U) ]6 p) t6 L( e
  51.         unsigned char buf[0x18];$ }0 f6 P0 M& w0 c
  52. . ?7 n7 A+ ~' z7 D* j
  53.         memcpy(buf, mac, 6);5 t# K3 x0 o! {# c# L, J
  54.         memcpy(&buf[6], stbid, 18);
    5 c" ]3 J7 ~! L6 m( o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 d: _+ y: y% B2 e+ @9 u/ j' Z
  56.         if (fd  < 0) {
    3 `  o7 n" x2 f0 P7 x+ S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( _9 }. h$ X, W3 ?. @( |
  58.                 return -1;
    8 E. ^( n9 R$ `9 V9 _6 v
  59.         }7 J* j+ F- ]" @) d( N
  60.         arg.sub_addr_count      = 2;* p1 C6 A4 Y0 i1 P( N0 h
  61.         arg.data_count          = 0x18;; f4 D& V- a4 Q; C. Q; Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;- G6 m1 |( M9 A# `9 I
  63.         arg.e2prom_cmd_data     = buf;- p4 {* W  _" a, e6 V+ v% o+ v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    1 q# l& ~# h- F8 h
  65.         if (ret != 0) {7 `1 Z4 o" J0 i9 ^+ F- k
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);2 T. _( n- v  V1 Y
  67.                 return -1;( W" |% c& `+ o# P
  68.         }
    ) E, h) ^, U8 c1 U6 [% z' ]  _

  69. % g/ M4 B& s+ z2 x3 C" B3 q
  70.         return 0;8 r" Z/ k' V& p' h( J7 N4 ~: z' T
  71. }" t  C" w4 j& _2 b1 c1 r$ g

  72. 0 @8 W7 E# k/ M% j2 m
  73. int main()
    # Y8 X$ i9 h  Q* F% l. l/ L3 b
  74. {5 L& b+ X* k4 A' Z' b& P
  75.         char c;
    * @% E7 n- D% C
  76.         int i, macs[6];
    % y; K& }# h, ~" S8 U, O  k
  77.         unsigned char mac[6];
    / ?# b! F  X8 K) j
  78.         unsigned char stbid[256];
    $ e+ ?. H* t' m4 S) x9 f+ w& |
  79. ; @4 `- q( J1 p) w; p( f8 }( G
  80.         if (readparam(mac, stbid) < 0)0 Q3 y7 i( E% G/ q- Z
  81.                 return 1;( u) W1 O, K8 {1 g5 Y( J% B" m  T, X

  82. 5 S" i' c& {, O( J: n; U
  83.         printf("Current parameters: \n");
    3 H% R- ?( m7 a- u2 k* u) f4 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' I- P8 X" }8 ^3 v8 s: `1 A
  85.         printf("  STBID: %s\n", stbid);4 W+ J# s3 Q& Y! m
  86.         , e/ f% K/ l2 l7 w1 `# S$ t
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - Y9 I) T1 `0 W/ o# n' r; |
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 b* {. M; E  s3 E0 J% M+ {, p
  89.                 printf("Input MAC error\n");
    3 K1 i4 g: j- w3 Q: `
  90.                 return 1;( |0 Z. S7 G- I- Q) y
  91.         }  k8 s! r* W$ H& r
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , x8 K0 U2 p! D! R4 C/ J
  93.         printf("\nPlease input new STBID: ");
    9 c# G1 r  Y' S  J, j- k0 Q
  94.         scanf("%s", stbid);) K! M) W1 o  L9 U1 x  b
  95.         if (strlen(stbid) != 18) {: L; c' e+ E& u0 S7 H; m
  96.                 printf("Invalid stbid\n");+ g& m9 \  A" c3 h
  97.                 return 1;% w8 D. f& f# y+ r4 n/ y- M
  98.         }
    7 X. D  R% P+ y- r/ O% D2 w
  99.         printf("\nNew parameters: \n");' I% t( @# a8 h* I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! t3 g/ ~6 c8 K. G: w/ Q* v. {
  101.         printf("  STBID: %s\n", stbid);
    $ N. T3 H9 H% }" a
  102. ' d+ e& D* ^5 t" ?* O+ @6 ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # |7 e' i* _9 y3 _) ?
  104.         for (;;) {
    - ?% S" A# F7 q9 L8 K
  105.                 c = getchar();! D- V8 f/ R8 f
  106.                 if (c == 'y' || c == 'Y')
    * Y: z; h/ P" o5 n* O  j# M
  107.                         break;& J9 G# R$ P! c* X
  108.                 if (c == 'n' || c == 'N') {
    / o! K3 Q+ I- G; K; B9 X- K
  109.                         printf("\nAborted.\n");; `# U* N- [; z
  110.                         return 1;: N, f; u' M' c, v. V
  111.                 }
    ) w, M. k. Z1 B/ z3 o
  112.         }
    1 G% z- P, K( i, m
  113.         if (writeparam(mac, stbid) == 0) 5 e+ j1 \  P' `  u9 R& ]' m
  114.                 printf("Parameters changed.\n");6 E) ?/ |# ^( D- z  p8 J! g

  115. ! L+ U1 t( @3 w& s: T9 V6 N
  116.         return 0;; c" w: c3 f  Y7 n+ v) Y
  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 ! @. X* k1 @6 y. t! N+ r8 P0 P! F& T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: T* l4 ^2 P. C5 Q& v- ?
你用的编译命令行格式是什么?
7 m- d9 u. K& Z9 d) P; n
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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