查看: 16446|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    # _( ~& d5 w, n: O! ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 W' v0 e$ q4 k: c' h" M1 }2 v
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
# V' O9 {: T# H% H: C3 Ousage: himr <address> <value>. sample: himr 0x80040000 0x0
- I' }: T3 h; h/ B6 e
9 H6 d( E+ K% M2 d' Q6 g5 Z8 w8 v  B$ ?; B. u* X
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
9 k$ g' V# _/ S
5 M& S# G% w9 b: S补充内容 (2012-3-8 09:42):
  E5 C; v3 W8 n- {9 x9 Q2 c( s* ohttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ h& E$ b; `! h这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
, G( W+ A, ^" ~( F" E; f; }* H" E) Z
himr <address> <value>. sample: himr 0x80040000 0x0
+ f4 N' N* n" W' J) j  R7 r+ ?8 i* _0 j$ T6 \; [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
1 E& c1 w( M9 p& o  h& ]* ^8 M: xhimr 0x80040000 0x00& \2 L) j& X3 c3 B
himr 0x80040001 0x11
: i4 I2 ~$ y; k7 F$ Ahimr 0x80040002 0x22
( q0 ?0 ?4 x  qhimr 0x80040003 0x33* s! {$ ]4 X7 y4 {! t  \  M1 h
himr 0x80040004 0x44
; u1 z0 M$ B$ I; N1 xhimr 0x80040005 0x55. b5 h# u/ S* b9 K5 A/ Z( s* Z7 J8 F

; A& u' P2 I9 H5 U1 s3 ESN也是类似。
  }8 Z5 P4 @: [+ U( O
! G) v% O; }# P! ^现在主要是,谁告诉我们MAC和SN的地址?0 x4 S1 n( W$ |" ~# M- Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 N+ r. t* n7 d一直想找到运程修改MAC和SN的办法,苦于无解啊
- Q6 t1 \4 m+ ?1 }9 `* x
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ; E# j9 w  A" `$ s2 |. f

" A- h6 S( Y3 O5 `# X修改的代码早有了。到今天不会编译。% ~/ I7 q6 q- _) i7 @+ r
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' }& G" f4 ^" M) |! }" `
  2. #include <malloc.h>" j2 {8 ]) F9 l" Z* i3 C. ~
  3. #include <sys/types.h>; F- [. {* U  u$ z' ^/ V
  4. #include <sys/stat.h>! s# B4 l% p1 i% i9 ?7 p# T
  5. #include <sys/ioctl.h>
    ( q1 S1 i8 o  e9 Q. h: K# u, K9 i
  6. #include <stdio.h>& x: A. U; W) b' z; E1 d0 `
  7. #include <string.h>
    : H- z" j1 X0 c( M% Z& g7 l5 q
  8. $ d) L# [# H( x8 d+ v
  9. typedef struct {
    8 B/ K, B1 g4 ]5 p( G- Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) E; E/ E% x! U  u/ s
  11.         unsigned int        sub_addr_count;7 ]3 b( Q- v/ k8 \
  12.         unsigned char*        e2prom_cmd_data;5 ^5 X- Q  Q% x9 u6 W! K. _3 a5 a' x
  13.         unsigned int        data_count;9 ^6 G4 A+ Z+ }" Z8 Z8 O
  14. } e2prom_s_cmd;, Y% N8 M" S2 U3 r1 ~2 R6 L1 B

  15. * X# i; z; Y; i- T% x6 I7 `7 P
  16. #define E2PROM_CMD_READ 1
    5 ~8 G8 s% F- c2 {, _2 E: D" T
  17. #define E2PROM_CMD_WRITE 2
    - D- p: }# b: U. ^: E7 _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    8 _8 J+ ?: n- g7 g8 K/ e

  19. , G$ E" v6 {  C! M
  20. static int readparam(unsigned char *mac, unsigned char *stbid)7 O8 @2 C5 y" Q+ a6 [
  21. {
    ; s4 R& e0 \7 f. u  d% \8 n: t
  22.         int fd, ret;
    5 A6 A6 l3 |: x# Z. v  \
  23.         e2prom_s_cmd arg;0 ^7 }. G1 w7 C! u- q
  24.         unsigned char buf[0x18];6 |" N/ q( B% D( `
  25. 4 `# D* r5 A: Q4 L4 I
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, q/ T5 D' f3 I$ c! p# I
  27.         if (fd  < 0) {
    # E$ e; l9 j, A5 }, A8 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 V4 H8 R1 `3 J
  29.                 return -1;
    ' E  i* _- R* V2 p& A7 j* q! D
  30.         }
    % U, y/ Q1 D6 p; ~: R
  31.         arg.sub_addr_count      = 2;% {  J# o" e4 L4 Q
  32.         arg.data_count          = 0x18;# A  Q. m4 X$ {+ y$ {! S( B# {3 K: r' G
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 n( W% _* A2 N/ X3 g# R
  34.         arg.e2prom_cmd_data     = buf;
    1 G' d- `) A+ `, ~
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 j" j2 k5 z0 Q% Z. p
  36.         if (ret != 0) {
    ; t) }# T5 f5 ]0 c. n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : X2 A: S8 O9 Y2 w
  38.                 return -1;& y& \  Z0 P( P1 Q4 `7 q
  39.         }
    & v8 W/ V' C+ G  Z$ O6 s5 D
  40.         memcpy(mac, buf, 6);" ^5 }7 e( H" b; ]  N
  41.         memcpy(stbid, &buf[6], 18);
    ; \. L# A6 J3 p0 ~; S2 {
  42.         stbid[18] = '\0';% J, K0 h) h! p& l

  43. 8 f, f/ d1 W2 I. Z( L
  44.         return 0;
    8 ^! Z8 P( F+ Q) p8 X5 K1 i; S
  45. }) J1 T( o% O8 F/ N$ Y' o6 v
  46.   g, d2 H' e- k. R0 Q9 y6 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid), F0 k. ~" m# D, d: o* b
  48. {! c8 {+ r+ }9 O0 N6 v5 V2 |9 Q
  49.         int fd, ret;# G/ Y* o' |& A/ R+ ]3 h% E
  50.         e2prom_s_cmd arg;2 `+ I# d+ b5 ?& {0 @  }
  51.         unsigned char buf[0x18];; \, k0 R2 S5 k" o4 Z2 D

  52. : S# O7 u$ H/ R  Q4 [) v
  53.         memcpy(buf, mac, 6);
    & V2 M1 F, q5 W2 G: {3 c' X5 j
  54.         memcpy(&buf[6], stbid, 18);. b) Q, ?) F, G; {
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; m: S( Z/ H% o) a5 g4 Z9 w, z# W
  56.         if (fd  < 0) {
    & O4 k$ t" s: w. ]# U
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 ?3 Z3 I# n* M4 a1 q
  58.                 return -1;' J* w( q* ]& x
  59.         }6 u: `7 E  m2 R5 r
  60.         arg.sub_addr_count      = 2;
    6 k% @* Z  Q/ x
  61.         arg.data_count          = 0x18;2 e- V" X* F# \. D3 S2 W1 T+ Z
  62.         arg.e2prom_cmd_sub_addr = 0x290;# W( S  u- U4 e9 x0 f- p
  63.         arg.e2prom_cmd_data     = buf;4 e& X; g( ]3 i9 L' s8 X2 P. o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & n0 {# E7 a% a& B$ h
  65.         if (ret != 0) {5 [# c5 J/ f3 Y. P, ~( w7 Q
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);$ s# a& `, `1 E1 q$ B7 |- Q
  67.                 return -1;) H: n* u- H% e6 k, v% d
  68.         }
      A8 Z" M0 |3 L# b- _1 c
  69. 2 N- k- v0 S: c% H$ H3 b0 t+ `' N
  70.         return 0;+ d( {- Q  E9 X5 W1 a
  71. }2 h* W6 G7 @5 Q; r; {0 L
  72. 2 b2 C$ n! n. a" X
  73. int main()& C7 N4 p6 p$ v0 ?/ `4 d
  74. {0 Z9 S' B1 f( b6 n9 O; k
  75.         char c;& h" q) I& l- K
  76.         int i, macs[6];
    ; \) w( P$ ^, E, U# U! M
  77.         unsigned char mac[6];
    # D0 w0 l" v1 ~8 p( o
  78.         unsigned char stbid[256];
    8 U3 U  r- Q6 G, u0 Z! U

  79. ( ~& Y! ?+ k3 E0 I5 y
  80.         if (readparam(mac, stbid) < 0)
    + }) n' s9 Y; J, W& d) F$ L+ c
  81.                 return 1;
    " o' r! D- i* \( T! s

  82. # Y% z% m+ e$ }$ x8 z
  83.         printf("Current parameters: \n");
    1 V8 V5 `# H: I# @. `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % D2 M. y, E6 W8 k' K' a- ^
  85.         printf("  STBID: %s\n", stbid);& w* \5 _3 Z) Y
  86.        
    5 B0 s% R2 z- f  W+ v9 x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");* M, [1 i5 H1 A0 ?
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : ]. L; l. ^. g
  89.                 printf("Input MAC error\n");
    $ L% |& U( W5 H( f
  90.                 return 1;
    $ F, ~. H: K% k; J- Y" B
  91.         }
    0 j2 ^# {$ H& n4 O( S0 d" O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    7 y1 E) o1 R( q4 E8 f; }
  93.         printf("\nPlease input new STBID: ");
    ; s! Q: t. m4 Z7 _
  94.         scanf("%s", stbid);( |8 U9 q$ c1 i5 W3 y& c+ F
  95.         if (strlen(stbid) != 18) {
    % g- M8 I9 w3 a. T6 S! l
  96.                 printf("Invalid stbid\n");
    + z1 k+ b  ^! }5 y
  97.                 return 1;
    5 d# h7 Y, t; o9 u7 q& C: _! r
  98.         }& b) `1 t2 j: [
  99.         printf("\nNew parameters: \n");
    4 ~9 [& V! l' A
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      D% i: k% s. M6 D6 ?
  101.         printf("  STBID: %s\n", stbid);
    2 V& [- P) G5 R- c* d

  102. ( q$ v& n- c/ j) r  f
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    & W5 J8 w5 l* k6 b
  104.         for (;;) {
    4 J! t6 z" m) w
  105.                 c = getchar();
    1 k4 z1 t2 o( `/ v0 `' Y
  106.                 if (c == 'y' || c == 'Y')
    + p1 Z: X- [) x* l1 j& I
  107.                         break;4 z! f3 A# D# m- a5 s6 K) x
  108.                 if (c == 'n' || c == 'N') {
    . f) ]! _2 [4 `7 [$ j$ E# Q
  109.                         printf("\nAborted.\n");: A% X6 T1 o9 y8 N9 T& N) q) ~5 B
  110.                         return 1;
    . J1 X, s. ?6 T5 A
  111.                 }$ s1 m/ _" p) _
  112.         }7 f1 Q9 M4 ^  c6 L
  113.         if (writeparam(mac, stbid) == 0) $ f6 G$ a* [8 l0 C/ r, L2 N: E
  114.                 printf("Parameters changed.\n");
    ; n7 C. V' Q5 K4 }. c6 V$ E! Q
  115. + Y4 [$ }0 n2 {  D2 F2 i4 t, j; z
  116.         return 0;
    4 d  \- y( c7 R1 E
  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 ; Z1 N  Z  Y' I5 D3 ]2 ^; \$ {
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
% [( C  W+ t% @" `
你用的编译命令行格式是什么?
! p" z# _% j1 N/ k
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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