查看: 16300|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr2 N5 o' E( |8 w! Z& S
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ F1 L: g! u" k! X) o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: p# I4 ?4 E" S  H2 F) h1 q
usage: himr <address> <value>. sample: himr 0x80040000 0x0* E2 F1 R# I; E3 n( o5 c
% A9 G8 V- e1 r; _8 E2 H& G$ z
7 Y: y4 o2 G( u8 i
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
# S) ~! j5 l6 P% C
8 y2 t* k  v, n6 r4 j补充内容 (2012-3-8 09:42):
+ K& }/ T& e3 j& N/ Vhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
: e- ]( w+ ^0 q% ^: q3 A7 L这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- f& ?& F+ q  b4 C0 J  ~0 v& D, z( r
himr <address> <value>. sample: himr 0x80040000 0x0
- e& w! l! q$ e9 l
9 x: V' G, M3 p- e+ Q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。+ D4 C" [+ T0 I
himr 0x80040000 0x009 P# H! w& b0 c% C
himr 0x80040001 0x11/ x3 Z; `( y6 m. F$ H
himr 0x80040002 0x22
- X* b9 d$ h* @" z. bhimr 0x80040003 0x33* g; Y  h6 `. h$ C
himr 0x80040004 0x445 j2 E5 j( ^5 S
himr 0x80040005 0x55
3 r# Q' `+ D) n  c; ]
/ ?* r8 R+ _: d# X2 HSN也是类似。
( p2 L$ f3 W' o7 a+ p) E* G
$ c7 \" |/ D3 c$ h现在主要是,谁告诉我们MAC和SN的地址?
* P3 m( t; E4 L* E4 l" e! S
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& s1 n" n( ?6 S/ b$ p, L; U一直想找到运程修改MAC和SN的办法,苦于无解啊

: }9 h7 U1 ?' r7 e- H. k0 R源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ' U) Q6 ?9 c9 @/ _; v) J" S6 O

1 h. {* c! n" N. _1 q0 x; V修改的代码早有了。到今天不会编译。& |7 D" h0 S0 J' _
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 U$ D1 }9 x! y* @0 R
  2. #include <malloc.h>
    3 C) g9 \  z, B! S
  3. #include <sys/types.h>
      g; e7 f( q; A; y# A1 ~
  4. #include <sys/stat.h>
    ' a0 s* s" g2 H, _0 }$ m- l
  5. #include <sys/ioctl.h>. E/ v# C: V- e0 S7 S
  6. #include <stdio.h>, j  p) w  e/ S/ S/ W+ q8 }) i8 C+ Y* h
  7. #include <string.h># G8 t# Q% L4 i5 {& j6 w/ S: X
  8. + R& \: g5 Q) L
  9. typedef struct {
    9 u7 n5 n2 B8 g1 ?
  10.         unsigned int        e2prom_cmd_sub_addr;
    . u6 m# t# A8 {3 \+ ?, P/ O
  11.         unsigned int        sub_addr_count;& Z+ A! ?* e9 b* Y
  12.         unsigned char*        e2prom_cmd_data;9 B* N. l* a% S# K1 T
  13.         unsigned int        data_count;/ `9 t( E6 n# \
  14. } e2prom_s_cmd;. Y* n( M& L) Y' t7 U; F8 s% p

  15. # g, f; k8 v5 S+ D5 A% q( k
  16. #define E2PROM_CMD_READ 1
    , N/ l' o, [9 b& N4 _. j, ~) i
  17. #define E2PROM_CMD_WRITE 2
    , v, J6 z4 |% X$ T; h! c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  {3 r# U% B) R. A
  19. % c) T. v! r5 o. S
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) e7 x0 O8 d3 I" [: G, ~  }
  21. {( X3 }5 k. I2 |3 N9 U; H& Z
  22.         int fd, ret;, k5 K+ }6 `  P: J
  23.         e2prom_s_cmd arg;
    & M( q  ^# g- E( u
  24.         unsigned char buf[0x18];% r% e# D$ ^! T  g. H+ l  u; A

  25. , U/ d4 ~# |7 J( b. [" S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 @  \$ F, r# P7 i* c/ P$ o; v! c
  27.         if (fd  < 0) {: d  e5 a" G1 X- r+ t; b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    & |& R+ h& D( b2 [
  29.                 return -1;3 {; W  m1 R1 ^  N
  30.         }
    5 K( g: n5 |# s: a6 t
  31.         arg.sub_addr_count      = 2;. G, d9 g; U; L5 I
  32.         arg.data_count          = 0x18;
    : `' o- v7 y) M) m* @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : N* z( R' u- r) _7 X& p
  34.         arg.e2prom_cmd_data     = buf;9 r4 T3 F7 h6 q4 S+ k: o" S9 Y' X; ?* r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    " R/ d" J: o3 g* W
  36.         if (ret != 0) {
    / b) V. M2 U: U+ ?# G, }6 O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    0 \# J( B" H/ ~# M. X! P8 \
  38.                 return -1;' G& x2 Q, b) W6 q2 b  x& }6 x
  39.         }
    ; J4 C* ^% e- R5 D" j
  40.         memcpy(mac, buf, 6);
    % O. Z2 E% ^9 m* s
  41.         memcpy(stbid, &buf[6], 18);
    ( ^* p+ a% d" h9 e( B
  42.         stbid[18] = '\0';* k+ c. i8 g1 H* H& d8 F
  43. ' W3 F6 q4 j1 _2 r; q( ]% Z) \
  44.         return 0;
    # i/ g% @  z$ S0 Q
  45. }3 B+ r7 M2 g4 x" I6 d* o# K/ k! A

  46. $ J1 N7 v( s+ n7 U; u( q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)7 i- v. Z$ Z4 k0 T
  48. {
    & ~5 u* }, V: {, ?
  49.         int fd, ret;
    " E: k  H, U! i. a, }
  50.         e2prom_s_cmd arg;3 f/ }& s5 I% Y7 j2 @6 I0 w  @
  51.         unsigned char buf[0x18];
    8 L5 b+ V  q$ W) u4 g# P
  52. . R4 D8 \. b) H" D
  53.         memcpy(buf, mac, 6);8 [& V' d7 u8 Y; o8 |+ m
  54.         memcpy(&buf[6], stbid, 18);
    # ?7 l3 }% L& j$ [6 T5 ?9 i
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    4 K. l2 Y$ Y( w3 w1 T  {) c: i* n. h) A
  56.         if (fd  < 0) {) E7 J+ ^+ _3 E8 b- K$ R
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 a8 Q5 F  [8 B2 D6 B+ T( j
  58.                 return -1;$ ^% y) `, o) O7 ]& c7 B. u
  59.         }5 k5 h& s+ Y7 q, b* P; G
  60.         arg.sub_addr_count      = 2;
    ! r5 i6 s5 D# b4 o7 O  r- w- {
  61.         arg.data_count          = 0x18;
    - F' n( O( }  k; C4 Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    - o1 _# U! E, D2 W  L
  63.         arg.e2prom_cmd_data     = buf;
    & p0 \( z% Z* J% r2 M' I- g5 x4 |& d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);: t: O7 y: W* X; L2 j7 C( I
  65.         if (ret != 0) {
    8 G4 i$ x! f/ t1 p* h5 ]
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);, S# J7 [( [$ |, _* b9 \  @
  67.                 return -1;# W" k- V- m5 D0 |, I
  68.         }+ }" U2 b+ l1 Y, f0 X" [" i

  69. : a2 k& k; l1 I! E" X6 h
  70.         return 0;
    5 {( v: C- e0 `" n, L
  71. }
    0 I3 ^/ V6 u- w! [/ H
  72. # `3 D  i# k' J# [
  73. int main()
    + @, X' K! ^- J( }/ `" A
  74. {1 [& q! v' F, ^: [0 s: T5 Y
  75.         char c;
    5 n* F  \8 ]+ \3 u' N
  76.         int i, macs[6];+ N5 f. l' h1 Q. S5 G! H1 f
  77.         unsigned char mac[6];" N( \% o) ^3 W
  78.         unsigned char stbid[256];5 U5 z* L5 S1 M! v$ A, d

  79. 4 z1 ?- `! D' N
  80.         if (readparam(mac, stbid) < 0)
    ( z7 W4 J8 ^1 s( Y; C: s7 W6 k
  81.                 return 1;
    ' G( P; V: ?2 @: ]9 V

  82. 9 }' Q: y& D- z/ \& r4 @# c
  83.         printf("Current parameters: \n");; p* l% I1 N2 M5 a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; {& x' U8 S1 I* m) D3 M
  85.         printf("  STBID: %s\n", stbid);
    5 H' T' i3 v- G5 w# T) g# L, q
  86.           o/ ^$ ^* H% O7 N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ `% k) e" @+ r; Z
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* `8 r( W; `; e: n% k* t
  89.                 printf("Input MAC error\n");" b4 a0 U5 |0 g/ z0 K% {$ \$ o7 @9 z
  90.                 return 1;
    * [# v1 m+ c! x3 [8 }
  91.         }
    - s7 Q- H  j" o0 _" D7 J+ t! L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & T7 r$ ?% P/ {
  93.         printf("\nPlease input new STBID: ");5 j0 w' c) M/ f
  94.         scanf("%s", stbid);
    9 |1 N1 |3 M: o
  95.         if (strlen(stbid) != 18) {
    ; Q% s! V  j5 Y! ]5 i
  96.                 printf("Invalid stbid\n");
    5 [4 L, y3 I: ~1 n
  97.                 return 1;. {& `3 |' N- P# b2 a' N0 \: L
  98.         }
    # v( W, }% D1 x
  99.         printf("\nNew parameters: \n");
    + J9 P. x; x: [' ^( ]" _/ v* O- S5 U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    & k$ i' V9 Y0 Y7 c9 b% I9 T
  101.         printf("  STBID: %s\n", stbid);9 [8 t* d6 h; ?5 L6 R! ?5 U/ ^
  102. ' J2 P- K0 g$ c. v
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; A7 b) y" w* O( b7 {4 g2 s- K
  104.         for (;;) {
    + f2 P( d% g: x$ w1 t/ U
  105.                 c = getchar();
    0 p; o. G& m# i. m; {
  106.                 if (c == 'y' || c == 'Y')
    ! `( K: x+ z9 _! Q% t* G9 K
  107.                         break;
    " _( g8 G" k; |
  108.                 if (c == 'n' || c == 'N') {: c% d2 @  ]% L! n% X& t
  109.                         printf("\nAborted.\n");
    / a4 l% z, T# s
  110.                         return 1;
    ) Q( }3 O, v5 d; Q9 P
  111.                 }
    9 `" ]9 W" [" e5 ~0 y1 D0 y! B
  112.         }
    * Q/ |1 D0 B) d8 O: o
  113.         if (writeparam(mac, stbid) == 0)
    9 f! ~& r* S* e8 c# \
  114.                 printf("Parameters changed.\n");+ i3 {$ H* v+ p8 h# S
  115. ) e: c# m( v3 g
  116.         return 0;
    7 K/ f, P+ \$ B& x  v2 E  v4 ^% 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 $ R, k6 J; ?7 L1 w
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( E  \" F- U: ]0 p7 ?你用的编译命令行格式是什么?2 ?- P  C& a/ O3 ^
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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