找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15759|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr. t& |8 V% H& K3 ]6 V
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 z) i* P/ z- L. Y0 A( e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
2 L6 K1 v; \& f) L3 ^usage: himr <address> <value>. sample: himr 0x80040000 0x07 }& u9 z: r/ T- {8 Q& h

  |' W* X# C; M$ E6 C
" Z2 k! r6 R/ X- F4 x' \) f不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- m9 Z" d1 \; E$ |
) M9 h& r, t: `# q补充内容 (2012-3-8 09:42):
% P( r0 _7 A- }! d& shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数- Z; v8 T8 ?! t/ P" r, F1 i
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- ?# s) t; O. n# W. b* E/ G2 v
3 @5 G) {0 e% _+ a
himr <address> <value>. sample: himr 0x80040000 0x0: J' `; S# s: h  q
! l. z4 v8 J0 j6 |% K  L! p
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  ]) {# ?6 }; J7 R* Qhimr 0x80040000 0x00
* ~3 g1 C% V' Ahimr 0x80040001 0x11
) G% O, n+ b7 R6 P7 J2 D. {himr 0x80040002 0x22
/ l, ]3 C$ D4 [: A, ?himr 0x80040003 0x33
4 p( T; i2 {! V- g6 A0 P, i* p2 v+ rhimr 0x80040004 0x44
5 E! ^4 p" H6 o5 n! @himr 0x80040005 0x55( v* X. h% V9 E% r" y
/ a" F1 x! \5 y4 g! _
SN也是类似。5 ?( b' V' y* ^6 ^% X
1 u+ G+ _& t3 J+ x
现在主要是,谁告诉我们MAC和SN的地址?7 e0 o. V- {' W& l& ^& x, g: t9 p
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
! a' x; R! i- i+ _* p- c一直想找到运程修改MAC和SN的办法,苦于无解啊

, T7 L) p2 C9 R6 `/ A  c源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 `5 @% Y; F) D  j9 `' K4 x

& X1 Y  F& b0 t: r1 W修改的代码早有了。到今天不会编译。& K) Z% S) |% w6 o1 ^: F
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 H3 ~! m' {& ?8 @9 {
  2. #include <malloc.h>  `1 M2 `4 h  {2 z, ~% v2 J
  3. #include <sys/types.h>
    ) G% z; p, x/ Q7 H/ ?$ e
  4. #include <sys/stat.h>
    $ F1 _$ Q( U5 q; `7 K8 {; b% {
  5. #include <sys/ioctl.h>
    3 X) b& _2 @7 J. \3 N8 N9 M
  6. #include <stdio.h># z; n( b6 B# c* M
  7. #include <string.h>
    ) n$ {6 c4 y9 z

  8. ) S3 x: {; O3 I1 ~& B7 ^8 E
  9. typedef struct {" d- k" o' L* J6 h
  10.         unsigned int        e2prom_cmd_sub_addr;
    + c* {5 ]4 u# P( h0 A; [* v
  11.         unsigned int        sub_addr_count;5 X$ D$ m8 C8 E4 f' Y
  12.         unsigned char*        e2prom_cmd_data;. W% h4 S3 P9 E* b8 r: b$ a
  13.         unsigned int        data_count;& J& j/ R4 ]* z" d3 ]
  14. } e2prom_s_cmd;, O. z0 n/ k0 }3 d1 A

  15.   t% M5 x( |) b( D  Q
  16. #define E2PROM_CMD_READ 1
      n: ~# K' X2 U& d1 t3 }
  17. #define E2PROM_CMD_WRITE 25 M! ~4 N  d" b! q4 H: Z! Y
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 \2 W. d& r2 e* q+ m( K

  19. % Z  Q( W5 \" W- W6 L# ]& A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 `4 t# i) a$ F' v
  21. {; {/ R" v- [6 E$ m+ [3 E3 ~9 F
  22.         int fd, ret;
    , V  |) K3 N  C4 K% c& F
  23.         e2prom_s_cmd arg;
    % |! _9 z; f. O8 ]8 B( _
  24.         unsigned char buf[0x18];
    * P, G  i9 _# t! g0 V6 L/ p; E) N

  25. 2 J/ i. ?: e5 _6 R8 f, V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: g2 k7 p5 q$ u1 j! @% n
  27.         if (fd  < 0) {% ^# h2 N" y7 W1 u) I* W4 U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' B- P+ v* c. D: a" ^
  29.                 return -1;1 v/ i0 ^$ o: D8 H/ B8 y
  30.         }; Q) a# m' N( J! N
  31.         arg.sub_addr_count      = 2;# r$ }* B0 W" T5 Y
  32.         arg.data_count          = 0x18;% f% B/ ^9 b: C7 p+ j
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ( k; v2 N1 f( S! V* s
  34.         arg.e2prom_cmd_data     = buf;
    " t4 ]( q2 Y" i) \5 \# S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ b7 O) O, [1 [' }7 K# P7 h& R
  36.         if (ret != 0) {5 Q. i: n( g) P  M' u* `  u$ n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ) I) ]- U. q6 Y" A: R, A
  38.                 return -1;
    / o) J& m9 f9 ~2 _; @( F
  39.         }
    4 Z/ P' s/ `$ ]9 ~
  40.         memcpy(mac, buf, 6);) Q5 e8 V! Z% q9 m1 }$ l7 G
  41.         memcpy(stbid, &buf[6], 18);  l, H5 B6 M; z- [3 V1 @$ L
  42.         stbid[18] = '\0';2 A* e, Z- n8 R/ I; N: _
  43. 2 O0 v; X, e# b- U/ a
  44.         return 0;
    + |5 i# Q  {% S8 M
  45. }
    1 M$ ^6 m0 T2 L7 R0 ]2 i* ]

  46. & }0 q. S% \* ^, E
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - c% X7 b0 Y+ Z) K' s
  48. {" ~9 j1 Y* X, C) L4 B- z, M% ~
  49.         int fd, ret;
    , b+ [# b+ |. `9 r0 K" e
  50.         e2prom_s_cmd arg;1 _3 u9 o, G7 c0 I+ K
  51.         unsigned char buf[0x18];
    : c! m  L5 |! F6 P  m
  52. & c# }0 r- M* D) J! k' e
  53.         memcpy(buf, mac, 6);
    ( s' k: k. r- V8 x& w6 u/ K
  54.         memcpy(&buf[6], stbid, 18);
    $ ^4 V. J: l$ F( j
  55.         fd = open(E2PROM_DEVICE, O_RDWR);/ ]$ E# ]( F% B8 l
  56.         if (fd  < 0) {% ?3 Y7 t, k2 X. I3 W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' J5 k5 @. T6 H8 x" @$ r, Q2 z) E! y/ _
  58.                 return -1;4 p% S, C5 Q, o$ s6 s+ U  ~
  59.         }  A, `+ l; U, U
  60.         arg.sub_addr_count      = 2;( h  m8 h3 c4 `  H
  61.         arg.data_count          = 0x18;% p# t; i( t, e
  62.         arg.e2prom_cmd_sub_addr = 0x290;! N/ t3 j& b: O# d+ i/ f' s3 u. l
  63.         arg.e2prom_cmd_data     = buf;
    - b* f1 d1 U  b$ z; \
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . H2 w: f9 O6 E
  65.         if (ret != 0) {
    3 m/ f4 o  M% C5 j( }+ ]8 v
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 ]7 A* d* p  H
  67.                 return -1;
    : j: B$ G# J1 o* y% O8 P' q2 Z
  68.         }" n. A7 A: U* |9 b4 q3 z
  69. 0 B; F0 v4 X: H0 P/ o
  70.         return 0;" U% @( b5 {' c% y+ I. S) g
  71. }
    7 l- F! e% X4 {# i

  72.   q4 z! l- ?, U$ }0 ]' c5 V, x
  73. int main()
    + Y9 X7 s) e* Z' R8 }8 }
  74. {
    & X% h- H- b: i; t8 ~8 O; i
  75.         char c;6 |& Y4 T2 c. d
  76.         int i, macs[6];3 I: r: ^2 N4 a1 v( U
  77.         unsigned char mac[6];
    ) N$ O  C7 d: q
  78.         unsigned char stbid[256];4 X1 C! J9 Z5 d; r8 n9 _

  79. 7 S9 @0 T7 k) G
  80.         if (readparam(mac, stbid) < 0)) t: s5 R; O) B2 E/ [5 T+ Q
  81.                 return 1;
    , _& w$ ?) I9 Z0 V2 M
  82. 9 H+ A9 D1 b  U8 V/ A% T( S
  83.         printf("Current parameters: \n");$ }6 n7 W, |, r  H: M4 P9 s: E  q! m; c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / c% \9 z) V& ~( O7 H/ W
  85.         printf("  STBID: %s\n", stbid);
    6 x( ]6 i' u* g- b: a7 o
  86.        
    : ~) E% z' D7 U5 ?" \
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * H" G" U6 Z4 Z; E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % |( Q3 e) ^1 s* I
  89.                 printf("Input MAC error\n");: I: Y8 Z9 R; X9 J) k  J1 s5 ?. S
  90.                 return 1;
    " u- [0 W* F9 \: k* w2 T: W1 q( e
  91.         }9 T3 m, k- \, O& r, r& \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) T! l; F7 _7 |
  93.         printf("\nPlease input new STBID: ");9 y% T$ |. b3 O6 n) s; P' a
  94.         scanf("%s", stbid);7 w6 t  h8 `+ }/ y7 v
  95.         if (strlen(stbid) != 18) {. o) ^+ U  G% ?2 }1 |
  96.                 printf("Invalid stbid\n");1 |: `/ G8 |/ D1 C7 {# g
  97.                 return 1;
    5 D- f8 K; k$ s/ G1 d
  98.         }
    2 Z3 M3 {( d& c1 S; @0 e
  99.         printf("\nNew parameters: \n");
    - G: Z: Z) y) }# P3 o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) j2 x: k5 ]4 e# x1 A0 v% c
  101.         printf("  STBID: %s\n", stbid);
    9 }( l" I# e1 v( Y) a7 b
  102. 1 @2 p' ~8 l& b# i! o
  103.         printf("\nDo you want to change paramemters? (y/N) ");" d3 Q$ v8 v+ s
  104.         for (;;) {
    * w5 i' s2 v; F/ q
  105.                 c = getchar();
    # Q. e  _& \0 p! Y& V5 `
  106.                 if (c == 'y' || c == 'Y')
    3 h+ k1 Z7 [; h+ F" L% O3 n
  107.                         break;* Q  j  V6 H/ K4 n/ i# X
  108.                 if (c == 'n' || c == 'N') {/ a! }% a/ ^" \4 D2 W  f
  109.                         printf("\nAborted.\n");. X: f: Z8 V4 E
  110.                         return 1;8 k( s2 a4 ~  h  d4 j! _9 S5 M
  111.                 }1 l: S- L- O4 C& \( C+ V; G0 i
  112.         }
    6 u6 U4 p# a: R2 Z5 h
  113.         if (writeparam(mac, stbid) == 0) 0 {. a7 x+ r2 |6 |2 R# c7 P
  114.                 printf("Parameters changed.\n");( O( n/ Q1 S7 Y0 j* A& U

  115. ; R5 F0 c; n: n- T" B
  116.         return 0;
    . p  a- E5 F' 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 % L6 D- S' p$ F' O
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ J5 q2 A! P2 j- v1 r+ K& B你用的编译命令行格式是什么?
+ d: }# i" l" g/ y
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

QQ|Archiver|小黑屋|宽带技术网 |网站地图 粤公网安备44152102000001号

GMT+8, 2026-3-13 23:55 , Processed in 0.086939 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表