查看: 16962|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 f1 |; F8 G$ \) A/ \7 c
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig9 x6 X$ u/ j9 }& Z  H; u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- z8 T+ c, X/ a% O! \# ousage: himr <address> <value>. sample: himr 0x80040000 0x09 b0 }% n8 z' h3 ^; }; V3 m
1 n* G. A2 d- c$ l% u
; Y" h" m; z$ w
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% ^' d. P0 b% f# M8 [) G) b

8 Y; V: L* \3 m( g补充内容 (2012-3-8 09:42):
" }6 a7 P3 N0 z5 ^' Jhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数1 y$ ~* Q6 ]6 p5 _( u
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
' }  `( m/ K0 [4 k
: u" ^( Y, z$ J" L, Hhimr <address> <value>. sample: himr 0x80040000 0x0+ u* ~, g( X1 ]7 U3 ]0 i

' m# e  c, u5 `3 d+ }) _例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ Y; u# V" k8 R
himr 0x80040000 0x00
( E$ N& }6 i1 f6 e# P3 rhimr 0x80040001 0x11
& {. w* g" R2 Ihimr 0x80040002 0x22, V4 e6 G7 W  l  y7 m' I
himr 0x80040003 0x33
, m- Z1 i6 h! |3 t* Dhimr 0x80040004 0x44
6 f0 `) A* ~# Z) \6 W* s# ^$ [8 Ihimr 0x80040005 0x55
) F# Q( u. v' [. N+ N+ d$ ?4 v/ C( P
- e# Y+ M0 a3 [* S7 Y5 rSN也是类似。# V: ~9 n3 a& x, c( T

6 [. n; g- a( p* S现在主要是,谁告诉我们MAC和SN的地址?3 p' W/ E/ }/ U7 Y* t- o
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 {0 y/ r+ J: w& {, q! {' }
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 @8 s; p- }- B: {2 \. F5 A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
# h* A7 }# E8 D- N: Y
5 U# S- B! r% U- R. J# T7 q' w修改的代码早有了。到今天不会编译。
% y* V# b& r% z' h' t, \; U( o6 k4 N2 a需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) {& o5 J2 K0 C3 s0 l# `
  2. #include <malloc.h>
    , h! u0 E$ S0 h( u; C/ F
  3. #include <sys/types.h>
      Q: v( D7 K) @' B& U
  4. #include <sys/stat.h>' E+ c" x( @( W2 \+ M5 O& v% s/ E# X
  5. #include <sys/ioctl.h>( L) n2 ]6 m* b4 t
  6. #include <stdio.h>
    1 j1 H' @/ l* h. ]3 H
  7. #include <string.h>
    8 B9 w% W8 T8 [# O* T) N
  8. 5 f5 I4 u4 J+ }( B. F! n
  9. typedef struct {
    . s4 D4 z( h! ^* d  a
  10.         unsigned int        e2prom_cmd_sub_addr;0 c; D, e2 T  z; p2 K- ~/ l  u
  11.         unsigned int        sub_addr_count;
    ! P$ L5 v, ^, [
  12.         unsigned char*        e2prom_cmd_data;% x0 P+ Q/ l) t
  13.         unsigned int        data_count;, ^7 V" x  I8 T
  14. } e2prom_s_cmd;
    ) k7 y7 ~5 @# w
  15. ) p+ j" w1 H" f2 z- X0 G
  16. #define E2PROM_CMD_READ 1, m5 w" R1 P! b3 U( T, `
  17. #define E2PROM_CMD_WRITE 2
    5 x  Z; u& W4 Y( ^3 y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) |( y! [9 p$ a( R0 p0 T0 I

  19. ) G2 t! @+ T) W# Y; M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    6 }5 |& D( j6 K8 C
  21. {2 ?% E* q+ ~& ^, A+ _
  22.         int fd, ret;  J8 W  k5 D3 _$ A0 }. O
  23.         e2prom_s_cmd arg;
      B8 J& c. Y, C) }6 q" \+ \0 X
  24.         unsigned char buf[0x18];  C2 O; x! U8 c, o9 N3 r# o! m

  25. " x/ ~/ f# q, n( ], t6 V& \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# o4 t! q* B- A, E) n$ @7 m
  27.         if (fd  < 0) {1 b7 s5 ]( R: ^4 _! e
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 S0 b' j7 }0 g% C0 j0 S
  29.                 return -1;5 Z3 x* `& y. s9 Q
  30.         }
    ' _6 d# G9 x+ q1 P2 a
  31.         arg.sub_addr_count      = 2;
    - h# u( u% \1 [) x4 Q
  32.         arg.data_count          = 0x18;  o9 E/ y/ J8 |% b
  33.         arg.e2prom_cmd_sub_addr = 0x290;: h9 i- }) @" M# F4 g  m
  34.         arg.e2prom_cmd_data     = buf;
    3 a' _- h! i3 Q% R; q. {% g
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' c9 }! @# l" T# \
  36.         if (ret != 0) {
    . Z0 c4 ?/ I- M- w+ S0 `
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);/ C7 X1 B8 ]% J  y+ `4 X1 f
  38.                 return -1;; z5 U( q1 q5 N6 C
  39.         }
    " q! n7 K! p) _' {- I9 S
  40.         memcpy(mac, buf, 6);! ^% k5 t! C! E1 k9 ^
  41.         memcpy(stbid, &buf[6], 18);- _* r3 j2 H! Q. {4 E, M# n  D
  42.         stbid[18] = '\0';
    ! i( k; e2 }8 N9 |
  43. 9 x! \# h9 N+ [' {& t- @* p
  44.         return 0;; m- Q' `& R0 ^2 X  p
  45. }
    7 x+ R6 G( b2 X5 ^
  46. - C" h, v4 }5 p+ j* I% @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 o" g: o* h7 f; d0 x2 y
  48. {
    " G# E) n9 h) W: U  L' |
  49.         int fd, ret;
    / i6 J, f" u2 v# V# J) `9 i1 K
  50.         e2prom_s_cmd arg;* C9 J' B8 A& u8 ~% F
  51.         unsigned char buf[0x18];! E4 i1 [  p( _" v4 \# l9 n% p
  52. 0 {6 W& A. S& b* Y
  53.         memcpy(buf, mac, 6);' r! w0 y7 a$ V$ J0 q" {8 v
  54.         memcpy(&buf[6], stbid, 18);& d9 X  c+ F4 O4 I7 Z$ V+ _/ b4 V
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    6 Q8 ]# \9 `, F5 N3 F3 \, M
  56.         if (fd  < 0) {8 y" B6 O+ b% a( U/ w& Z: ~
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 G. K7 p1 E: S! k$ D& u
  58.                 return -1;
    * `: ?% ?0 J* P# B0 B( `
  59.         }& B. L9 X& d2 h8 _% g& K
  60.         arg.sub_addr_count      = 2;
    , m# Y& B' H& l: A. U' y$ q
  61.         arg.data_count          = 0x18;
    $ B) F2 Y; U5 }
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 L7 Q5 {6 I" S$ r6 {3 w, ?
  63.         arg.e2prom_cmd_data     = buf;/ K8 |6 F+ w, H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ r% K/ w+ U" K: q/ K
  65.         if (ret != 0) {
    & Q1 k) O7 |. u4 v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " s1 U4 f" V4 U$ o5 I
  67.                 return -1;% J, B( J* e. s$ u4 a
  68.         }! T; G$ `: z/ p  c5 M+ E
  69. ; n3 C, m: G$ |/ D
  70.         return 0;
    * [1 w1 ^1 f( {# m2 Q3 H
  71. }" ~* f% h4 t9 ?  Y  A3 R
  72.   F' Y* r& y+ t# u2 n/ [& d7 }, c
  73. int main()
    " l" a1 g. S* g/ b. l5 U4 t/ o3 D
  74. {# X# a& a) I) ]/ N9 m0 l
  75.         char c;
    - r) |9 }' z) ?4 A
  76.         int i, macs[6];0 J: `: V6 l; h9 ]* {6 d
  77.         unsigned char mac[6];
    4 ~; u" k, k. ?( j' }
  78.         unsigned char stbid[256];
    ! q# M3 S# X2 F+ L4 y

  79. 7 B, o5 W- @: G7 {% a, `. o
  80.         if (readparam(mac, stbid) < 0)9 b* g( W2 }+ ~1 V& T
  81.                 return 1;
    5 V0 H1 X$ N/ k+ ?5 s% d; H

  82. 1 f& T- s( ~3 ^" h0 H
  83.         printf("Current parameters: \n");
    9 j- L  a: S- O, ?* B% K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 k) `7 X" Q, B
  85.         printf("  STBID: %s\n", stbid);( [* |( c* J; P6 o' J. f, J
  86.        
    : q6 D( J  I8 e5 K. G- f) `5 q
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    # q& |, U% y( \; n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 U. F" L  @8 L; f( v
  89.                 printf("Input MAC error\n");
    8 ]1 |# p- U; U/ D6 M) H
  90.                 return 1;
    # S( J. {2 P( l. u- s3 Y
  91.         }* D; S) L$ ?5 H/ ~" n, g0 X$ O; J
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - B4 m/ d5 J+ Y2 _4 C
  93.         printf("\nPlease input new STBID: ");' m! i. s1 `% M2 |" C9 M5 u
  94.         scanf("%s", stbid);
    # l$ \( ?) Y$ V  d
  95.         if (strlen(stbid) != 18) {
    : ?4 v3 G; E" A" S$ [
  96.                 printf("Invalid stbid\n");
    , ?0 K3 Y2 G+ I( Z9 w
  97.                 return 1;4 o/ t5 w1 j+ [$ r# G
  98.         }
    ! @9 M% X5 l* F* |1 e" E
  99.         printf("\nNew parameters: \n");
    0 Z* ~2 M: L$ s$ Y, ?0 {9 l" \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);% Z1 o( k4 f, s( E
  101.         printf("  STBID: %s\n", stbid);
    1 w4 Z* c" w8 ?0 |7 r3 Y
  102. ! I( e: q  x9 v8 |) S6 _1 E
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " L1 K5 l& v: O0 i( S1 ^" X* S
  104.         for (;;) {
    : n" I7 u7 d0 Q5 C6 a( K8 }9 ]; F0 u
  105.                 c = getchar();% r: C/ L: |9 j) r
  106.                 if (c == 'y' || c == 'Y')
    , r0 B2 O; h$ M6 ~3 N' n
  107.                         break;
    3 ?# m/ Y/ |/ t
  108.                 if (c == 'n' || c == 'N') {
    * H: m; x9 x7 ?( D+ c8 T" C
  109.                         printf("\nAborted.\n");
    , J+ O) B( ^/ A) `5 B2 r+ E5 [
  110.                         return 1;
    & D( s: T: o& W
  111.                 }
    2 w/ Z8 ~7 ]$ V# a5 M
  112.         }
    " {1 Z! w& L2 ^. ^, f1 y8 Q. h
  113.         if (writeparam(mac, stbid) == 0)
    . s6 j. `! {6 g) |, \1 I
  114.                 printf("Parameters changed.\n");
    ) w' M  {4 |* q

  115.   ~# T. V' w3 ^# U9 m! b/ g
  116.         return 0;
    1 k2 }2 C. n( Q
  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
( {* T, n+ U9 G" v% J( T6 _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

* h4 C9 m' \* z  F3 t, b你用的编译命令行格式是什么?/ [) j5 U9 A% `# ?$ r# W
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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