找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15358|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% V0 @, f2 Q4 r0 l" Q6 m
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ( f7 w3 `& F4 A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ I" a* R. `, c0 e7 L% Y. b5 h* G8 M
usage: himr <address> <value>. sample: himr 0x80040000 0x07 w1 h* `+ G3 c# ]" D, {
1 g  s! R% n. A6 V% |0 B3 a$ }( Z

: Z3 F5 h) s' ?. Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  m( W+ r9 P, V; I# }- Q
- A+ {& q7 u  E' m1 T+ M$ X! `补充内容 (2012-3-8 09:42):3 O3 g) t$ a; }( _9 a, l& E- E1 Z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  G& o& u* `/ s
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' K/ b' K8 B5 Z# ?) ?9 ?7 }2 r3 Q! X4 [0 p% @* P
himr <address> <value>. sample: himr 0x80040000 0x0
% L( U7 G2 c" Q; o* m! N
' @* [6 [9 t: t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。8 U0 Z6 c- _( t+ r1 Y1 C
himr 0x80040000 0x00# ^4 G) f8 H) G! O
himr 0x80040001 0x11# D- @% O/ P: {) k7 O" f4 o
himr 0x80040002 0x22
& e/ {" ]! I4 l; hhimr 0x80040003 0x33
$ k* `9 s! M% Z  `1 M1 |! rhimr 0x80040004 0x44
- c( ~( }1 y/ ^5 g  rhimr 0x80040005 0x55
& a9 r* b( ]5 A$ j7 P
% C! C4 x2 d2 jSN也是类似。' M  i, c6 T! b2 s5 j

9 X9 `% P+ K4 I* d7 A1 w现在主要是,谁告诉我们MAC和SN的地址?4 G! Y- u7 R) ~4 K6 F
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
8 U( I( `1 }; v一直想找到运程修改MAC和SN的办法,苦于无解啊
1 g1 ]1 M7 m0 Q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 . a0 R- Z0 R+ |" E9 M
! w( M2 ~$ n& h, B8 v
修改的代码早有了。到今天不会编译。
. t5 r% j/ \2 h) @+ {" P' i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>5 z4 G. F& [' C) Q/ p6 |3 _: H
  2. #include <malloc.h>
    6 e/ f& G( ]+ M
  3. #include <sys/types.h>
      x. {) l* R5 m) S9 Q3 Q: o
  4. #include <sys/stat.h>  m& d$ e4 n& i
  5. #include <sys/ioctl.h>
    7 b7 H$ ?; y+ b2 {; R$ `( l" M
  6. #include <stdio.h>
    ; X( ]% E- d7 z2 r0 |4 V
  7. #include <string.h>
    ( \$ R  K6 z5 x- {4 X  g  E  [. m) L

  8. 2 G# U  G* M5 O& W8 U* m/ o9 \
  9. typedef struct {3 M3 I/ G/ Z: h3 O% `0 t/ i4 }4 u2 S
  10.         unsigned int        e2prom_cmd_sub_addr;
    7 J! ^: r, X" v: F. E1 P: x; i0 W
  11.         unsigned int        sub_addr_count;
    2 V8 K1 j) F) A. L3 D9 ~! r' m
  12.         unsigned char*        e2prom_cmd_data;
    : S3 v2 {8 N6 x: p
  13.         unsigned int        data_count;5 ~0 b6 y& n% ?. H' L4 S$ ^
  14. } e2prom_s_cmd;
    , ~1 Z3 l" Z0 V- S

  15. . v$ Y" V$ Y' ?6 o: C, W
  16. #define E2PROM_CMD_READ 1
    . Z+ ^. H3 c. g- d8 E) G; C. {! H
  17. #define E2PROM_CMD_WRITE 21 c) h. a' F5 O+ f4 x. N  c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    7 A* l7 G8 w  ], ^- g/ v

  19. ; R1 z3 s& o1 S4 F0 j& x4 |; E5 Z
  20. static int readparam(unsigned char *mac, unsigned char *stbid). d2 N3 h% g  z, T
  21. {# w% I* ?  \2 n# G! K0 o6 U8 Z
  22.         int fd, ret;
    ' b6 L3 {8 E9 o& q) l) x9 a1 J
  23.         e2prom_s_cmd arg;" }4 Z5 B0 c5 y* Q: u1 o
  24.         unsigned char buf[0x18];
    ' V3 t) v; ]" ]( S( I- V
  25. 5 a$ X* V  x2 i0 G0 ?
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 m) s- v. N3 _3 r, v  ~
  27.         if (fd  < 0) {
    0 g, [' b% {; Z3 ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 y) M# O" X: H# a( o8 k; P' c
  29.                 return -1;
    ( C; K2 Z8 x, U1 n, y4 D
  30.         }0 F/ v" h$ p4 i2 ]. w. j3 F) O
  31.         arg.sub_addr_count      = 2;" V4 k# _: s/ y, K8 _" S8 ^
  32.         arg.data_count          = 0x18;+ @+ |% L; I$ {& c- U' W2 @& D
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 m& ?* n2 T6 W. ^; \8 _7 T  F
  34.         arg.e2prom_cmd_data     = buf;" F( R+ H" ^  [9 x3 e) |: \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 B5 j' A1 Q: J
  36.         if (ret != 0) {
    7 t' K. g( g; ~& [2 |
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);: M. A; f$ }0 f6 Q" u' U
  38.                 return -1;
    # O0 |( S8 v. V7 v# \0 r; D/ f
  39.         }
    ( _8 s- O4 j5 J& M4 r0 D1 C
  40.         memcpy(mac, buf, 6);
      w' s. d/ [8 h3 j' b
  41.         memcpy(stbid, &buf[6], 18);* V9 [' Q/ Z. d: [# I! H1 r+ g5 w
  42.         stbid[18] = '\0';9 o+ K5 x$ c9 f0 j; N/ V- U0 Z# x

  43. + O6 q: a6 R; U! W' P: i+ B
  44.         return 0;& i; B1 x. N" V; i. D! a
  45. }
    ' c, k, \9 G0 f8 O7 o8 X6 }& E5 D

  46. 0 {/ M" ~* H% A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)0 L# L1 \! [, C3 S( A% I6 f
  48. {
    8 _3 O2 d  Y/ [9 U
  49.         int fd, ret;
    * |0 [  P& m2 d- f
  50.         e2prom_s_cmd arg;
    , J/ w! P5 [1 H8 R' G/ _5 U
  51.         unsigned char buf[0x18];
    $ _3 R/ O/ j1 o0 h( n
  52. 7 u" c& t4 `" _1 `+ X! e8 g
  53.         memcpy(buf, mac, 6);
    2 u- }- m5 c& C* E
  54.         memcpy(&buf[6], stbid, 18);
    : @5 p' x9 K% O5 q3 _# o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      \, b, W% o" w0 h: \
  56.         if (fd  < 0) {
    $ ]+ h: B+ m2 f( E6 m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( p0 M8 T: i% W3 |( ]) X4 X
  58.                 return -1;
    6 o* h% j$ m, V" P9 _0 c- O9 W% n: w
  59.         }
    $ c  r9 t/ _4 i0 r0 S
  60.         arg.sub_addr_count      = 2;+ ~1 E8 w1 y- I$ K
  61.         arg.data_count          = 0x18;0 k6 _$ {' e6 i; H  q' P
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    3 Z8 p8 T& R$ d
  63.         arg.e2prom_cmd_data     = buf;
    : T3 D6 Z4 _" R6 c# I8 l* z; H
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);8 p4 Z2 V2 }" u3 c
  65.         if (ret != 0) {
    3 b6 `, ~0 D6 H  _. V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    " t% Q7 o, F+ Y7 K: @' z. S4 |+ {
  67.                 return -1;
    6 h% c' J" t( S+ F7 y3 G5 }0 ~. b
  68.         }
    # l/ c  d2 h) v
  69. * V# y8 {. P* E+ N
  70.         return 0;
    6 N3 W3 L# l. b
  71. }2 V- I. O9 ?: p. x* b
  72. - F- p# F! K' |" l) y+ J9 R
  73. int main()
    , `+ C; m8 a- [( ~! B6 x4 a8 M; B. s
  74. {3 C/ i# C+ |/ [% _0 }9 ^
  75.         char c;$ g+ d% Y  i( K  {. l/ t* l5 k
  76.         int i, macs[6];0 B1 K8 V( X( w! n2 N, X+ m
  77.         unsigned char mac[6];: O( Z; Q* c5 S( G8 X& v. _
  78.         unsigned char stbid[256];' [6 M& C7 z3 v
  79. / `, y& y) A4 t: s: b9 f, R
  80.         if (readparam(mac, stbid) < 0)
    . `+ T0 e" d9 d
  81.                 return 1;# n; j6 H# U( {' V# ]  E

  82. / |# w$ o3 n7 p
  83.         printf("Current parameters: \n");) O& Z4 S) Z' l0 o1 Z% {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 r2 Y0 i  x! S  i' j: w- `
  85.         printf("  STBID: %s\n", stbid);- G( \5 F4 ]; [% n
  86.         9 @9 |& ]4 @2 L, ]" g& o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( C% ?) E* n( _9 Y! G
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" q; r- P; v3 B3 l9 {9 |
  89.                 printf("Input MAC error\n");) @* f$ T! c1 \+ r, y
  90.                 return 1;
    8 z! Y9 O! s1 ]0 j$ _* ^
  91.         }
    ' y: ^( i9 v: f- S
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! s# M* z5 a1 k# z( x
  93.         printf("\nPlease input new STBID: ");; [# }. e# z  D
  94.         scanf("%s", stbid);7 R# O" g! e/ k* F) k9 E: h. N
  95.         if (strlen(stbid) != 18) {
    " g- t/ M9 _: \( E% R
  96.                 printf("Invalid stbid\n");
    ! n8 L& D0 O1 h' L* l8 i4 \1 d
  97.                 return 1;6 I5 c3 A& n$ X0 {" f
  98.         }
    5 x- i& }3 O" u$ {! A2 e& y0 l; L
  99.         printf("\nNew parameters: \n");
    5 ~& ~) T7 L# T0 S# w1 }
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - ^- T* E. I- e% V1 L
  101.         printf("  STBID: %s\n", stbid);
    * I2 y, o1 Y0 x$ `: a

  102. . i% ^5 F0 Q3 H9 ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");* e, X; f. d* Z( t
  104.         for (;;) {: p& [) Y: e2 M5 h" q
  105.                 c = getchar();
    & @) F8 s; w7 o7 o3 T
  106.                 if (c == 'y' || c == 'Y')3 v0 e* F' n$ m, ^
  107.                         break;
    $ z6 ~3 r- w: p6 M8 ?
  108.                 if (c == 'n' || c == 'N') {! k- p1 i+ x1 b
  109.                         printf("\nAborted.\n");8 a# @  A% Z/ b
  110.                         return 1;3 M( X: D4 q+ Q% b2 V# c# u3 {
  111.                 }  ~8 u, D3 _) K3 }  R! s: @9 h
  112.         }, @6 M# v/ F# l
  113.         if (writeparam(mac, stbid) == 0) 3 @1 ?  ?. }4 P8 v! r% {$ X2 Z
  114.                 printf("Parameters changed.\n");; Q0 i% _9 E4 r: T9 n5 n) S$ m

  115. , {8 [6 w. D% P1 O5 H
  116.         return 0;+ \/ v, [# E" o" m$ P$ p" S5 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 0 b$ F; l5 z) I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

- y1 b+ u( X( J你用的编译命令行格式是什么?
$ D0 J) n' |3 r! d( M8 K6 _6 g3 a$ |
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-26 22:00 , Processed in 0.104719 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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