查看: 16467|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    * i- j4 @2 M" [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    1 f: ]# U6 x1 i% g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% q1 d% U/ y' `- g$ s. x
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 C1 S& V  K* y3 F( t% f% u) v
( t. l2 y1 Y. x1 ]1 ?& N# R  P0 t  O- c1 h+ B! S2 C( e- ?
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?) `2 H( U" d' T+ R9 r# O
- Q/ f3 _" T1 Z, ?7 [
补充内容 (2012-3-8 09:42):
5 A; h  v) B8 E2 P1 V- Z4 khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数* D$ a5 C+ b; Q8 U9 K& A& j
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- C5 N. C' q0 R+ N$ N. P
) Q$ |' e8 l, T1 Chimr <address> <value>. sample: himr 0x80040000 0x0$ c8 l( o( }& u6 j' h2 A* J, x

4 K9 y% T# L0 E" R7 G3 \例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
) C$ Q, i2 N7 H% A' Z' l3 \himr 0x80040000 0x00
$ n$ l' e# n0 D1 q2 ?himr 0x80040001 0x11/ w$ N  l) u  f. R- R
himr 0x80040002 0x22
9 x  D, j. ~9 b: ?2 Xhimr 0x80040003 0x33
3 M1 {* E$ x9 X7 w: {: s  ^himr 0x80040004 0x44
+ T$ }, x* R. H7 Nhimr 0x80040005 0x55' A9 ]3 I& t+ v  u9 B

4 y' K. S0 t5 _' g9 t) bSN也是类似。. O- ~3 y2 A  `5 q0 E6 S

$ @: t& D4 E6 W) |9 w现在主要是,谁告诉我们MAC和SN的地址?. E7 j  u2 i6 b0 s# r
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 4 Y- u- z9 N" k) l
一直想找到运程修改MAC和SN的办法,苦于无解啊

# Y' n+ |+ {, a; M3 w. u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
2 C( y& W4 l  N7 {; k" h  Z6 I  I, A: ?# D7 f
修改的代码早有了。到今天不会编译。
" X. m1 f/ d" \/ F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    3 k' s! C  @& M( B
  2. #include <malloc.h>' r0 q+ V# i6 I+ i. M9 _5 h3 M
  3. #include <sys/types.h>
    4 g* R* y- ~5 z
  4. #include <sys/stat.h>
    * |1 m5 r: i2 L% ~
  5. #include <sys/ioctl.h>
    " a( g4 ^0 a8 D  s+ J, a
  6. #include <stdio.h># ?2 t( p  L, |. I; U% l
  7. #include <string.h>' S7 x3 d" W( i, u* J3 d6 S
  8. 7 Y$ Q* |2 U1 }' @' Q& z8 Z( A
  9. typedef struct {; [( ]7 b/ G* p& j
  10.         unsigned int        e2prom_cmd_sub_addr;; C' e5 d4 x$ O# m& Y
  11.         unsigned int        sub_addr_count;
    / [9 \; v% j6 A
  12.         unsigned char*        e2prom_cmd_data;% W5 p( n! j* h) [- r/ G( L
  13.         unsigned int        data_count;+ B' @' B; n2 E$ V1 J7 D. j: w
  14. } e2prom_s_cmd;
    # {3 ~0 ^; t/ A( J% A' ^! S+ f. \

  15. 1 _6 F) q3 e; P, V
  16. #define E2PROM_CMD_READ 1( d" F3 W$ p" |
  17. #define E2PROM_CMD_WRITE 2! a/ h. h- L7 N8 ]$ i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"2 U) O' }, [5 ~! |. c7 `* A: u, k

  19. ) Z& A: k5 m) v! T. m, R/ e: A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ; i- T- V/ X4 y4 T5 P, V& b
  21. {
    9 u' d0 R: v9 |  N4 n& ?
  22.         int fd, ret;- L; M0 f! h+ S: n4 G
  23.         e2prom_s_cmd arg;
      H! ]) m! n( C3 q# \1 g: h
  24.         unsigned char buf[0x18];% m* O# f2 M1 ~( f* F2 c7 o% ^

  25. * z0 D, h; M  E( _+ Y: ]9 n8 c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - G. R# v+ @5 s( P! m
  27.         if (fd  < 0) {9 l- A/ b4 R- [: h
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 a. h# w- I. R( ]
  29.                 return -1;1 t" |2 Z1 z6 J+ r) @7 [
  30.         }. F) L1 J$ H4 Z5 k& |$ E1 V4 o
  31.         arg.sub_addr_count      = 2;7 F$ j6 H) p0 c, J7 k. `
  32.         arg.data_count          = 0x18;6 ?' v6 r. K/ i) `
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    + E  Z9 c  \/ G9 p
  34.         arg.e2prom_cmd_data     = buf;
    ) s! l% P- Q0 R. ]( Y% Z4 C
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);; U+ N. q# V# s% y- y5 B5 i  N, H+ F
  36.         if (ret != 0) {
    ! ~# H4 ^% ?1 R1 d: d" _
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);; R8 `5 P# I& [) j8 y
  38.                 return -1;- |# i9 M1 R; ~( B+ _
  39.         }
    7 r! V! e( }# T* z9 a
  40.         memcpy(mac, buf, 6);
    . {$ \$ T" |5 |% n
  41.         memcpy(stbid, &buf[6], 18);
    8 Q/ F7 G* R7 `) N# @4 s% f
  42.         stbid[18] = '\0';" ?* c& i/ E' s& h: |& |

  43. ! t9 D. ?, o8 ^
  44.         return 0;
    7 g! ^; d3 {4 X% v% V- V0 ?! d
  45. }
    + W9 _* Y4 I7 m- w2 A4 z5 A

  46. # I  |4 D! R& x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : K7 C1 D' \9 @% J0 z
  48. {
    , M! ~! }4 }7 D
  49.         int fd, ret;  X  r" a+ ]# F' g' p2 n* s5 x
  50.         e2prom_s_cmd arg;) x; [/ C6 }( k) m" O# _
  51.         unsigned char buf[0x18];$ T( w# [# h$ G( f* W. \% c

  52. ' r  n- v/ n1 B0 D1 i% V
  53.         memcpy(buf, mac, 6);
    2 W, K) I6 ~. N+ }; q) d0 R- X
  54.         memcpy(&buf[6], stbid, 18);; S6 `/ E) l+ d$ ]2 T9 d
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' t; F' F# J3 \+ K- c3 i' a
  56.         if (fd  < 0) {4 E, A) J# z3 L4 D$ _" a$ P+ X3 C
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ f$ w8 B5 u" x9 q1 s; Z0 }# c
  58.                 return -1;
    : P3 R$ ]) Y) Y  i# y1 P" \" `, j
  59.         }
      k7 X* u& V- W6 }6 y4 F6 N2 a
  60.         arg.sub_addr_count      = 2;
    4 V; N7 _; }! r! R
  61.         arg.data_count          = 0x18;& x) v- i4 Q/ [" w' N+ l' A# o) M7 S
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # |( l, g0 {& W/ F; X
  63.         arg.e2prom_cmd_data     = buf;
    0 h  w, ?; v$ _" G: j) G! s: t7 d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    , g% _9 g2 |3 p0 _. [
  65.         if (ret != 0) {4 g; C  _% G4 a2 S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; M' Z5 f2 A2 w& M; O5 d
  67.                 return -1;
    $ x+ Z7 l0 f& L# r6 O! N- F
  68.         }
    # Y1 G4 e, E$ W& d0 Y$ b) d
  69. 6 B- Z$ T0 x9 F) |; _/ t9 [) u
  70.         return 0;: E  R  q- K8 V' J# p$ @4 ^& b
  71. }. e! ^0 u6 n: F  N; L

  72. 2 F% R1 c: @3 o3 \5 P5 p- t
  73. int main()
    # x5 R( N  r+ k2 ^0 e+ V
  74. {9 h, n1 K: o% w  F1 ^2 i
  75.         char c;+ o( v7 ^! T$ [0 E' V
  76.         int i, macs[6];6 s2 \9 M3 w( l+ C
  77.         unsigned char mac[6];& d- G  k' i2 W; \+ M* D
  78.         unsigned char stbid[256];
    * P/ E! i7 a* W- x
  79. + B& H' H5 M: q! H5 b# w
  80.         if (readparam(mac, stbid) < 0)( n5 j2 ~1 R9 ?! m
  81.                 return 1;9 a  e* C3 a( }" H( T* @/ Q# `

  82. % c! E& Z, X& |9 v( C
  83.         printf("Current parameters: \n");
    ' u8 d* O7 S0 B# V: N( S' q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. Y( T3 @; |/ N; j7 W9 g3 |
  85.         printf("  STBID: %s\n", stbid);
    # l$ G# O$ O1 e( f2 n1 H
  86.        
    ! y1 _) n) E& }0 @2 S
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");4 z' m+ i3 K" @% I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 J$ e- y. `' }  ?# l0 d
  89.                 printf("Input MAC error\n");
    ; _, ?/ o& Y5 T# e. Z5 S
  90.                 return 1;# n  B! X0 }0 Q( G8 c( E! i% B: s3 d* ^
  91.         }* r7 T! M: C6 Y+ c$ y6 D' l
  92.         for (i=0; i<6; i++)mac[i] = macs[i];; A% q+ i# s1 W% A  S; R
  93.         printf("\nPlease input new STBID: ");
    ( ?% V; o5 ^' D+ w2 T9 O+ V
  94.         scanf("%s", stbid);6 B' C) t, Y" i) Z4 ~, T/ q' f- k6 g6 z
  95.         if (strlen(stbid) != 18) {
    3 N, g. w  o3 z$ J9 Z& N
  96.                 printf("Invalid stbid\n");
      ~  w6 @* [: B! w2 N
  97.                 return 1;
    * M+ u: M9 Y: c
  98.         }
    8 U+ a# R6 c" k8 g. ~
  99.         printf("\nNew parameters: \n");
    7 r+ H: _* R2 U/ t' ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" a/ W: w7 j* u3 n1 c% c
  101.         printf("  STBID: %s\n", stbid);; a  R$ R$ L- Q) Z& y! Q6 X

  102. % d# q& W+ E, S& D/ |5 k
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / W9 C7 e9 }! F2 k$ v% @& ^* ~
  104.         for (;;) {; K% o- @; X/ B- H3 O$ J% q
  105.                 c = getchar();
    8 j2 f% d. }/ z* R! q3 G+ h
  106.                 if (c == 'y' || c == 'Y')
    / O0 S' X% X: j8 K# g
  107.                         break;
    / @; f) E* F7 J
  108.                 if (c == 'n' || c == 'N') {4 o% t: T+ V1 p: L
  109.                         printf("\nAborted.\n");# I7 E# `  @) U/ c! I* v$ H. |. l
  110.                         return 1;
    ; f  r* m3 ?7 g; Q: O
  111.                 }  w. _0 ]0 m; L: W* p
  112.         }- R/ y4 n$ `; d5 e
  113.         if (writeparam(mac, stbid) == 0)   T) N, M" B0 p9 }; N( O4 [; j: E
  114.                 printf("Parameters changed.\n");
    - ]8 v% D3 [1 Z7 \4 R
  115. + A, r' H& v9 n& v$ w9 v
  116.         return 0;9 y; Q! a# M2 m" w
  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 9 b# z( t6 H3 i/ u
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

! f% H7 {- N- F; n4 |- X你用的编译命令行格式是什么?% H9 n. m) h7 s8 m( ~
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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