查看: 17738|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 y+ o! F% R2 `3 G
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig8 b' k7 W. B, `) Y) ?
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:+ m. K4 Y+ `: V
usage: himr <address> <value>. sample: himr 0x80040000 0x0. \6 O0 o: m4 H

: k" V4 ?* R4 \  M& {% q" M' t
, V* R- N& T- @不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?* O: ~, B  V. f3 v

( A/ G7 G" X7 S3 @补充内容 (2012-3-8 09:42):7 L" }2 w$ ~5 F+ T* N, S, M3 ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数$ h1 _  D- Q, e
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% l5 I7 x5 u' p" m5 ^4 z9 ?& C7 k$ _) `/ p6 ?1 H( ?
himr <address> <value>. sample: himr 0x80040000 0x05 i( g" k2 d- m. X' z

' k) O% ^! W2 O$ k: N) K: h. N例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* U! M! p8 |  m+ i  thimr 0x80040000 0x00
& ~: @/ o( X- X) f- Ihimr 0x80040001 0x11
" s: O! e$ i$ N$ j) e* C' Ohimr 0x80040002 0x22
# ]* S) j$ B) `: y) Mhimr 0x80040003 0x33
3 c( y$ {7 b2 g+ R) X' B  ahimr 0x80040004 0x44% ~+ R) i4 P! X, b( Z# S1 f7 p7 t& O
himr 0x80040005 0x55! \, }& d; ], d8 o) ~/ w4 I
# Z8 k" e4 s  {' W; V/ o
SN也是类似。7 ~- n1 m) M2 H- J
3 T/ A: J3 g0 _% P6 c2 K) \
现在主要是,谁告诉我们MAC和SN的地址?( d/ x$ m: K5 Y6 d
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" m, ~$ u5 y0 z" c  @+ C( y一直想找到运程修改MAC和SN的办法,苦于无解啊
; |5 i' n7 _8 A5 O, w
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 8 x  h( N; G$ |4 D6 U" g

: x  }; a2 z; y% [. L修改的代码早有了。到今天不会编译。& B# x- ~6 e/ q) Z( F$ ^0 i7 Y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    2 A% Y. N% r& W, g8 B* j  e4 ~
  2. #include <malloc.h>
    ) O: q9 r0 c' ]$ @
  3. #include <sys/types.h>6 e2 y& P; `1 G3 {2 ~
  4. #include <sys/stat.h>
    1 y: x! \, r' X8 Z
  5. #include <sys/ioctl.h>$ x1 ~% G1 @: U+ Z) p3 H- Z
  6. #include <stdio.h>( F/ X2 U* V! _: H% W
  7. #include <string.h>: I9 q) I' I- }& D* R% b- I) {9 }
  8. 0 R# J/ j" z% c3 p& v# U! z
  9. typedef struct {
    6 x: b; Z& U/ T/ B
  10.         unsigned int        e2prom_cmd_sub_addr;/ a0 @9 q0 d1 ]' e7 y
  11.         unsigned int        sub_addr_count;
    2 N5 S1 ?- d9 |  U
  12.         unsigned char*        e2prom_cmd_data;
    1 B5 `+ x3 [) g/ M* U/ \7 c+ R) v
  13.         unsigned int        data_count;
    8 O; I/ @' I) o3 E  Y
  14. } e2prom_s_cmd;6 ~/ `; v& z4 ^
  15. ( n! @) @% B- b  f+ J
  16. #define E2PROM_CMD_READ 14 e, t, w* \" R0 Z% G1 w
  17. #define E2PROM_CMD_WRITE 22 r* v/ v, k5 j+ u5 C' n
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , Q6 V4 x# o  @0 i# G9 p
  19. * n2 N$ I) T  W, \& z# D6 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % g: J' d# n& n  H  A# O
  21. {$ `0 w) N  N. ]* I) v/ z- B  G
  22.         int fd, ret;
    $ G" G( q/ M2 {0 Q
  23.         e2prom_s_cmd arg;4 z. M: C* @8 X  S( G" v6 q) k7 z
  24.         unsigned char buf[0x18];) I) r- F7 R; \1 T7 H

  25. . D1 J3 c, b9 l! T, m0 y: \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. Z! j' H! g" _# _, T
  27.         if (fd  < 0) {9 b0 p+ u" S8 a! `: `
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& R) d* A. U& W1 k/ \
  29.                 return -1;* J; i+ C) E' O# c2 N
  30.         }( A" m; l* ]- S1 ^4 B8 o
  31.         arg.sub_addr_count      = 2;
    ' X% o& C2 c$ w' w- Y0 @
  32.         arg.data_count          = 0x18;% K: Q7 I) n1 S+ W5 u) |* I
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 r! L# ~  X3 M/ \! L( J
  34.         arg.e2prom_cmd_data     = buf;
    ; Q) {9 R5 L4 x) g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 b* p( j$ A6 N: ?( B
  36.         if (ret != 0) {" b7 T8 _6 e4 x5 q7 G" J; B, s. B6 z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: S( x5 T& m5 Q* u
  38.                 return -1;
    ; c! W6 @4 m! O/ r
  39.         }3 |: S0 ^+ S$ A8 s
  40.         memcpy(mac, buf, 6);1 o2 M, S+ P8 C1 h1 }
  41.         memcpy(stbid, &buf[6], 18);
    2 k( Z) d) s+ t2 H
  42.         stbid[18] = '\0';
    1 j4 c6 a4 \) ?7 x7 H) O

  43. * h2 j% D" `. r3 A' T! V
  44.         return 0;
    ( s7 }  p+ e! M' n* l9 E, B: n* g
  45. }
    6 m: R7 i- y4 W& G+ a, r

  46. 6 d% o2 h2 L  k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" x% g9 d4 L5 t8 p4 M. z- T4 w
  48. {. X! ~$ `% \) O- p, ?4 _
  49.         int fd, ret;
    ) i' H8 X( X, V  H# ]& X* F6 [" A
  50.         e2prom_s_cmd arg;
    / c, V; g2 d5 @2 w$ v
  51.         unsigned char buf[0x18];
    2 V* m3 S: `, b: Y0 D! W; K6 n9 h4 u
  52. 1 z' u9 z( ^/ [9 U( q
  53.         memcpy(buf, mac, 6);
    ( @( N# N& E3 h& N1 U
  54.         memcpy(&buf[6], stbid, 18);" U2 f  Y2 {: A% _/ g' Z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);# x, b! _3 r  M7 d0 `, [) ^5 I
  56.         if (fd  < 0) {
    % W! y* a1 P* G* W( p2 i- \/ Y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 ?, A; a  D  ~; J
  58.                 return -1;( `" K1 t: c' F) x# T
  59.         }- G( L' U( C5 V" Y
  60.         arg.sub_addr_count      = 2;
    8 R) G- @6 ^$ N0 j
  61.         arg.data_count          = 0x18;% F2 ?1 V* D/ \2 L" V" v
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    : i' n# ^) ]( C* F2 Z
  63.         arg.e2prom_cmd_data     = buf;
    0 Z+ Y3 O7 n! f$ k& j9 v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 P6 w( b. k" N6 g4 G
  65.         if (ret != 0) {
    ' H- C5 Z% R1 s. z/ `* `4 W
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);/ `* W- A# t: }( v
  67.                 return -1;! M6 @4 W0 I0 Z% {+ F: w4 C$ A
  68.         }
    " T  o- k6 N* [) T9 f
  69. 1 P. x% y: }& b/ |/ k& f9 L4 I
  70.         return 0;. T3 b3 {: e" b5 d. q; a
  71. }
    ( m- m1 k+ H. c& `( K& X; R4 c

  72. 3 _) E5 {8 [  i+ Q( p
  73. int main()
    / }& v& c, N2 {
  74. {
    - s* R' d" U7 f1 O* F" _- a* \
  75.         char c;, M) Q  J. A  x/ I3 u. W4 u
  76.         int i, macs[6];
    8 m, W' w, _; r3 S4 k
  77.         unsigned char mac[6];
    7 k* D+ I1 E$ v# w  a, ^2 s
  78.         unsigned char stbid[256];
    $ e+ B% V, O% E% J: t/ S9 {, ~# e

  79. / y$ d& v2 f) f7 B6 l/ W; y
  80.         if (readparam(mac, stbid) < 0)% o: }5 Z8 P+ ~7 D
  81.                 return 1;# w" o$ M' b9 e$ u, T

  82. 7 ^6 {0 L. z2 J3 a4 b5 v$ f
  83.         printf("Current parameters: \n");
    1 X6 q7 w4 |$ Z' M+ d$ _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 }- |9 n% \1 M" H) X
  85.         printf("  STBID: %s\n", stbid);, p) A; F/ T: h$ \# b7 j5 T- w
  86.         9 @( a6 Y) R# a2 k1 F& F  L& j! l; N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# F1 W- @% z; H  e- u* M. M
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {- i; A' I! u" r- O2 F$ \- ]) u( e2 G! k6 b
  89.                 printf("Input MAC error\n");; G) ?* }/ C: h' s/ w
  90.                 return 1;
    0 E9 G$ }6 k: Y- \; H9 i
  91.         }
    9 |. M3 O& s% M' E7 l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 W, J) X' \. {' G8 W2 m- o  [
  93.         printf("\nPlease input new STBID: ");
    - o# t) E! T& F& T1 x) n
  94.         scanf("%s", stbid);
    1 S* g' k: b$ s- y$ s* b. |
  95.         if (strlen(stbid) != 18) {
    - m, a  T1 \: W; m
  96.                 printf("Invalid stbid\n");- M* a1 x( M* |; N
  97.                 return 1;
    9 J) d# w" ~! Z& [8 u1 i% t6 d) P
  98.         }0 r- H  G0 L$ H8 M( c% U$ Q0 g$ }" l
  99.         printf("\nNew parameters: \n");& Z7 L( K- [) H. @0 @# @2 E
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " U) ^+ V5 g6 D3 K  g2 |. a" z
  101.         printf("  STBID: %s\n", stbid);& q" E- L" z+ I. l" b

  102. + t8 v2 h6 j" U* U
  103.         printf("\nDo you want to change paramemters? (y/N) ");
      R% k. E' P) o9 B+ B2 f
  104.         for (;;) {  H! a" d* a7 h
  105.                 c = getchar();4 C: m- L: S( x& d2 J6 N
  106.                 if (c == 'y' || c == 'Y')
    7 i  [" S  Z$ ?. q9 e( F
  107.                         break;
    7 ?+ |0 o. {7 O* X
  108.                 if (c == 'n' || c == 'N') {' `; b: ]; ]+ s3 @$ B
  109.                         printf("\nAborted.\n");. z& I& I. c. H+ a4 ?
  110.                         return 1;
    5 P) C. ^! C' ~' n* P
  111.                 }* a+ G- z9 S+ b8 t2 v7 [
  112.         }
    7 F9 t: U  ]: j
  113.         if (writeparam(mac, stbid) == 0)
    0 x0 B! r3 R+ B/ {
  114.                 printf("Parameters changed.\n");' R! O4 }4 ~6 s5 G# N
  115. " ~& V- a' K6 H
  116.         return 0;
    6 B( {5 ~3 b3 e" l6 e# P8 x
  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 9 r+ j- U/ B% |8 e) z1 f7 ~
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
, ~4 O1 p; ?/ z
你用的编译命令行格式是什么?0 G; a7 \5 N* A( S. X+ \+ E
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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