查看: 16665|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ; k; L& ~5 E: V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 K' c# b- p; k3 O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 |' ]* @$ k6 v: f# K
usage: himr <address> <value>. sample: himr 0x80040000 0x0" B6 g3 f# v% N; D

- m  ?+ d0 S6 H5 T! f. O3 S& m8 m" ?1 l  `" ^' u( ?  H+ m- t; ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. w- d' o& s& h6 t( G2 X' r7 O$ ]% Q+ Y
补充内容 (2012-3-8 09:42):) ?: L9 O$ k' d4 t1 {! n- Q. `2 S
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 n. a* b1 ^4 w( g这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. P  M6 A: _  o. {
" P/ k! Z8 H# [
himr <address> <value>. sample: himr 0x80040000 0x0, n: N+ b$ c3 I
8 }; m  q, V$ q2 _! p, s0 a
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* _$ Q# q. f# f# _1 E1 W' l7 y! Ohimr 0x80040000 0x00
( O/ b5 O* f9 s' K" H9 A: _himr 0x80040001 0x11
. U( {. I2 z& p  ]; nhimr 0x80040002 0x22  V' Y& L, T7 ]* c9 T5 p' T/ q
himr 0x80040003 0x33' y$ @' o: e! K+ g8 V
himr 0x80040004 0x448 I8 W/ h8 k% ^$ C
himr 0x80040005 0x55
/ w5 b3 ?' e2 p) K( r, N( U- C1 ]/ [6 O) z- y
SN也是类似。/ N9 A  I1 t. x/ K0 q

' N6 E2 K) E! L3 D& a0 v现在主要是,谁告诉我们MAC和SN的地址?0 U5 ]8 s+ Z( R  n6 h
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : l0 {$ k2 F5 h0 f/ ?( Q  B/ H
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 [8 U! P1 R7 ?8 F) O6 M4 v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ ?5 `6 e/ ]; z+ V! f# Z- w5 }5 i! y' _9 f
修改的代码早有了。到今天不会编译。8 F3 Z+ s; M( O0 m% ^5 |; _" E
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! g1 P+ U; @. |! R# s2 p
  2. #include <malloc.h>
    . [( l3 [4 C0 @" n! M% ^
  3. #include <sys/types.h>/ G9 u" H" o. i/ \
  4. #include <sys/stat.h>: _4 j# U! w* ?2 f+ M" S& v% q
  5. #include <sys/ioctl.h>3 x2 @. `" w& @2 M% u! a
  6. #include <stdio.h>
    % i) x- K8 u! \/ [5 }
  7. #include <string.h>
    - P/ v# r  A+ A3 d% `

  8. , H) g+ p6 {: a. u- x
  9. typedef struct {
    ; `! W/ Q1 z. t" f
  10.         unsigned int        e2prom_cmd_sub_addr;7 V+ N! P/ p+ b( ^+ s* I
  11.         unsigned int        sub_addr_count;
    # S9 z* M/ r# I/ w5 W- n1 X  A
  12.         unsigned char*        e2prom_cmd_data;
    2 M$ K4 u0 V5 j- h1 r  b
  13.         unsigned int        data_count;+ D) S/ \* |7 S1 d5 W- Y* Y
  14. } e2prom_s_cmd;
    / `3 R+ o2 y' u% m8 j
  15. , f2 a  h: ~; L
  16. #define E2PROM_CMD_READ 1
    9 c8 z6 n8 k# U0 ^) Q
  17. #define E2PROM_CMD_WRITE 2
    1 d" ?( G% C7 J4 r5 u: v2 O. i1 a
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- Y6 c6 ?3 {" A* G7 H  n9 }. l2 `3 k
  19. . B0 H) j, G% M, T2 J* I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( r6 @$ V( C6 }4 U- N% ]: ^& f
  21. {- M2 h* q# B( @
  22.         int fd, ret;
    . V0 ^, X* V% O# z
  23.         e2prom_s_cmd arg;! V  d$ i. }- r" {8 L4 @
  24.         unsigned char buf[0x18];
    5 W/ G4 A! R) p8 U
  25. 5 K8 M- W0 n; Y$ C9 |. r: U& o
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 D% l9 ^  J3 N
  27.         if (fd  < 0) {3 e: U2 I$ x4 [; Q9 X  B
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 b3 ~4 v- q" o1 b9 q3 D* [
  29.                 return -1;
    0 D4 ~- i# z& y, v
  30.         }( {- N2 Y  b) E9 f
  31.         arg.sub_addr_count      = 2;
    % G* j) f1 M- z& l4 ~
  32.         arg.data_count          = 0x18;
    % S/ a+ l1 V0 W7 E
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    " g9 V6 P+ [( S; X. ^: A1 T3 I
  34.         arg.e2prom_cmd_data     = buf;# ~# q& n$ `# n4 e. S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( ~  b* ?3 }+ O7 F% }* C/ b/ e
  36.         if (ret != 0) {4 D) Y* e& N; q/ [" a& E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    + y. N9 k+ G  L6 [2 {0 T
  38.                 return -1;
    6 Y. s+ v! y3 U4 v& H9 F) W
  39.         }  S/ b$ c9 \- u0 \+ p3 Z/ |! ~+ H' ]
  40.         memcpy(mac, buf, 6);
    , T# f, [5 u% M* E0 M, N
  41.         memcpy(stbid, &buf[6], 18);% ~2 C: F6 |1 b) [1 C1 v3 n: W
  42.         stbid[18] = '\0';
    - U5 J7 s& Q. L3 N8 `

  43. 0 K+ N$ L- Y6 }' y% @' g; G- e2 A
  44.         return 0;. ]4 ]$ [  `$ x  e# K
  45. }
    3 F# u" K; Y  U" w% Z. Z% v; G

  46. $ I8 y# g. |: D+ i  W; `9 x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ) G) A) M$ R! V
  48. {
    , C  K* p. V: l8 R/ C9 p
  49.         int fd, ret;3 b' h9 p7 j3 @9 ?* W
  50.         e2prom_s_cmd arg;
    ) b# z* ]' w2 \( i0 j
  51.         unsigned char buf[0x18];( _) v9 d' L9 p( O! X% J. \
  52. 7 V  V+ l% i2 `
  53.         memcpy(buf, mac, 6);
    7 g2 m7 ]8 }% D# i9 A# N7 y$ p
  54.         memcpy(&buf[6], stbid, 18);
    % k1 y8 @" t. w  Z% ]: S4 D+ X
  55.         fd = open(E2PROM_DEVICE, O_RDWR);6 H0 K: u1 E' {& D! t+ ?
  56.         if (fd  < 0) {
    / M4 J( O8 D" h+ I& R* R5 l, c
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 L1 h4 A6 Q! B
  58.                 return -1;
    5 c% u9 g8 H2 |% n1 Y
  59.         }2 d2 N6 p8 v2 y7 {( w6 \9 C+ k
  60.         arg.sub_addr_count      = 2;  w1 i2 ~% ?5 q+ c& D2 X
  61.         arg.data_count          = 0x18;
    ; R" D' H( |4 A) B! c! q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! U% x8 z* _* Z- y
  63.         arg.e2prom_cmd_data     = buf;
    " z! @9 O$ S" c# _; D) o1 d6 E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    / A" y0 V- L. Z8 b6 z
  65.         if (ret != 0) {
    0 [6 ^' H4 [6 g) l( c4 }0 Z7 B
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    % z8 t0 J/ c, V9 ~- r. X
  67.                 return -1;8 q$ F1 m0 m5 g
  68.         }
    . ?0 d6 C1 g9 O6 \

  69. ) R4 k$ U4 ]. j. C
  70.         return 0;1 q3 d. d: u* W  a$ l6 S6 u
  71. }* l% a7 B- k3 r( \9 [1 u

  72. ' P/ H5 ~7 Q1 |' t% S' H
  73. int main()
    8 X- U  K! T. T. v' M
  74. {
    & |3 O5 P# B  [7 k! U
  75.         char c;
    0 Y& C4 @7 {( C) C9 m3 l1 _
  76.         int i, macs[6];
    1 x$ C# L" m' @2 R! k# Y
  77.         unsigned char mac[6];7 F9 b4 \  l" {, A
  78.         unsigned char stbid[256];7 p" Q, p% ^( F2 ]+ |4 r0 N' a

  79. 2 D- g8 ~9 T( w
  80.         if (readparam(mac, stbid) < 0)( m: }) d; k; J! t# d8 k
  81.                 return 1;) }' S, i5 M6 M0 Z. R3 g

  82. * \/ [! v. c& i* V8 T0 D8 B  {
  83.         printf("Current parameters: \n");; _+ z+ g8 k8 l5 m, B0 ~6 l7 {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( _9 u1 ~" I" i0 Z$ S
  85.         printf("  STBID: %s\n", stbid);
    9 ]6 }9 J7 Y  u# @
  86.         % a- }1 V+ ]- ]! Q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");9 X' _3 F' Z3 a9 ]# D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" R: O7 U& s0 ~! Z
  89.                 printf("Input MAC error\n");' j+ U' G/ K2 {% L( t
  90.                 return 1;
    # S; y7 N9 v( t% {5 J
  91.         }& l7 J: Q! b; s/ c# z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 t) g# [% P" M8 [" G  c5 _
  93.         printf("\nPlease input new STBID: ");, g% k: s& B/ O* J+ e7 Z7 h
  94.         scanf("%s", stbid);
    / Z. t; j0 G- T9 {3 {5 s. ?
  95.         if (strlen(stbid) != 18) {
    ) V" S5 ^* V$ m4 K, j
  96.                 printf("Invalid stbid\n");
    ! |& K6 n0 w4 o3 l
  97.                 return 1;
    ! p4 @4 t7 v  J5 b" ]
  98.         }
    ! F! G6 }; k9 d4 n
  99.         printf("\nNew parameters: \n");
    # w1 Y% `# o. a# Q; o9 p3 g, K
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 w3 J! L- N9 A, w- t
  101.         printf("  STBID: %s\n", stbid);
    2 s/ \" x3 y3 j
  102. / J. q: {6 N+ n% @: l0 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ' I& x& S/ x0 Y
  104.         for (;;) {
    8 _2 U, z8 r& T, y. {5 V
  105.                 c = getchar();
    1 G, F1 K; g# F& f. j( r' F
  106.                 if (c == 'y' || c == 'Y')' n" S$ p; ?/ R
  107.                         break;
    ' j# N* G) i, t, d- S3 b3 Y
  108.                 if (c == 'n' || c == 'N') {
    ' W. _0 u7 F" u6 w4 I5 H
  109.                         printf("\nAborted.\n");8 K; _' w; Y/ h3 K
  110.                         return 1;
    + N) L. }, \! ]( W
  111.                 }
    ( y8 s: q8 K* S  ?8 t
  112.         }
    $ l; J, O$ B8 n$ D4 g5 [, r
  113.         if (writeparam(mac, stbid) == 0)
    1 N3 N0 M3 ~# G$ Q: S0 c2 I4 Q
  114.                 printf("Parameters changed.\n");
    3 h& g( M8 x0 o* n3 B* _
  115. - u2 h% V6 f( {- ^
  116.         return 0;
    ' m0 b" t# p& P/ o1 q9 e% P, z0 _
  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 % p- `8 S1 o9 ~: s$ G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* }! Y$ T& w0 I$ O  P% J2 m你用的编译命令行格式是什么?
6 [+ Y# z8 l+ Z8 h* r5 t
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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