查看: 17480|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr* _/ g: \8 S# m) Q- A9 w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 V& X+ k8 ^6 X/ [5 ]& d
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
* j" l, _4 F; }$ w& B- ^2 Wusage: himr <address> <value>. sample: himr 0x80040000 0x0
0 M/ X- |! z) f# w  S2 \% d1 C
, W% x# Q9 ^8 ~+ I  n
$ x& ~" X6 K9 a! G( r7 m不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 i, Z- d5 `7 P0 R
7 J% [( u- P! a& T1 v1 G* D
补充内容 (2012-3-8 09:42):1 [9 a* H8 L) a, N' f7 T# I$ Q3 z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数' L% O, N5 r1 }" Q( V
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
/ Y; _. u0 c9 P
. ?; x7 h1 [3 _$ i3 J& shimr <address> <value>. sample: himr 0x80040000 0x09 k6 t4 Z( M& }
* p5 g4 N, `' @8 h+ X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' l- A5 n- j9 U' f# s
himr 0x80040000 0x00
7 v& j: F, F6 t! D2 s# ]4 [himr 0x80040001 0x11
: d: k, t% y0 O6 H" ^himr 0x80040002 0x222 a7 U5 z5 Z9 ?# r7 D
himr 0x80040003 0x33
  s" |" t2 X2 X4 A# Mhimr 0x80040004 0x44, b9 W0 J( P# g% w5 k  e, H" i
himr 0x80040005 0x559 a  {$ ]% N3 y$ E0 i% x6 `
7 I* L: W) A+ C* O. m
SN也是类似。0 h% |. b! \/ e" c! F  x; T

" D6 ^6 \9 w( @5 [  V4 w现在主要是,谁告诉我们MAC和SN的地址?: ], r; y  m& o% g7 W* `! l
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
$ _9 f- q. H% W, L8 h一直想找到运程修改MAC和SN的办法,苦于无解啊
& |; g9 M: e5 [2 J# Q7 `5 r
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
" R/ r6 U# S3 Y* [% Z6 D# a- b: n* t- Q" T& c6 Q. H4 T
修改的代码早有了。到今天不会编译。
! ^" }+ y4 I: ^* g* b- [6 v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , y9 U) W) I" @. Y& l0 D
  2. #include <malloc.h>* U/ M1 K1 M4 t# g; e8 i6 |
  3. #include <sys/types.h>
    # v! G( }5 b- j/ z
  4. #include <sys/stat.h>
    0 I2 n" t9 S7 U8 e7 e6 y- |# \$ I8 e
  5. #include <sys/ioctl.h>
    3 i  i$ ~' @  k7 b3 B  ]$ `
  6. #include <stdio.h>
    ' ~2 ~" |$ a* q
  7. #include <string.h>
    - v! N( S8 y3 K, r
  8. & u3 ]- |% k) o- ]/ g  P. D. r
  9. typedef struct {4 E7 T  Q: O5 ?" R
  10.         unsigned int        e2prom_cmd_sub_addr;
    4 Q' N* O1 F8 L, s1 D2 v2 G
  11.         unsigned int        sub_addr_count;
    7 P; u0 G. N2 c5 U& F( R+ Q
  12.         unsigned char*        e2prom_cmd_data;
    8 {0 p$ o( N! W+ F
  13.         unsigned int        data_count;+ L3 y# Q9 I. L' Z$ H, [8 `5 R
  14. } e2prom_s_cmd;" E6 m% o" K2 g* s
  15. : m5 e) i4 y5 \3 _; ~0 Y+ I
  16. #define E2PROM_CMD_READ 1
    6 T2 _, Q8 V) X. U& v
  17. #define E2PROM_CMD_WRITE 2
    # ?. S" {  \4 Y' V1 E
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    1 [' x/ N+ z* m" j" {4 i+ Q( z

  19. 5 M% W1 X: _% v' z7 L
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 y8 {) L  v+ `
  21. {# U  _5 n2 ]/ m& ?
  22.         int fd, ret;6 Y! z7 Y5 J& W7 X6 K$ |! ^6 ^0 D
  23.         e2prom_s_cmd arg;% t6 ]" L0 B! F+ }/ n4 ?% D2 t
  24.         unsigned char buf[0x18];
    " G# K! ^: G5 T& D% m

  25. 6 I" E  A+ G3 l
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) F( C+ M6 u8 y; C
  27.         if (fd  < 0) {: V3 I9 ~+ O! Q# h' l; a) O: w% P4 r
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    4 [( ^) I! Y$ A0 t
  29.                 return -1;
    & G! B$ B2 t2 a; @& `  `  t
  30.         }4 `7 R. d! o- z8 L$ |
  31.         arg.sub_addr_count      = 2;  x% o. ^& ]' T( n2 n
  32.         arg.data_count          = 0x18;
    3 ]( z/ ~0 C" m0 ]7 N
  33.         arg.e2prom_cmd_sub_addr = 0x290;" f/ m8 U0 {3 T. ^5 b6 Z6 s
  34.         arg.e2prom_cmd_data     = buf;! a" V6 ^$ ~& }6 y) v
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);( X3 P; a% o& e  ], q' @
  36.         if (ret != 0) {  i, ~4 U+ d1 R3 z) _% y. D
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ V3 f( Y* U) Y" A; u
  38.                 return -1;; S+ X$ \: y4 Y" s
  39.         }
      Q/ x# T3 d+ _0 ]; V3 L
  40.         memcpy(mac, buf, 6);6 g* p% Z6 l2 L+ M# L  P
  41.         memcpy(stbid, &buf[6], 18);
    ( @4 N) @$ F. ]; {. o
  42.         stbid[18] = '\0';
    9 C5 k1 D3 Z0 F, Y/ S
  43. 9 `* h6 [4 h  q" L: }+ X, Y$ p% Q
  44.         return 0;) D: u. ?* d7 y+ p
  45. }
    0 F3 O6 B6 V7 T6 _) z

  46. 9 E% F& n2 g) Y5 p1 \7 s' ]* @4 X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 Z5 t" _  c3 l
  48. {
    ' s7 d# P& [* V* N* J
  49.         int fd, ret;
    0 d( g8 K2 M) ^% C& I
  50.         e2prom_s_cmd arg;2 m- ^" G5 @4 }1 l3 c7 U4 W
  51.         unsigned char buf[0x18];
    8 w4 C( @% y+ Y. m! {2 O
  52. 4 S: Z% f( ]9 Z/ i
  53.         memcpy(buf, mac, 6);: \! ?. G2 T; }' c8 ?
  54.         memcpy(&buf[6], stbid, 18);
    5 [, d. g; C3 Q4 N, [* Y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " j$ d# J2 M( y# n  {3 w0 t9 t  [
  56.         if (fd  < 0) {  ~  r# b3 w7 k
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 U* s" U) R7 A0 T# r/ e3 I! {# l
  58.                 return -1;8 o5 h: p  k5 _# C& ^/ V4 L
  59.         }
      d# f4 j, Z- R" ~' m
  60.         arg.sub_addr_count      = 2;
    0 G+ i7 I- F& G
  61.         arg.data_count          = 0x18;
    " ~  O! ]" E0 N( G+ w* r
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    9 |  O  B2 ]' f* z7 L- N" C+ @$ |. v
  63.         arg.e2prom_cmd_data     = buf;* R& U  G+ U8 e( W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ P; q( J7 ]7 J
  65.         if (ret != 0) {. j. P6 z2 r: W( a; I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);% n$ _2 d! e. P$ A$ x2 k; P
  67.                 return -1;
    1 h/ ~4 ~1 j$ l0 H( v7 Q7 G
  68.         }
    3 f: K" V$ e$ V! g
  69. 3 s' ~5 t9 _6 v. L& U! {
  70.         return 0;
    3 U7 a6 b# R  y
  71. }
    - Z: x1 d; |' y. {! g3 n4 `
  72. $ ]- f" B3 M9 S8 w5 q
  73. int main()
    ) R2 d/ C- T. A# I
  74. {; D3 Z; X" v% Q" U
  75.         char c;
    - _) E4 n: ?4 y6 X
  76.         int i, macs[6];
    3 @2 @( M( Y1 ?7 T8 Q& [+ e" G
  77.         unsigned char mac[6];" t, \; C- H, d
  78.         unsigned char stbid[256];
    9 ], S2 z1 d- j: v" ~

  79. & N( }6 P4 @: H, l# ]
  80.         if (readparam(mac, stbid) < 0)( y2 ]1 ?. k5 P& @7 |% N
  81.                 return 1;9 l0 Q# L5 Q: c4 ]' B5 R! D) ]
  82. 8 i4 f; @; A# A' r
  83.         printf("Current parameters: \n");
    ; R; o2 R" }' X4 c. f9 D5 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 @0 V/ _! Z1 ~! V' C
  85.         printf("  STBID: %s\n", stbid);
    . w' ]. q) G- b4 n9 o$ f
  86.        
    ( ?( L( E" C$ g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");" D. ^8 I# N6 A4 E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    : \+ Q1 {; N' R+ v+ f
  89.                 printf("Input MAC error\n");4 C' q* N; T5 w. z4 x
  90.                 return 1;5 f9 R5 y! l. `- n8 R/ \0 j
  91.         }
    ! T2 ~+ w) a4 }& s- {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" s; v) c  `$ E  H
  93.         printf("\nPlease input new STBID: ");
    # N) t' H4 ]: a' \
  94.         scanf("%s", stbid);
    $ r' a7 A6 E  `$ \7 e
  95.         if (strlen(stbid) != 18) {
    ) W+ T0 D1 u$ s8 M$ M$ G
  96.                 printf("Invalid stbid\n");) ]5 I5 `* ]! ^2 ^* E4 V, ?
  97.                 return 1;0 ?3 @1 [4 \2 u+ V
  98.         }
    7 m1 z$ o* w! ]# o# z
  99.         printf("\nNew parameters: \n");
      z8 O$ P5 _; V  `4 O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);0 A* v8 L/ }: _% ]: m/ @
  101.         printf("  STBID: %s\n", stbid);
    5 _2 Q- ?4 R: u5 T/ a5 _* P

  102. 4 ?( X0 c9 D" A7 ?' I
  103.         printf("\nDo you want to change paramemters? (y/N) ");& x' G7 B! o" G0 m; g2 ]6 o
  104.         for (;;) {& g  z5 c, K3 @; {; U/ |: |& [, D
  105.                 c = getchar();
    1 |' p" o- J& }" P# q5 I7 E3 R
  106.                 if (c == 'y' || c == 'Y')8 k% I/ b3 e% x. |2 Z* R' U
  107.                         break;
    6 ~' }% @- q  a* W
  108.                 if (c == 'n' || c == 'N') {4 L9 g! j1 g; B3 J/ J4 @8 D8 F- P
  109.                         printf("\nAborted.\n");8 @9 p6 b3 C* w% d4 H
  110.                         return 1;
    % D7 t1 X! I, h) g4 `0 U5 X5 y
  111.                 }. I# _0 e  i. D  E! x6 V+ _
  112.         }1 p% v" w0 @3 [! J
  113.         if (writeparam(mac, stbid) == 0) 9 H+ a( G, q. ^% h. Y
  114.                 printf("Parameters changed.\n");
    ! u) O4 n9 d6 q1 K  Z; F6 S
  115. : y5 U; @- R* O; b  {7 Q. d
  116.         return 0;; A) E7 h( W  d, _
  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
, q/ l; f  v" f- ], p在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

1 P" U0 P4 }8 p. X* X你用的编译命令行格式是什么?
# ?7 [: }, b! o! d4 e: L
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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