查看: 17716|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' Y4 w. U2 ^8 C" P' f
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    4 h# N3 B. y6 c$ ?& g0 V( s; o: ~
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:% a: D9 w( r4 s. h
usage: himr <address> <value>. sample: himr 0x80040000 0x02 f8 N$ T. q, W

! o% [/ q" J1 Y( v9 D5 v* z/ I5 l
. B# F8 X4 }$ }9 L1 Q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ E! x) W) a1 o/ e4 ]: r, b
) e+ W8 M( N4 {3 s补充内容 (2012-3-8 09:42):) B% i7 V, {! b6 H% C
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* N) a7 M) t& y这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。4 {7 I6 ], n% F9 l, e" R$ n. n
% n. r/ _! S% @  Q
himr <address> <value>. sample: himr 0x80040000 0x0
& s, w/ d, A: g' F4 c7 E& j9 w$ |) N- I, L
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, @$ M: Z5 A# p' R1 p$ I/ g
himr 0x80040000 0x00
8 G2 E8 G0 K" X6 o3 |( h+ H: phimr 0x80040001 0x11. j4 U6 Y; i; E6 S# Y: Z
himr 0x80040002 0x221 v/ `% g/ ?6 N6 h
himr 0x80040003 0x33
. _/ m  ~7 }0 @himr 0x80040004 0x44
7 w" ~$ n- H/ s( N3 _, qhimr 0x80040005 0x55
1 E1 [! s% I. L: ~3 c' p
9 F0 k% M6 E: B& s6 B- {# g  `SN也是类似。
: a6 E0 E* b5 U. f) q7 b
, G) ^# l5 K9 g( C现在主要是,谁告诉我们MAC和SN的地址?+ M* h1 R+ ~, W, |1 b6 S7 z
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 X+ o2 M$ i* V0 c5 L" S9 }; }
一直想找到运程修改MAC和SN的办法,苦于无解啊

6 _/ R* s% g( H) U6 l源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' H8 G! X8 O) f/ A; j  `3 E6 n0 m' w& _3 f# P0 b% S9 W; M" ^6 X( w
修改的代码早有了。到今天不会编译。
" Z* E* L" J6 k, j# G8 ~, y) [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    5 Z" Z& ^" p  b3 k
  2. #include <malloc.h>
    & d- F  B6 j+ ]8 `! o8 ^
  3. #include <sys/types.h>1 V' t  I+ S9 `
  4. #include <sys/stat.h>, H9 _" Y0 B4 O: C8 t
  5. #include <sys/ioctl.h>( k' B* f) v- c4 b) D
  6. #include <stdio.h>! v/ @5 I$ B% Z! J
  7. #include <string.h>
    4 ]) C2 R; y" ]2 p8 I3 g, A1 \$ G

  8. " {; E# W7 o0 W9 G1 H5 G
  9. typedef struct {6 q# B% U. K8 t! I+ w3 @" R: I1 d
  10.         unsigned int        e2prom_cmd_sub_addr;9 `  W5 T2 C( x( d/ I0 h2 _  e
  11.         unsigned int        sub_addr_count;0 @4 @" C4 Y3 t) Q9 u
  12.         unsigned char*        e2prom_cmd_data;4 L2 D  o5 E5 C1 k+ h" p1 t
  13.         unsigned int        data_count;
    7 e% U# _5 F. L  T  g
  14. } e2prom_s_cmd;
      |( t- ]. P( n' g8 g
  15. 8 C9 Z5 ]$ z- W/ B* S2 F& _
  16. #define E2PROM_CMD_READ 1
    ' t9 Y6 r0 g9 z! C% h
  17. #define E2PROM_CMD_WRITE 2% ?: N+ p  G) F, Z3 o
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"+ b) Z* D( j! N

  19. 6 f) P% v$ c/ l/ n; E7 l4 ^1 y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    7 L3 i5 I4 t. Z7 b
  21. {
    8 r- I. W4 W! |* p- g
  22.         int fd, ret;: T: ?0 P5 ]! s, O  c- F4 r8 r% c
  23.         e2prom_s_cmd arg;; q" X$ B+ K1 q8 E  @
  24.         unsigned char buf[0x18];
    1 [2 O  R' i6 V! l

  25. % P2 {1 Q! Q3 m: P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);! \' e8 @: k" ]. T3 ^/ h
  27.         if (fd  < 0) {  k/ Y6 c& [8 Z) D* i1 u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 r2 c. y0 `( w0 e: H5 M- D9 ^. j: ^$ R
  29.                 return -1;
      p6 C! ~7 A0 Q- d2 _' U' C% N
  30.         }4 N  l4 f2 [& o/ Z, W/ f
  31.         arg.sub_addr_count      = 2;+ S: \8 s5 h' u- |* k( P) ]
  32.         arg.data_count          = 0x18;
    % A( `+ y% B! ]+ G/ N! ^* [
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 T/ B3 p: g- Z: ]; i
  34.         arg.e2prom_cmd_data     = buf;
    : r2 z8 U4 h) R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);+ |/ \) N4 R& f: h# [$ b3 q6 A5 I6 P
  36.         if (ret != 0) {
    : o3 n9 Z. y5 d, b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);8 J$ A  k8 z9 a5 \, ?7 C, J
  38.                 return -1;& ^7 b: L% z! b' Y% U
  39.         }& c' A) H: M" y( W
  40.         memcpy(mac, buf, 6);8 a# l1 x' p7 x% w* o* [3 j
  41.         memcpy(stbid, &buf[6], 18);% |2 s3 C" }4 ?# K2 h9 |. F
  42.         stbid[18] = '\0';
    ; j" u4 D# K& t* B; N+ V

  43. 5 Q* f& e5 A7 G; M
  44.         return 0;5 d8 s  U; W0 S7 L3 D
  45. }
    7 q; M% {+ V0 Y) Y  {) L

  46. 0 l1 p1 e: [+ o4 |# g+ U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 W7 q  @) S, I6 f; b8 E3 A
  48. {
    8 y6 P4 w# w: L. v' H0 g) Q6 ~
  49.         int fd, ret;
    : `% v- {) _4 {
  50.         e2prom_s_cmd arg;' X( R4 T) k$ n. _+ R" n
  51.         unsigned char buf[0x18];
    ' D2 a! O" E5 n9 H: x' Q! f- d

  52. 6 x+ I, v# A+ w6 K/ j  _
  53.         memcpy(buf, mac, 6);7 {7 ]& o) [( s2 t: t6 ?' c. e: Y
  54.         memcpy(&buf[6], stbid, 18);4 A4 X: F, O6 @- Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- M4 Q4 S& U  e+ ?7 U' S& a' e
  56.         if (fd  < 0) {0 j$ B0 ]: K. r# A0 }0 d  L+ [' P4 e
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
      U; o: L3 Q, i3 s; O
  58.                 return -1;
    8 P3 ?( P' c" ?
  59.         }
    3 o7 P2 m! X; J- |
  60.         arg.sub_addr_count      = 2;! [0 \2 \" I; C# ^9 y9 m2 }1 N1 K
  61.         arg.data_count          = 0x18;
    # k8 ?/ m! B4 U
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ) T* U# u( p1 {, c/ }
  63.         arg.e2prom_cmd_data     = buf;9 S* Y* ?3 H$ M) a, J" K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 m# y; u% O$ m+ B$ t
  65.         if (ret != 0) {7 P- r+ X6 `8 j$ @# r( T
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    4 w) H  K5 A1 a" |
  67.                 return -1;
    ' `( [+ N( P2 {! @6 o% C3 {
  68.         }  D# n; x9 J9 F9 s3 {9 j5 p4 f
  69. , `0 F  E  F' |
  70.         return 0;9 ~- x" T$ W/ h% v7 {6 e, [+ z
  71. }
    6 B) @) f4 H4 h* M, F1 P
  72. $ ?; R5 @$ I/ m- N! r- c4 @% s/ D
  73. int main()
    ! u3 w8 o' O! h  g) I2 r/ i
  74. {
    6 P8 W+ n" h( C. I. r* B
  75.         char c;# t8 [7 ]+ \0 x) d" b& D( Y$ T
  76.         int i, macs[6];
    8 E1 `7 o' f, w" s; j
  77.         unsigned char mac[6];
    / i5 s6 P6 @% R0 y6 [( [8 J
  78.         unsigned char stbid[256];
    1 `/ ^8 [" ^' f. D7 F" W& _1 F/ [' u

  79. ! d3 u0 n$ M) U9 \3 X+ x
  80.         if (readparam(mac, stbid) < 0)
    6 \& V9 B1 n  ]' I7 @" g
  81.                 return 1;& i  V3 \" x. w( q% M1 x: K3 C
  82. 0 `5 J* n( {; d; ~  }* b" J6 Z
  83.         printf("Current parameters: \n");
    6 L- _& c$ @" ?6 |+ P# q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! o, V" c- I) _" T/ c- [
  85.         printf("  STBID: %s\n", stbid);5 g' |0 s5 B- ~, O9 L7 q$ o
  86.        
    " o* K$ U0 E. Q; b$ W* s' a
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 E% {! }8 G0 c9 K1 r+ U: p# T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# S  S0 |  O% u
  89.                 printf("Input MAC error\n");2 U! f: ^4 q  k, I0 U6 |$ f
  90.                 return 1;" M. X  B, \& ]6 ^5 T: f! p
  91.         }( l6 c" T0 h9 b* S# ], _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) `  S* q/ _: d5 v7 K5 K* v7 C
  93.         printf("\nPlease input new STBID: ");7 [+ r' R8 u& k: S
  94.         scanf("%s", stbid);' x5 s9 |" q8 D1 Z% F8 d
  95.         if (strlen(stbid) != 18) {
    " I( z+ q  R. [4 f8 S
  96.                 printf("Invalid stbid\n");
    & A$ L+ n9 R0 M6 U. |% l+ e7 l
  97.                 return 1;
    ! L3 l# B* j6 R9 G1 h& ?# k
  98.         }: J" {1 q' k% F
  99.         printf("\nNew parameters: \n");+ c3 q, f' S$ H5 S" z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    9 Z- ~4 E- R0 g
  101.         printf("  STBID: %s\n", stbid);
    , s8 g+ z  O3 `" j# y
  102. # p& d4 @) @8 P- y% w9 e% G
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 [. R8 E, _$ c" N
  104.         for (;;) {- m! V9 y  g/ ~. b9 ?
  105.                 c = getchar();
    7 t. e- M9 t/ m; I% f7 G% l- `$ q
  106.                 if (c == 'y' || c == 'Y')
    $ A3 ~& l8 I' c- u
  107.                         break;
    ! a8 N5 N* A* T5 o  D; h/ s6 x
  108.                 if (c == 'n' || c == 'N') {! j1 {1 Z% Z! [! j1 T
  109.                         printf("\nAborted.\n");  j0 I5 g5 I% s
  110.                         return 1;
    # Q* U# j3 K( p1 M6 E3 A
  111.                 }6 ]/ E6 X  R4 o! C" d0 j
  112.         }! _& @( ~% g) R
  113.         if (writeparam(mac, stbid) == 0) 1 ]* a0 u. r/ }
  114.                 printf("Parameters changed.\n");, W4 _2 W9 i# w% `0 p& y
  115. 3 ]1 @) P" N6 `8 \, X5 e1 o* ~3 D
  116.         return 0;5 P3 y4 D% Z' d* h9 c
  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 7 `/ @% p1 `+ P) F  ^1 U- Y% ^
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
5 P8 O6 q! ~  x& `- y- p
你用的编译命令行格式是什么?" I/ O4 O/ f! v4 R6 ^
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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