查看: 17149|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr# O* b$ S0 _' v+ h
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! S! b1 Y$ A  A; E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:( X5 Z: }6 ~( W4 K! B. a( B; [
usage: himr <address> <value>. sample: himr 0x80040000 0x0
1 N2 m1 i$ Y- i' O% g6 m" }) X1 |' i; O5 t
' d  j+ ?; a( c4 C, H6 W& T* ]
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?0 A( E* T, X! b% C" m1 d
0 F% _' |; ~$ ]$ g1 _" T: @
补充内容 (2012-3-8 09:42):+ S$ h+ b+ |6 M8 Y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ u$ l9 J+ _8 z9 Y. }- J- O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% R* M* v; \: N
6 z: x' a. P: q% mhimr <address> <value>. sample: himr 0x80040000 0x0
4 m2 U2 M& I3 O  Y1 @6 f0 J+ _  u0 S
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 n+ \' x% D0 W( f3 h7 ]) xhimr 0x80040000 0x00
6 z5 e7 V! H9 z, X' E- f/ [himr 0x80040001 0x11: e, T8 K" K, \! g9 \
himr 0x80040002 0x22
- H- _5 E' Z. }/ ?0 p- chimr 0x80040003 0x338 _; \) J& g3 m5 U" E$ u1 K' N
himr 0x80040004 0x44( a# H$ d4 Z" _5 q% f0 X  a; |
himr 0x80040005 0x55! v; t7 Z# _0 n1 y5 q4 a( v
! w5 l/ M/ V1 s' V: k0 U- J
SN也是类似。9 ^5 k5 k" E2 s1 f0 i( B5 ]# ~

8 M1 S! o3 i* @现在主要是,谁告诉我们MAC和SN的地址?
+ @  U# b3 {' B# y* i  s5 g
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" t3 k9 I% [/ v1 k( W: @一直想找到运程修改MAC和SN的办法,苦于无解啊
3 ~0 n5 t6 q' Y/ k
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 : Q; E& c2 ?" W
! Z/ n3 h0 ?# c7 u$ `. X
修改的代码早有了。到今天不会编译。
& O) t4 Y/ }' Y( m6 p& a需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / X/ c: P- i% D) c
  2. #include <malloc.h>
    & p& L, X: ]" A5 a' v7 s0 @
  3. #include <sys/types.h>
    , D' E1 C5 z$ q; C
  4. #include <sys/stat.h>
    3 ?1 d4 _6 o" P; Y2 ], p  H6 Y# `0 H" `
  5. #include <sys/ioctl.h>* _3 V  V8 ^2 o  M1 M
  6. #include <stdio.h>
    1 L# V' N9 a$ M0 I
  7. #include <string.h>* E' [& {" p$ D7 l; W" H
  8. 9 j+ w( f' d8 ~
  9. typedef struct {- i8 F8 N7 u1 F
  10.         unsigned int        e2prom_cmd_sub_addr;/ i+ J3 J4 \1 w6 N: _: g7 N
  11.         unsigned int        sub_addr_count;
    + ]' @6 A( S2 m6 g
  12.         unsigned char*        e2prom_cmd_data;" {/ g3 z6 Y: B9 I
  13.         unsigned int        data_count;8 ^5 J" M4 r+ |, z5 I% I5 k  b1 D
  14. } e2prom_s_cmd;
    ( s% b% h+ c& _% R6 U$ T

  15. 1 x$ n6 A. d) ^1 j, E$ A" [
  16. #define E2PROM_CMD_READ 1
    # @; U/ @2 _. J& z, x
  17. #define E2PROM_CMD_WRITE 29 V  q$ o& d/ V" c: {" g
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ) ?9 B: e3 J( U
  19. 2 Z+ j  v& x+ K- ~
  20. static int readparam(unsigned char *mac, unsigned char *stbid), }2 b  }  M( w6 N5 P9 U( N2 b
  21. {: K% t0 d: b8 z6 G$ _! b
  22.         int fd, ret;
    - g3 Q% v+ @! c- u" ~" I. \4 I
  23.         e2prom_s_cmd arg;' z7 H; [& C$ e" e
  24.         unsigned char buf[0x18];
    8 Q" c, m9 n) w9 L, }6 F5 X- g
  25. / t& ]4 g3 C% F  n6 t% F. C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    . K( i# t! c2 Z
  27.         if (fd  < 0) {
    7 v& X: W1 K$ T* q- O/ R7 Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      g& j: p6 |, P& w' A
  29.                 return -1;
    ) R% O& I. U' P6 z4 O
  30.         }$ N& x# v+ K! N) n9 z) K  D
  31.         arg.sub_addr_count      = 2;
    " L1 y( ]$ R( B# h5 }5 q+ ^3 x
  32.         arg.data_count          = 0x18;+ E8 z) w0 N' ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 @! ^( A4 n2 v
  34.         arg.e2prom_cmd_data     = buf;) j+ A. ]! w3 r- }, V
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 M6 r" e" S  W) O8 z* {# ~
  36.         if (ret != 0) {% N7 W- g* S! Y& n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 b" E6 p; X1 Z. l
  38.                 return -1;2 h+ Z+ M; v8 O
  39.         }2 u9 u! X8 P5 p2 o
  40.         memcpy(mac, buf, 6);  g$ |, g8 T/ G8 d2 o, ^
  41.         memcpy(stbid, &buf[6], 18);
    4 @/ O  S, }% O# x! E
  42.         stbid[18] = '\0';% W' `0 l1 t% N4 K" L
  43. 0 S2 p  I# _  ^1 u0 z/ E6 w( d0 x
  44.         return 0;
    6 w5 \! D( l4 }# m8 v9 a
  45. }
    4 P8 M. L) h7 M( j. O0 X2 J' [

  46. ) H. W" X( g: T9 l& P) v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)1 C) u  P4 h3 l9 {
  48. {
    . s, K8 s5 m. T
  49.         int fd, ret;
    8 O; o$ l1 O' d. P. q8 r) A
  50.         e2prom_s_cmd arg;( g, N2 U5 y3 V# A2 u
  51.         unsigned char buf[0x18];! P0 m- H0 n" ~: G9 L6 w
  52. 9 G( u" x8 N- x+ g% i
  53.         memcpy(buf, mac, 6);% i  F+ a' h# b9 K6 d0 n
  54.         memcpy(&buf[6], stbid, 18);  ?2 \% r# a0 g: p
  55.         fd = open(E2PROM_DEVICE, O_RDWR);; d/ i+ m& y0 h2 \6 q6 Y
  56.         if (fd  < 0) {4 h5 ^7 c* d+ w: s/ w# ~6 b5 w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! A( t6 L+ p+ [/ V' D) h( \0 f
  58.                 return -1;3 L2 e# e0 n2 b( x0 C
  59.         }8 Q8 K# N) z8 x4 _3 c
  60.         arg.sub_addr_count      = 2;4 b1 e. v3 i9 [+ v
  61.         arg.data_count          = 0x18;/ L* e/ I8 L* Z% S% |. W6 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ' v/ C8 [( N" P( L  F
  63.         arg.e2prom_cmd_data     = buf;6 ^+ \, \4 G8 v! S7 P4 D, c  R
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' J5 z+ u! P+ S" O% J5 a  y
  65.         if (ret != 0) {
    . R3 Q9 U- R2 O. Q- ~0 D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);7 A; g) T" ]; f0 O* z2 s
  67.                 return -1;# Y# N: h1 c+ Y7 h2 X
  68.         }# p' w% O( b6 x/ }5 V9 u7 y
  69. - X( ^5 J$ h) S& V1 V
  70.         return 0;0 [7 ]  ?0 j- K% y5 W7 U5 `
  71. }
    6 R! \$ ]$ |  a1 w5 h9 x: u

  72. - r+ x$ O' `7 ^/ v( m
  73. int main()2 s6 ?3 ~4 i1 p# j/ m( a
  74. {0 }1 s! U* g+ j. [+ \# s
  75.         char c;$ Q3 g) M2 I# O" B% o
  76.         int i, macs[6];: f8 n8 G3 w, f) I1 s( q. U: G
  77.         unsigned char mac[6];
    + \+ y) w- p( ]$ j7 F/ B$ r; _
  78.         unsigned char stbid[256];
    : G( f1 b( [7 q1 w# n$ o

  79. ) M: H0 l2 g# \" w' s% P/ _8 X
  80.         if (readparam(mac, stbid) < 0)
    3 O! E$ l( R$ {* O. B) P
  81.                 return 1;  q% `1 G, F1 [( a6 h* A. ^

  82. ' `1 n( p3 F2 s8 f3 v
  83.         printf("Current parameters: \n");# x* @2 @! u3 A4 i7 V. o/ x% K  A% g
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: B/ k! Q& ^) O
  85.         printf("  STBID: %s\n", stbid);4 X4 g" n$ U& R* }
  86.           P+ m# C4 ^' Q$ W5 {1 f3 {9 p! G
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
      j: w. z  Z  a& z+ P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + ~* {/ T0 r/ S3 w% N. @& R8 o2 \) ~
  89.                 printf("Input MAC error\n");9 D8 u( D' D, b1 ~$ D
  90.                 return 1;4 ^! q2 B# e( X0 M
  91.         }
    8 L5 q" j* W* l- S5 |
  92.         for (i=0; i<6; i++)mac[i] = macs[i];% f8 @; Q; c9 u+ V
  93.         printf("\nPlease input new STBID: ");% ], u3 c; p4 O  o% ?* Z% u; I: t6 L
  94.         scanf("%s", stbid);# Y7 W0 J8 E# d- ~9 i& e
  95.         if (strlen(stbid) != 18) {9 D8 s5 g6 l) a6 d! I- i
  96.                 printf("Invalid stbid\n");9 i0 I0 J" v) ]0 v4 d  K. U; n
  97.                 return 1;
    $ q3 _  ], m, C( n1 p
  98.         }
    3 h" }1 S2 Z3 t
  99.         printf("\nNew parameters: \n");
    6 Q/ ]0 |* N# G( R# p' B6 S& u
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    " ?8 [7 d8 e4 e8 d  |+ f
  101.         printf("  STBID: %s\n", stbid);
    1 m2 B6 S! f2 E  _4 h1 \% Q
  102. . b3 M3 P( D4 f) d( u- z0 E& @
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 R: l- ^- v, f0 {  f! `8 m$ {
  104.         for (;;) {, ]4 D! H" j( {' O* o9 U; q, q
  105.                 c = getchar();
    " Y4 B& J8 f$ J( a! o
  106.                 if (c == 'y' || c == 'Y')
    1 f1 s4 M2 d" N: D6 d. j
  107.                         break;0 }* U# z: p% s  `" r3 T$ O7 v, Z" ^
  108.                 if (c == 'n' || c == 'N') {2 {) ]; T) X: e5 e' d; u6 S) r0 L
  109.                         printf("\nAborted.\n");
    , |" V# }1 ~  \  n( k
  110.                         return 1;. h7 Q1 U! x% C3 g( F9 @7 |
  111.                 }
    ! E  D6 Y. B! Q& i9 T
  112.         }
    / |( j8 O! }# z: T: g7 {; R: S' B$ p
  113.         if (writeparam(mac, stbid) == 0)
    - T, }  X. r/ V7 a9 {
  114.                 printf("Parameters changed.\n");
    " {. {/ i- X7 k3 c
  115. * j& n# \% L0 I
  116.         return 0;
    5 p- o7 R# g9 R+ G$ o( x9 m. I, M
  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
) l( B7 K- a" F  B# h  K在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
/ h+ g" v) e' P0 t. V& g, Q
你用的编译命令行格式是什么?% ~; T/ n( \. K3 H' b% X+ P; o1 _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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