查看: 16381|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 A8 V5 `% T+ b7 I: c+ {
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 M! t. z( o5 p* L6 D% W
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% Z- J9 {4 q+ O
usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 V+ e- d( q% y
$ s/ B; y5 Y# m4 j6 B% S1 h. s% {' j6 [/ w2 l
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
* y) n! S: ?/ c$ S. c" V& L5 `  ~) l/ F( j* h7 {8 M
补充内容 (2012-3-8 09:42):
6 i. C0 Q2 M# G% H$ G0 C- `http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
' j* I6 O, j' ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 d& ^3 u) n) l' ]+ I- R$ L% v
# S& r; g7 y4 I# W
himr <address> <value>. sample: himr 0x80040000 0x0
0 r5 _; @8 q+ X  w# h! z# C6 C7 W5 F
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。2 a# E/ ?- X% P( C: d
himr 0x80040000 0x00
. _) V2 y0 ?) Dhimr 0x80040001 0x11: S; A7 ?) k( u5 Y% K
himr 0x80040002 0x22
  H+ F/ q  N: ~) u: }0 c) @himr 0x80040003 0x33* I7 ]. {. v/ U& a7 k
himr 0x80040004 0x442 A. ~. }: o% R! a
himr 0x80040005 0x55
9 o) G+ `3 p1 H) O3 d! U
; E" H* `- \4 J3 P  p+ w4 z; S( ?2 `SN也是类似。: K" d' v% E6 ]7 r$ }
1 n7 L7 A, [! X+ Q! g( x: i3 ]
现在主要是,谁告诉我们MAC和SN的地址?# M' u/ n; |. J0 ^, C$ `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   q5 a* f8 l5 ]8 ^  ^3 Y8 o
一直想找到运程修改MAC和SN的办法,苦于无解啊

7 Q* r1 D" R8 w/ \# x源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( Z- @/ R9 r/ D5 z8 k7 Q
% j6 `* f3 h8 o* [9 x9 X) b修改的代码早有了。到今天不会编译。
) v+ n" S7 m) p& P需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + O9 G3 R- O& X* `* ?% s
  2. #include <malloc.h>* k9 {6 n, j# K8 I0 |- \
  3. #include <sys/types.h>
    6 H- e0 V/ u8 v0 j$ y! _9 a, _
  4. #include <sys/stat.h>- n8 N. q% T7 _6 p4 Z: t
  5. #include <sys/ioctl.h>, Y# y, ?+ F8 P+ m! f* u
  6. #include <stdio.h>
    7 P6 ~* y6 I9 x" h! n
  7. #include <string.h>2 r: G0 @! s! D5 z" o. e
  8. 1 a( E- m0 p& ]3 }
  9. typedef struct {" Q, m; @. w2 k" C6 P9 ?
  10.         unsigned int        e2prom_cmd_sub_addr;, a9 F: N1 F+ U, e+ l
  11.         unsigned int        sub_addr_count;
    * f, v( w# U' D9 K+ G1 [0 d3 {
  12.         unsigned char*        e2prom_cmd_data;: c" z7 C7 [5 ~
  13.         unsigned int        data_count;! s4 b1 ^, w% P5 H8 W
  14. } e2prom_s_cmd;/ K1 r2 Y4 K; @* W
  15. % y2 l4 E" a5 K7 K5 p: X
  16. #define E2PROM_CMD_READ 1* C! H1 a- v" ]6 e4 B
  17. #define E2PROM_CMD_WRITE 2
    ! O" N2 c. ^3 R3 k5 q$ l" a' P* E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    $ l" f0 H* d: t! O# s" Y) K) E, i
  19. , E' j! E/ x3 u( j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 `3 I* c9 C, q! ^5 N5 l' F
  21. {" v, h# V, z. B" n
  22.         int fd, ret;
    7 m. g! f: T% B* ~1 z  I9 k, v9 R
  23.         e2prom_s_cmd arg;
    : n, D3 P7 N5 I1 J+ c
  24.         unsigned char buf[0x18];
    " W5 T1 R- I2 k! U3 P- I

  25. " ^8 g& k. W9 V3 o3 x! f6 Q+ ^& Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; ^3 v/ B0 r% @8 W
  27.         if (fd  < 0) {
    9 F/ A8 `0 e. Q# t( A0 q8 p
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 y- B0 p0 ]9 A7 k& ]- G
  29.                 return -1;
    7 Y9 g  b- c( j; D! o* M
  30.         }
    * J8 R' C. M6 G7 I
  31.         arg.sub_addr_count      = 2;
    ; d: M# h( o7 h3 k2 @% {; N. F8 D
  32.         arg.data_count          = 0x18;
    4 Q: x7 M6 g0 p' ^9 Y
  33.         arg.e2prom_cmd_sub_addr = 0x290;+ U8 [) @0 b/ f$ A
  34.         arg.e2prom_cmd_data     = buf;
    : q7 Z' D6 {0 p) W
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);) U  m+ O; p4 c* y1 y" ^- f5 e
  36.         if (ret != 0) {
    # J% D0 U2 t0 P& |) r! j+ W
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);. ~6 y' u) ]! I9 `
  38.                 return -1;
    $ s! {5 N' ~" Q/ _$ x
  39.         }$ Q' V" h0 P, j* ~( G  P5 a: i) C
  40.         memcpy(mac, buf, 6);
    ' F0 ~  Q. Z7 r" p7 q% `( a8 M
  41.         memcpy(stbid, &buf[6], 18);
    . U; n# W8 M  S: ?
  42.         stbid[18] = '\0';
    % m! _4 Q7 h' n. c+ T$ o& g1 R$ C

  43. 6 r" O' A5 g  V: Q; P5 T
  44.         return 0;" l9 u7 \* p: `( T
  45. }
    9 u1 `$ {5 ?+ T6 J1 G& I, \

  46. 6 S! N3 H1 x7 T! a& A6 w4 p4 d
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! F* T6 o* a: A% [% ]
  48. {9 c4 g  L1 s" ~1 H: Z7 k
  49.         int fd, ret;* u( u( H/ @% J& Q4 ?+ w, w! c
  50.         e2prom_s_cmd arg;( a, {! x8 c  _
  51.         unsigned char buf[0x18];
    . q. m3 k* w) C0 Z% R7 z

  52. - d3 z& A  H- r. D! Y( a1 }
  53.         memcpy(buf, mac, 6);2 [* z6 T$ c2 \* ]4 P
  54.         memcpy(&buf[6], stbid, 18);
    ' S4 m' O- x, f  x# ?& ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% ~1 G( w+ K# S# |; d
  56.         if (fd  < 0) {$ u9 B1 E! ^. d. I* L+ O$ O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* j* j$ d; k& u2 U
  58.                 return -1;
    # i" I# t- ]1 e$ \& U- N+ q2 j
  59.         }3 H' k( {: U- J( I
  60.         arg.sub_addr_count      = 2;) M7 a+ Z0 I: b7 P' w
  61.         arg.data_count          = 0x18;0 d5 ^  x7 D; r- _
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + N" |( X: \, |) m6 n' q/ e. E  d
  63.         arg.e2prom_cmd_data     = buf;4 o/ s1 M' K9 K( Z& g4 u, D) t  \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ s6 o7 p* `* I7 w" n' P
  65.         if (ret != 0) {, v' J0 Y  I# \$ f! `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 R$ \! h+ B- {, s7 R7 G# q
  67.                 return -1;
    1 T; K$ s; l/ n' q9 E* ~
  68.         }1 H. J/ \( T' p' {4 M
  69. 7 i* E! R) {7 R6 N! w
  70.         return 0;
    2 X  [: _/ `8 F% t( g
  71. }
    # K. \: w0 \* |. f+ ~) x/ o" }

  72. 3 |) y7 B2 n5 H. V9 y8 }
  73. int main()
    3 U- ?( d. S! V
  74. {
    5 @" |% D3 f" q) e& Q5 B9 Z
  75.         char c;4 k& a. V5 Z: o3 l( t' S, f
  76.         int i, macs[6];; z9 E* V8 E6 ?1 k
  77.         unsigned char mac[6];
    / h" H( y) s9 H7 t0 p) N
  78.         unsigned char stbid[256];* k% k! _8 U; A/ F, V
  79.   {+ H& G' N+ K1 ]7 g1 u( H5 Y- U
  80.         if (readparam(mac, stbid) < 0)
    $ l) N& c5 V8 T$ e, G5 z
  81.                 return 1;5 D4 _8 k' C6 o& Q+ n* u# e
  82. 5 Z: ?& \2 s/ ?1 j# a
  83.         printf("Current parameters: \n");3 a8 s( r7 B( m5 H8 K# w, ?
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & f# u! N3 r4 d. g0 y
  85.         printf("  STBID: %s\n", stbid);
    ; @5 `) g" P2 {, }% G4 X
  86.        
    ) ]/ V  \. |1 z0 p5 T6 i
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");) G3 r9 ^. ]& ]' V+ u# _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    & L3 B) m& P. K1 |' ~+ M( {
  89.                 printf("Input MAC error\n");
    6 D& G8 r0 ^% O4 }4 `
  90.                 return 1;
    # S' {! x. L$ e# H' h
  91.         }  |2 k% [3 s1 l$ A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 @- z; b: X. f) J
  93.         printf("\nPlease input new STBID: ");* B  A6 @/ l) f7 H, I8 X
  94.         scanf("%s", stbid);/ Y# e0 w9 G' b
  95.         if (strlen(stbid) != 18) {  L; n/ j6 {* ^9 R
  96.                 printf("Invalid stbid\n");" u. X% r* U. q5 ^" x
  97.                 return 1;# n- }/ b  h! m3 E7 ]0 @+ i) m
  98.         }) T* p( J) T1 C, j4 e
  99.         printf("\nNew parameters: \n");3 N% T& `( m4 N! x
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 s, o% c; W! ]- ]( R
  101.         printf("  STBID: %s\n", stbid);
    2 E5 {; x& J. K" w/ n' e6 Y. N

  102. , [2 w: c# `; o# ~
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 N5 C+ g* B$ X7 I) O
  104.         for (;;) {
    * @5 Z3 x1 e7 Q7 k
  105.                 c = getchar();* A- V* c7 I* [1 V
  106.                 if (c == 'y' || c == 'Y')! B. V' l& u0 ~/ X7 b0 s
  107.                         break;
    ! x# y: o0 j0 X. q; C: x
  108.                 if (c == 'n' || c == 'N') {
      R" q1 `: w9 J
  109.                         printf("\nAborted.\n");2 m6 _; p, f2 W9 m
  110.                         return 1;. o0 Q5 L. L, u( a& |5 E5 X3 Q
  111.                 }
    - |* A  J3 D8 a; V
  112.         }
    * S. \( l. B" P
  113.         if (writeparam(mac, stbid) == 0) ( h0 }& k  |- Q7 N
  114.                 printf("Parameters changed.\n");
    ) C! j  h; T' I" o

  115.   r) B$ I: m+ H: f
  116.         return 0;$ x4 U0 R) H* Y# S7 W; G8 G$ k) N
  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 $ X7 X8 r9 T$ Z# X4 H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! K! G+ i6 o$ \+ z' P. c! ?, U你用的编译命令行格式是什么?! H( G# D, a- f* @: y( ]8 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客服返回顶部