查看: 16877|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# L+ M: \0 B( t' ^9 I1 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , t3 t! B, j) q& `3 [- t; i4 X
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  h! E* h  @, Y- a0 _! e. h
usage: himr <address> <value>. sample: himr 0x80040000 0x0& ?$ _1 E' r7 z2 R1 k% G

8 {% L/ w( m' y4 ^4 J
& s! ]- \' }9 O, x' r- E3 _不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 d2 O; U5 H6 Y6 y$ ?' u4 C6 M) [$ `4 _. [# e& ~2 a1 I
补充内容 (2012-3-8 09:42):
" d: `9 s0 ?3 R, G9 y# d$ O( Ahttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 @7 C) {7 o. d# p+ r
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
, D* l2 c: {8 a0 T7 A5 z* _; y  E3 l0 J# X3 T
himr <address> <value>. sample: himr 0x80040000 0x0
6 T5 w! }: j8 T" O# L" B% [" [$ J( D/ F3 L. u+ v
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ F2 q& T4 @2 z, o' U( F
himr 0x80040000 0x00
4 }0 B2 R3 f5 O6 `" e1 E  s7 Chimr 0x80040001 0x11
1 t+ R' n3 ?3 m0 g- mhimr 0x80040002 0x225 U5 K% w. D; |7 ~8 f+ `
himr 0x80040003 0x33
+ C8 ^! z" U2 d9 n1 p  Y1 {himr 0x80040004 0x44$ [1 q) V6 j' i. c/ g/ g  l
himr 0x80040005 0x55
$ v- N+ c2 A( m$ L
5 Q' n2 }# s1 f1 @" d/ L4 o) z& r6 YSN也是类似。
* p# F9 O$ E" E+ [7 ?2 _" G( k" Z; B# U0 y
现在主要是,谁告诉我们MAC和SN的地址?8 r" _4 G3 d- K% b# v' L1 F
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 ^3 ?8 H& X' G+ g6 V一直想找到运程修改MAC和SN的办法,苦于无解啊

1 k" R9 u; U0 O& f! Y" J9 r2 s5 @源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 g5 H* B8 @6 C! b  N- b& ~% i- E2 V

3 H, k8 L3 e& ]0 y修改的代码早有了。到今天不会编译。! z$ H  D% {; p* l3 f% X' w
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>! p, O" b* f' a$ q' B, B
  2. #include <malloc.h>
    3 ]: y7 \9 |0 R, \( r' w
  3. #include <sys/types.h>
    9 D. L$ y0 U& j( p% l
  4. #include <sys/stat.h>* z$ V6 ?9 e+ i* `
  5. #include <sys/ioctl.h>/ ^( K4 E' M& @2 g) W1 r
  6. #include <stdio.h>
    " C+ u: l8 D* \4 o& z
  7. #include <string.h>- J" I% k# A, V5 _4 V
  8. " p# L5 \2 v1 @3 H4 Z$ d6 Z4 ?" }
  9. typedef struct {
    , G/ i; g& h& k2 j; S% _' [
  10.         unsigned int        e2prom_cmd_sub_addr;. S: ?9 d- W( ?' X# l% m( |, `
  11.         unsigned int        sub_addr_count;
      ]  |+ I! S. V1 U9 v% o; a5 U% j
  12.         unsigned char*        e2prom_cmd_data;# Z' S- y. u! I7 z% s
  13.         unsigned int        data_count;0 t  `0 k, m) T, c
  14. } e2prom_s_cmd;
    ( X) W( s$ a/ e8 T! z: B. X

  15. 7 E2 k8 O" b* t* B, |. s
  16. #define E2PROM_CMD_READ 1* g8 h% ]$ a5 \8 u; T
  17. #define E2PROM_CMD_WRITE 2
    ( H8 j5 u; t" x9 h1 ^2 h7 u
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + K/ G& I- c' y0 h
  19. ) V3 M0 @  H5 a1 W. y9 P, F- b8 H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & j. r/ }! C- ]% c% R
  21. {
    * _4 V; ~+ h9 X9 K( c( Q
  22.         int fd, ret;
    7 l! o2 Q0 Z7 {1 U# x. f* O  c+ F1 A
  23.         e2prom_s_cmd arg;
    / F+ S1 I: z) w. J) x: S
  24.         unsigned char buf[0x18];
    0 |$ y8 i- C( {; n& K/ i& i
  25. - l; s9 @" X2 c1 @- b0 w0 m+ L! a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);5 @& k2 E0 G# V' b' |- ]
  27.         if (fd  < 0) {
    ; {, `) {* B* K# X& b- L$ C
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);. q; Q# ]) V, `7 \! Y
  29.                 return -1;
    ) ^" k9 S* L$ B, {+ Q
  30.         }
    ) i0 q2 k" ~2 V7 Y2 {$ A2 ]
  31.         arg.sub_addr_count      = 2;4 ]6 B$ [- m- t8 P( Q4 j, J
  32.         arg.data_count          = 0x18;( _: l2 t9 ~( O4 g: u$ _0 o
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    2 X8 J# l& c8 ^; ]# s) t
  34.         arg.e2prom_cmd_data     = buf;; a' \( l& p$ T2 Q! ^8 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      D( v/ I. f5 Y) I1 ]+ }5 f
  36.         if (ret != 0) {
    8 ~2 e# D+ D) p% E7 y
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 c. J+ V0 j& v2 q
  38.                 return -1;% Y# L+ D/ p( ~7 T
  39.         }
    5 B# N) G$ L, I: ^
  40.         memcpy(mac, buf, 6);
    & m# b1 ?8 F) C0 J% k* \
  41.         memcpy(stbid, &buf[6], 18);
    * Q2 |) s/ }! E% H" H/ ]
  42.         stbid[18] = '\0';) t3 I0 S& S+ I( ], Y. C; U
  43. 6 L* J& o7 }; u7 I& `- Z
  44.         return 0;
    ! N/ x  U  V6 e3 Z6 u
  45. }# x1 p, {4 W. Q, ^8 o  `
  46. : T$ v7 G( u2 _8 o8 R+ H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)/ _$ ~: k5 I( Y4 y
  48. {
    ! s7 T7 m4 j) G8 c* H
  49.         int fd, ret;4 _* L; K- o, T6 W; l, {2 q
  50.         e2prom_s_cmd arg;
    . T0 b* h1 b, `
  51.         unsigned char buf[0x18];
    ! W0 p/ j& v/ K* n+ f1 ]+ M' p0 X' \
  52. ' L( e) f) W1 [% ~0 O$ l
  53.         memcpy(buf, mac, 6);7 h$ {$ m7 h6 j6 R& \
  54.         memcpy(&buf[6], stbid, 18);  e: h2 b4 Y- _! p/ e
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / d8 w" X* o4 {0 C9 u8 u5 w/ N
  56.         if (fd  < 0) {
    ! j; g* R: h9 A& q0 G0 m8 [  I3 K
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);" s- h9 y1 c9 f0 f: E
  58.                 return -1;. N% M7 G) a) P" r1 n- T
  59.         }5 `! }+ _$ d. r4 y, W& y( b
  60.         arg.sub_addr_count      = 2;: m# a6 z" z- G- y- Y3 Y8 }* j: {
  61.         arg.data_count          = 0x18;
    $ U: h6 C7 f# ^  j( W+ x9 |
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    1 d+ G$ o+ f$ D7 P' O
  63.         arg.e2prom_cmd_data     = buf;
      T0 E) c7 d- D2 w$ ]* h( t& i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 y. ?5 [% R0 F9 G" ^3 f1 c
  65.         if (ret != 0) {9 [: i* [- i4 c& _9 T7 o0 r; A7 U
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    5 |9 y( h% H' Y  W8 z! H
  67.                 return -1;
    8 t9 k0 y2 ]; B8 a& H3 H/ T
  68.         }' H: P( _7 J' j1 H% O$ b7 M" C5 T
  69. * P0 L- x3 `2 \0 H2 D
  70.         return 0;$ L% H- h/ x" C/ Q* B/ v
  71. }
    3 V- z6 O7 A$ ^3 F, a

  72. , S! C: j' X5 n2 e+ f4 P$ G2 ]! Q
  73. int main(), Z% e8 b/ q$ C# e$ u
  74. {
    ' V1 {4 z# w7 l3 U* n4 u) S
  75.         char c;3 [% ^# Z5 p( Q5 I* t
  76.         int i, macs[6];
    ( X* g& O0 |) z* D. o
  77.         unsigned char mac[6];8 L$ v; q9 f& _' ?( R
  78.         unsigned char stbid[256];7 S' L' n7 r4 d

  79. ! `0 a% _# {* J. G# R/ V: s& J
  80.         if (readparam(mac, stbid) < 0)7 c' u  |" o1 E% B, t* v9 f
  81.                 return 1;7 F1 w4 X% Z* B8 L/ G

  82. 6 {$ U2 c# ^/ p$ W3 Z
  83.         printf("Current parameters: \n");
    ! j, w! C& S5 b3 w1 S" }  V
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);* S% U4 Z( x# }* G
  85.         printf("  STBID: %s\n", stbid);
      i6 i' \4 e' b! G2 ~- g  g) g
  86.        
    8 o% {' T1 y" S9 N( H, u' h- x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / [" W; G, h; @/ N0 v- y$ I4 L5 C: g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# @- l$ w+ K* a. N5 P1 w
  89.                 printf("Input MAC error\n");
    : W& u/ L) m3 f* Z! h
  90.                 return 1;$ n' O' i$ ^8 `; h, J
  91.         }' J, V! n4 K* k+ L; D' ]$ G1 {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 `0 B, D- C  z- T
  93.         printf("\nPlease input new STBID: ");" O' ~$ B9 `1 W' C7 Z
  94.         scanf("%s", stbid);
    ' m6 B8 ?# t' Y+ l% M: e% ?8 s" p3 K
  95.         if (strlen(stbid) != 18) {
    # ?8 ^! H3 U0 k
  96.                 printf("Invalid stbid\n");7 u9 G& G! S9 \$ ], u7 }
  97.                 return 1;! B: V* W$ C+ p
  98.         }+ o$ ~0 Q8 C6 b' q) a( k4 }
  99.         printf("\nNew parameters: \n");
    $ D" x8 T( j. x( u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * e! q: I0 m$ d5 P5 O
  101.         printf("  STBID: %s\n", stbid);- B) x6 N* P1 _
  102. " p! ~! F+ u* l8 O5 f+ B3 x  b$ R
  103.         printf("\nDo you want to change paramemters? (y/N) ");; M, \" M: x8 u2 a/ v6 q& R
  104.         for (;;) {
    " l  A  l; n. t
  105.                 c = getchar();3 K% U* c. Y2 [) n
  106.                 if (c == 'y' || c == 'Y')
    5 R& t* p1 r1 U, J
  107.                         break;! m, i: T, k5 I! w
  108.                 if (c == 'n' || c == 'N') {# y) g& `; Z( ^6 E$ L) p- @
  109.                         printf("\nAborted.\n");5 x- s$ u: g8 F6 c
  110.                         return 1;
    7 ^8 H4 Z. D- M6 t& c
  111.                 }% g2 G" R% }) J
  112.         }
    - H) {) j+ q( `" L4 A& D
  113.         if (writeparam(mac, stbid) == 0)
    : |. |( N, a' Z, D
  114.                 printf("Parameters changed.\n");
    ' f! Y2 T* D$ N6 [$ z; t
  115. & L! L* j8 b2 E* M! R2 _# [
  116.         return 0;
    . g: q6 u# o/ j3 H2 p$ K7 [
  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 # V5 }3 T1 l5 |1 U3 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" |4 d% P% p3 ~! ~; g你用的编译命令行格式是什么?
$ l: J# e  e2 ^3 V& u6 f
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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