找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15550|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( Z0 L  T/ s* p( y( w+ k
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ' B- d2 x2 A9 Z6 ?% z6 {, N
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" `9 M% C- E& r3 h5 I" c& y: ?usage: himr <address> <value>. sample: himr 0x80040000 0x05 c0 T6 ~/ ]9 ?  b. q
8 \1 {, g& e4 c

0 `( @: K8 ^: a' W7 e不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ t# l' z$ Q* R. k# j) t' J, z& e
补充内容 (2012-3-8 09:42):7 B' j+ `, o. t+ d
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数4 f7 R( w0 N& o6 B0 c
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! X& L2 N" F& Q- P+ s* l# k
& W( e, \1 U" w5 o% ]+ E
himr <address> <value>. sample: himr 0x80040000 0x0
" `' H# k& Q2 Q& O  _/ Y9 n1 \  j4 M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) n0 q2 L0 w7 q' E
himr 0x80040000 0x006 b; c1 |! m4 @
himr 0x80040001 0x11
2 K) m. l, P9 q9 @" k% thimr 0x80040002 0x22
2 d; u8 r3 d8 V$ ~& _" Khimr 0x80040003 0x332 f+ E6 m0 v8 \, G# n
himr 0x80040004 0x44% C( W$ E9 P* u4 f& J% K
himr 0x80040005 0x55
$ Y0 @0 r3 r" c- U6 t( J% W2 A1 X) [0 X3 r  s8 K% ^
SN也是类似。
6 C! A2 P3 r  u0 ^% V7 u* i- t- X0 T8 s* v
现在主要是,谁告诉我们MAC和SN的地址?2 K. W/ c5 n% Z9 e' _
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - F0 h3 \8 N9 r( i: i
一直想找到运程修改MAC和SN的办法,苦于无解啊

: }) w( o2 x* j, Z6 c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 6 `3 X5 h# N0 n7 w* W( w# J3 B9 @8 ~
( ~6 w$ ]8 j& Z5 c' b: L
修改的代码早有了。到今天不会编译。
( v4 i! u+ q' V需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    " T, p0 U( w5 G6 L
  2. #include <malloc.h>
    " A& l+ O3 `# g  n
  3. #include <sys/types.h>
    1 ]; |4 \$ C( I4 o3 t# O
  4. #include <sys/stat.h>
    " p4 c1 U1 q$ \/ ~3 a+ Y
  5. #include <sys/ioctl.h>* C# w1 D4 j9 ?# E# y
  6. #include <stdio.h>
    5 e+ L6 D+ l6 N5 ?
  7. #include <string.h>& }1 Y1 c2 i( F4 P  X4 ^! R; ^

  8. / T: n3 E: g4 g  c) N0 K3 H4 X" @( V
  9. typedef struct {
    $ s/ [& @0 @4 \0 H  Q
  10.         unsigned int        e2prom_cmd_sub_addr;& j8 {# {+ X/ t' M; R0 R
  11.         unsigned int        sub_addr_count;
    / O# `. ~1 ?4 H1 v; o4 s
  12.         unsigned char*        e2prom_cmd_data;
    8 k. j( o+ B# l, A9 H3 e, X
  13.         unsigned int        data_count;* ]) P1 o4 C6 M6 c
  14. } e2prom_s_cmd;
    7 p8 L2 h# E4 s. Q: N

  15. 9 T3 j+ P0 ?! z' I8 }  k
  16. #define E2PROM_CMD_READ 1
    9 a# s: A+ L9 D- N
  17. #define E2PROM_CMD_WRITE 2
    1 ]( D% c$ K2 @& s7 W0 \/ ]9 j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- U/ D# G  j% R7 E/ J" n- k, ]
  19. $ r( n  R: |( r+ D5 N' V
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 l0 f& z8 \0 j7 q# J* d
  21. {
    + g1 O) z7 H& U+ e
  22.         int fd, ret;
    2 |5 e4 ^: a6 W% o5 y. c
  23.         e2prom_s_cmd arg;5 }; S/ y9 @" G$ [$ H: V( R$ K) S
  24.         unsigned char buf[0x18];
    6 m9 f& u! ]& T/ R
  25. & p$ W  t+ G( s! T! p
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 e4 |. L) Q' @9 l9 d" Q
  27.         if (fd  < 0) {
    * B7 B% K0 Q# \; p& N( r% i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * G( p# u4 c3 M  A5 ~
  29.                 return -1;' C# u$ d, t. q5 {* f" J2 n
  30.         }6 W9 R6 f: B' n, x% H/ S
  31.         arg.sub_addr_count      = 2;1 l" U& d  J+ Q* i* \9 ~* e  O) _
  32.         arg.data_count          = 0x18;/ `7 j. j1 d7 P3 p5 u3 u
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / Q& a7 l2 }% V# p7 i
  34.         arg.e2prom_cmd_data     = buf;% m+ p5 S$ f# j: k+ C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    + J# n% f1 }5 P! F
  36.         if (ret != 0) {
    1 ^! c& H* G$ U  L6 R; K3 P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    7 x  j+ c. O6 d. H# Z' {
  38.                 return -1;8 B1 E: x! _4 V4 i) ]
  39.         }) d  y' f% L, \3 d4 p
  40.         memcpy(mac, buf, 6);. |, T3 C! Y. F1 Z: r
  41.         memcpy(stbid, &buf[6], 18);- K9 x0 h5 H' L$ z2 D
  42.         stbid[18] = '\0';
    2 m: N" P5 h0 M9 `5 M5 r  z

  43. + a( I' }1 G# H5 Y& D
  44.         return 0;$ x; p" G8 `  L' r! [: z; w' o
  45. }8 i+ \4 l9 @: Y: q( G! i. w

  46. 8 l: d4 V4 a( b# ^% ^1 @3 Y
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    % ?: w9 v/ s' P5 m
  48. {# m; e4 E" x: D8 S  K/ E
  49.         int fd, ret;. C3 o( i  b' H! Q
  50.         e2prom_s_cmd arg;# j0 v4 `+ G8 f
  51.         unsigned char buf[0x18];
    6 D" d; \3 \) R

  52. 2 J9 o! S! Y2 ]  \
  53.         memcpy(buf, mac, 6);
    : K% z6 o* |$ G  J2 W
  54.         memcpy(&buf[6], stbid, 18);9 K1 u$ o1 x) N8 W! S
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" R& i; _0 v& I: Q+ \+ b# P
  56.         if (fd  < 0) {
    2 L( y9 m7 V  C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 L+ D8 @0 ~0 ?% K3 E/ J, F; U
  58.                 return -1;
    1 `$ j" `8 d9 r; }* s
  59.         }
    / r' ]. Y- C  o/ h
  60.         arg.sub_addr_count      = 2;6 g( h: m$ |. M
  61.         arg.data_count          = 0x18;0 E/ M# v: [+ j3 {- i- p0 z
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ; a2 i3 x3 ^7 U. z! @
  63.         arg.e2prom_cmd_data     = buf;$ O# X2 ?; z" r/ x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);7 |. ^3 b' x4 T2 ?. `9 E' N
  65.         if (ret != 0) {
    / _- I& a- i; J% {4 d6 B0 T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 Q. o. l6 i% l( Y
  67.                 return -1;
    & s: h  }5 X1 X3 S, Y$ h
  68.         }
    0 ~: t+ E- t4 t1 x3 U1 r
  69. 6 c4 m8 L) h" G1 }
  70.         return 0;
    / U1 J8 W5 \1 I$ c- @) @
  71. }
    0 p1 I2 I. S8 h/ u
  72. + a+ Y+ K$ P0 N; @- M$ K7 e
  73. int main()8 C6 _0 J( L/ U5 ^0 u$ v
  74. {/ D% z0 u' q; i' A& P+ U
  75.         char c;
    5 a( ^( |& i( \
  76.         int i, macs[6];. m& p0 q* k; R6 F* f
  77.         unsigned char mac[6];6 p$ P. G2 d4 L; C0 g& [
  78.         unsigned char stbid[256];8 a2 e$ A( \5 `, s+ u5 p& F$ l/ X
  79. 3 _) b, B! D) t) \2 c. K& j4 Z
  80.         if (readparam(mac, stbid) < 0)
    & S' V5 @6 ^) k0 a) ?! T
  81.                 return 1;, F: }7 D" J* o1 ~" ~7 ^& [
  82. 3 g2 R) X. E0 v4 t
  83.         printf("Current parameters: \n");+ \, O! Q- @" V8 K1 ?8 W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);5 w% \+ r5 x0 ~5 T
  85.         printf("  STBID: %s\n", stbid);
    ; S8 V" E0 j! M( c5 t* {
  86.        
    ' O$ L+ W! \0 w/ A+ z1 Y
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");, E+ K5 O+ ^, E0 t+ X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 i7 [1 u+ A/ x6 O' n" G. o7 c/ n
  89.                 printf("Input MAC error\n");
    5 l) d' n2 E, D3 Y/ a5 \
  90.                 return 1;
    # U! c8 T: b& w8 d- a
  91.         }
    + q3 P6 `6 r4 s2 h5 I) `
  92.         for (i=0; i<6; i++)mac[i] = macs[i];( r# Q6 R, w! r8 W
  93.         printf("\nPlease input new STBID: ");
    / L* e# v0 J& D" o- `' h1 n( ?
  94.         scanf("%s", stbid);* n& y* N) ^9 O7 r
  95.         if (strlen(stbid) != 18) {
    4 h2 R" Z) E7 v, ^7 g% @3 _; C8 Q
  96.                 printf("Invalid stbid\n");" r( k4 O* y# [7 M
  97.                 return 1;4 s; J- t+ |( w! d' i
  98.         }
    : r* L* D/ _$ t; u
  99.         printf("\nNew parameters: \n");* G, X5 j4 \# p( v% D
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' _. z  p% K- H7 Y5 e( F
  101.         printf("  STBID: %s\n", stbid);
    , \1 }3 Q( M. \' @' j& `5 T2 {- ]
  102. + f7 t7 w1 q  S
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    8 t* C% P0 n& i$ q" n6 K3 x2 W
  104.         for (;;) {+ B! T$ e, v3 C+ i0 z8 {4 N3 D! S$ \
  105.                 c = getchar();
    * y) E5 J) O! I) u( y1 P
  106.                 if (c == 'y' || c == 'Y')) T  p0 c4 `. l5 v( N. X2 n
  107.                         break;
    8 n! ^1 Q% b6 x3 k+ W5 [! P1 i9 _
  108.                 if (c == 'n' || c == 'N') {
    4 N- w; j2 X9 N/ V/ \# |2 {
  109.                         printf("\nAborted.\n");
    # W( S: E! e. P3 N7 n( ?" h
  110.                         return 1;
    ( h: m. ^  a. h; A  Y3 |2 C8 w% z* G
  111.                 }
    + T; c* j% w* n2 |; R4 U
  112.         }. k* b) l% X$ y# q- p
  113.         if (writeparam(mac, stbid) == 0) 3 v0 B! M, h3 ?* F+ A( J4 u  ?
  114.                 printf("Parameters changed.\n");# c' [5 E7 G$ C

  115. , D  @' R* F6 i, X0 W: e- B8 x) W4 O
  116.         return 0;) \8 u5 Q( q! {+ x+ h+ I
  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 5 ]8 U) O* G, D6 W
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
4 D( F  t- U) V& `3 U
你用的编译命令行格式是什么?
! f% g5 b6 M3 T5 U+ U0 z6 G0 _
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-2-14 14:36 , Processed in 0.024371 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表