查看: 17318|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% @4 s* V( r' F# ?- U* \5 @7 b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / G( A- A& N& w+ u+ b( ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:$ B. y- i8 n  j5 o7 X
usage: himr <address> <value>. sample: himr 0x80040000 0x0* i9 q$ P4 b$ D/ W0 t$ f
6 Q0 I( F2 N1 \* v8 g, A: e1 s9 l
: L5 H7 _  \" I% W
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, A" y4 B8 y. I  R4 Z" P" N5 Q
) H; R: ^* _2 g2 O( v
补充内容 (2012-3-8 09:42):6 K2 q0 E' e# S  D  l
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ O: q5 I! f# o5 H2 G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 \* q8 s6 y* Y; J/ _! H! \: B# P! Y  j  @
himr <address> <value>. sample: himr 0x80040000 0x0. c: }6 W, C( ?* C

* F4 k3 ~- V8 J# Z+ Y' t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% t! I- C6 m% f+ }; C5 g. p7 j
himr 0x80040000 0x00
5 J9 I0 F4 s! z' b6 ]himr 0x80040001 0x116 J* \! B# E: L1 Q4 a
himr 0x80040002 0x22
  j- x, e* y; L" Whimr 0x80040003 0x332 ]' Y7 O$ W8 |- a% i
himr 0x80040004 0x445 w" d, v  G# r% p4 C" t3 T) n$ A
himr 0x80040005 0x55: i" P, C4 U0 K- u9 [' u5 |. K5 V

+ ?% ]- B# Q1 }6 L1 B( E' j/ a# tSN也是类似。8 |9 w3 P3 a/ I2 w- \, i

& ~6 w& ~! h# u' U3 C9 F& G现在主要是,谁告诉我们MAC和SN的地址?
* |& m4 [1 t  B
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
0 R- g$ W# ]" o  Y一直想找到运程修改MAC和SN的办法,苦于无解啊

8 q0 b+ U; }* C: [源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( z4 A& p+ T6 u6 d

* f$ a9 L8 o# j修改的代码早有了。到今天不会编译。0 Q% q7 J' C# q* ^( @1 W) j! L) p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>' s4 {# {; v. p
  2. #include <malloc.h>
    9 d% K7 z3 Q% H. G$ ~
  3. #include <sys/types.h>
    + a" H2 y+ E7 R" M
  4. #include <sys/stat.h>. y  P6 \7 Q/ U! W9 c
  5. #include <sys/ioctl.h>7 y1 i0 B8 z; r) E7 \+ m/ {$ Y4 Q$ D
  6. #include <stdio.h>: a* D6 F/ W: P) O% P" y
  7. #include <string.h>, B% c/ [* O5 A7 D/ m* T$ R

  8. : H0 d, j/ T% A, z, |4 Q$ ~7 D
  9. typedef struct {
    / E$ P2 y1 ?6 r4 S; H
  10.         unsigned int        e2prom_cmd_sub_addr;
    , T1 _" {* B1 {* b1 C0 e! E/ @: G
  11.         unsigned int        sub_addr_count;) w5 L1 S1 w0 a" I
  12.         unsigned char*        e2prom_cmd_data;
      l; x! P0 _4 M% b
  13.         unsigned int        data_count;
    . N5 `, h7 [0 W9 k; }
  14. } e2prom_s_cmd;; C3 G% J. h, i& n0 G2 y- U
  15. % r! k8 }: h- s3 h
  16. #define E2PROM_CMD_READ 1
      r: Q; n9 D0 Q- `' f
  17. #define E2PROM_CMD_WRITE 24 I6 x$ M7 a3 o, C% Y9 K6 b4 U7 V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"8 B% w3 z/ u3 S* ~% k+ b/ ?

  19. / D0 [* ]0 C: L; F
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    * C: u. t6 Y! o# ^
  21. {
    . }, f  X3 [" |
  22.         int fd, ret;( x" z5 b# G$ k/ v. {4 n
  23.         e2prom_s_cmd arg;% e! }! {$ o# E9 n1 F
  24.         unsigned char buf[0x18];7 W! j- ^8 s0 d- F+ E' V
  25. , N2 R, g3 |. D, C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: C% t  H- L$ z
  27.         if (fd  < 0) {
    ) j4 p8 m  r- v: O
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    8 M7 U6 D+ V) P* J
  29.                 return -1;+ Z1 K2 J4 {6 w. A4 J: r
  30.         }
    ) @' [0 W" S; b3 V3 A7 v
  31.         arg.sub_addr_count      = 2;1 Y4 X. o5 |- N8 T6 {
  32.         arg.data_count          = 0x18;
      a& A# f, N% c$ @6 `9 D! x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : [# n- P  P  X0 N1 h: U! p
  34.         arg.e2prom_cmd_data     = buf;
    0 E% r5 b- E/ d% }6 W% j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 n- g% C! _" F' R- c* y5 D
  36.         if (ret != 0) {
    3 O; l1 w, |8 V& ~; |  Q' h0 k; c
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    8 D3 a% t1 o/ G% L- R- \  j( |" y
  38.                 return -1;( d$ ~2 g4 |" ^: D/ J/ W; l* z
  39.         }/ R) j- Y  d- \& ~4 A& d2 M
  40.         memcpy(mac, buf, 6);
    1 x: Z4 y# j3 j6 a
  41.         memcpy(stbid, &buf[6], 18);
    / |& \# g+ y: K' f/ ^5 R  F0 t9 g6 ]. L
  42.         stbid[18] = '\0';
    2 t. b& t# F% S; r: w" q
  43. 7 E7 K2 {% \) k& D' t6 [2 B
  44.         return 0;
    0 _9 Z9 B) L% I- i& X2 u7 e4 O
  45. }
    ) S. f5 n. F* N
  46. 3 J8 f) j  }  }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" M2 s( J4 w( }4 f
  48. {; D/ S: x% P* w2 D' c, p2 E
  49.         int fd, ret;
    / }. P0 B; F% E$ U2 c/ v
  50.         e2prom_s_cmd arg;- ?& f; s" v( e; w- W, j+ u' i+ u
  51.         unsigned char buf[0x18];, m. n, m( _7 a) @6 k: N8 F. N
  52. " ]& J- X0 w' n0 d5 [
  53.         memcpy(buf, mac, 6);: ?( D3 m- y& B0 s# ^, Z7 b* b
  54.         memcpy(&buf[6], stbid, 18);  E5 e. S- X- m2 P  C& h9 A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);4 g6 [6 U; Q1 |% Z
  56.         if (fd  < 0) {
    4 [3 G0 g6 K! O* w
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # G/ K0 {6 h: }) ^, ~2 E
  58.                 return -1;: B7 ^2 c& c, y: t
  59.         }
    1 }# Y7 w6 y8 }
  60.         arg.sub_addr_count      = 2;. L8 P& \( N1 ]
  61.         arg.data_count          = 0x18;
    1 T3 R% ~  v% Y
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 ?1 h) i: v& [5 Y
  63.         arg.e2prom_cmd_data     = buf;; o  S$ ^/ W# J) F( h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + L  u4 s/ ?5 y
  65.         if (ret != 0) {# Z9 G4 X1 g% y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    - x8 @" y3 K) S9 \1 `( k8 w
  67.                 return -1;
    , B) R. r7 b! \8 C* p# ^$ w+ a
  68.         }
    3 E  O5 V  a2 h" _
  69. / s% g5 O7 t# H6 ]
  70.         return 0;% F3 d7 D! ~( N1 K% A
  71. }
      p$ Q& v, ]( W1 `+ U3 J/ Q& B
  72. 6 v0 w  u; N, w. U% E& f
  73. int main()7 f- p; O% Y  x% S# l
  74. {( W5 K" O2 y5 _8 s# ^6 `
  75.         char c;6 j' C; ]( H/ J" l: [
  76.         int i, macs[6];4 @$ y. ~" h5 @9 |
  77.         unsigned char mac[6];
    ) O; O0 x" g# {! f8 N& J" ?
  78.         unsigned char stbid[256];
    6 c! }0 D; q: @: w. e9 b! C3 g

  79. ; G( d  P: M/ L/ T5 `) ~6 Z. k& ?
  80.         if (readparam(mac, stbid) < 0)+ n3 J* ^3 _. f6 E
  81.                 return 1;$ o/ O; O* K7 u" _! T3 ~) I8 f' a

  82. $ U. g0 T- u5 K( ?) i6 d" C! b
  83.         printf("Current parameters: \n");  J" `  X# x; ^7 g" M' p* S& R
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; q; I4 n: @6 U2 K
  85.         printf("  STBID: %s\n", stbid);' M5 |, ?2 B, A( e4 V8 j
  86.        
    7 T- @. g5 P. U# I$ O$ p3 m
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 m  B% J9 T5 {; ~" P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {$ T8 C6 U; C" Q* X% @+ q* U/ i0 G
  89.                 printf("Input MAC error\n");
    + I) \7 ~" ^5 K7 d+ P
  90.                 return 1;
    $ ]- s1 |4 b2 C! t1 h- a& n& G
  91.         }
    1 q7 H- R: N) v) O
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    , W3 ?2 H; ?0 W* J  o# C
  93.         printf("\nPlease input new STBID: ");+ ?! O& _1 T' Q% H8 y. Z
  94.         scanf("%s", stbid);
    9 c+ c2 t% a/ c" F9 g
  95.         if (strlen(stbid) != 18) {
    2 V. [( n- H4 F( L& k, Q2 A
  96.                 printf("Invalid stbid\n");
    6 Z( Y% R& G0 S/ \: Y2 Q
  97.                 return 1;" I4 l) ?1 K# W, d6 p! A/ N
  98.         }/ b! m0 S0 R! h( n$ ~
  99.         printf("\nNew parameters: \n");
    $ e6 [& k: G8 i5 X" e8 s8 h( R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);, S/ T4 n; K7 C9 g6 N
  101.         printf("  STBID: %s\n", stbid);
    * g2 u2 {6 b- T7 |, Y
  102. 9 ~7 B/ A- N3 D
  103.         printf("\nDo you want to change paramemters? (y/N) ");& k/ ^& \9 w! E" h- D+ f
  104.         for (;;) {& W* t& Y9 x3 G" l
  105.                 c = getchar();1 d7 Z* z, E) d' O
  106.                 if (c == 'y' || c == 'Y')
    7 D* v0 i( b" p" T! `8 J
  107.                         break;
    1 }# _0 [0 z7 g
  108.                 if (c == 'n' || c == 'N') {
    0 t+ C+ V4 @  b
  109.                         printf("\nAborted.\n");. X5 d0 A8 Y. T4 G$ t) _9 V
  110.                         return 1;* Y5 P1 m8 \0 x2 r3 e$ ^* |: [
  111.                 }  p3 I- n8 `8 B- ?5 Q' A
  112.         }' n  M* X# X* e; G+ j& y, c
  113.         if (writeparam(mac, stbid) == 0)
    ! @* P) [9 e; q6 x
  114.                 printf("Parameters changed.\n");) ]# P. \6 J) |( [2 v3 {1 I

  115. & e8 r. h& ~1 ^* I
  116.         return 0;
    6 V0 \1 O9 j, R
  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 # W  e# z2 a0 e: b1 Y' T
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

0 z4 @6 j1 y3 g! |9 b( i你用的编译命令行格式是什么?
2 h  `( B3 P1 s3 H3 d/ j) y) Y
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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