找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15302|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr' @0 `  M! @4 v  v7 \& ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 N- ^2 k# O+ h. L6 L) o: }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:6 |2 [) I$ [. ~$ M
usage: himr <address> <value>. sample: himr 0x80040000 0x08 m  _& ~8 _- q

) [4 \+ W- e+ \) }# q2 r* D0 Q6 A" m# L( Y- r9 z) I; D; a
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?, M0 }5 Z9 I# q2 F" R# C3 B- R/ p1 ?
% Q- f& o/ E; {0 c' o; t" U! H. y
补充内容 (2012-3-8 09:42):  o! Z8 A4 H- a! _5 r8 B! c
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 n; }& \% K# S8 e* o/ @
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
8 A! ~8 N, T) P% E& \+ J
1 h2 z. T: k$ Y. `himr <address> <value>. sample: himr 0x80040000 0x0- U& X1 Q) O9 g+ }( O! w) e
% W$ Z5 x; R, C% M
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- W* g3 R7 h) |4 j! \- C  I
himr 0x80040000 0x00
4 I; t; K2 {1 p3 W7 `5 L% y' i4 ihimr 0x80040001 0x112 D( N2 Y; U4 i) I2 d; C7 l
himr 0x80040002 0x222 C; n8 b5 k/ H( `
himr 0x80040003 0x33# i6 j, v- X& f# }  e  q, E
himr 0x80040004 0x44- n9 V  M, g1 ~
himr 0x80040005 0x55) c2 U  \8 n7 g

) x+ R/ Q" ^. q+ m0 g. V2 fSN也是类似。$ [1 N' l3 W+ _6 h2 j- x" K, N

* f7 J0 h+ Q, T: e) ~8 b现在主要是,谁告诉我们MAC和SN的地址?
, j  o0 b9 C- W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & `5 G* l# `' M, h
一直想找到运程修改MAC和SN的办法,苦于无解啊

$ a1 s7 t% X2 }% |' G9 I源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - O0 T8 T* g: _1 b
( E; i6 W, }- z- G4 K, R
修改的代码早有了。到今天不会编译。' g' o/ T( z# F0 S( U9 ^; W3 U
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- z0 |' n- {5 U2 |6 O& y( {; V/ {
  2. #include <malloc.h>- T6 K$ \+ o0 y) v
  3. #include <sys/types.h>" M- |+ v# Y6 h+ ?. g- d
  4. #include <sys/stat.h>
    / Y% b3 N' T! b0 N, @
  5. #include <sys/ioctl.h>+ b; o7 u/ p8 l) X% b- |: o
  6. #include <stdio.h>* R& K1 a4 A" P: M  Y# [! A
  7. #include <string.h>! i4 B# ?7 s  I, z2 u( D- s6 b

  8. ) G6 J  P9 i+ S5 |: X, h; r
  9. typedef struct {; @& Y7 `+ u) K$ Y7 L
  10.         unsigned int        e2prom_cmd_sub_addr;
    + Y, C* w+ J% z  O; b
  11.         unsigned int        sub_addr_count;
    * n- t* T- J- i) j/ D& k
  12.         unsigned char*        e2prom_cmd_data;$ r+ p- o  E6 X3 ^& W1 i! C
  13.         unsigned int        data_count;3 H0 s( S9 e( ?- v# L* `, E+ q
  14. } e2prom_s_cmd;
    1 ~" c3 ~( H% h/ [
  15. 7 X0 }  z9 y7 y& r
  16. #define E2PROM_CMD_READ 1
    8 m7 @; i/ I. t$ l7 b
  17. #define E2PROM_CMD_WRITE 2
    # ~3 `) e4 s5 O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% g& Q4 L* g! }  I- k
  19. + r8 F# N# ?1 J9 Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) ?2 M6 K2 G: n! T# ^; _7 e1 V
  21. {
    2 C% k: S, w9 `8 {
  22.         int fd, ret;
    . F& v. R: z  d5 Q/ \  D/ v' t
  23.         e2prom_s_cmd arg;
    6 q" k; W5 a# v# `6 g
  24.         unsigned char buf[0x18];
    ) e6 n# S; X5 p; N* J

  25. , a& o2 n& ^7 Y1 r5 X3 P
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) e+ P& `7 d  v* \& [; f
  27.         if (fd  < 0) {
    * F2 N( J7 P6 i; ^+ \8 \* b
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 R* w9 p/ i7 m& x: y
  29.                 return -1;
    9 T6 U2 `2 D2 i) D+ k* F/ M) [2 L3 Q5 y
  30.         }4 k  u! \; ^6 b
  31.         arg.sub_addr_count      = 2;
    ' T. k( c3 g! f2 R+ r6 v
  32.         arg.data_count          = 0x18;
    2 K7 T0 Z% A& Q" v0 D7 m
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    - {) S( ?: b8 i% i
  34.         arg.e2prom_cmd_data     = buf;$ j! T8 a) b& o
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  ?7 v' f+ T2 ]' W7 T
  36.         if (ret != 0) {
    ; }! S6 k6 O# E: H8 K. L% {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 Q3 W. J7 @8 M; T" l
  38.                 return -1;
    ( U1 @  O& w  s+ d5 _$ I4 b
  39.         }
    ' _$ E) B9 C1 A/ q6 s; ?
  40.         memcpy(mac, buf, 6);
    # j( `; `$ \- j2 r( M
  41.         memcpy(stbid, &buf[6], 18);1 O; d& n  f! v- ]- P
  42.         stbid[18] = '\0';
    + {, D4 v$ ]9 H- U$ \! f7 c& Y

  43. . p, Y" K5 O3 ?, G  ~1 {
  44.         return 0;
    ( G0 h; P9 I3 L& y8 {
  45. }$ ^5 a% Q: B: ?3 ~

  46. % u, k" U6 \2 w! c( e! ~
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    $ i3 c3 B, z% a/ @
  48. {' t  c6 a/ S0 @' ?
  49.         int fd, ret;2 j, y8 ]5 o% x9 U+ Y3 ~' Q5 _4 Y
  50.         e2prom_s_cmd arg;" D0 O+ r" y9 Z( z7 V9 f; }" I
  51.         unsigned char buf[0x18];  k! R5 w( T  ^; X; b# ?2 J  O! Z$ x
  52. 3 H; f' X( b: H0 j3 ~7 b4 f
  53.         memcpy(buf, mac, 6);
    $ e( d& ~5 A- ?& j2 i6 P
  54.         memcpy(&buf[6], stbid, 18);
    . }+ O* h+ Q% c9 q/ H; d7 U
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 Q: f) P6 U8 _6 c% `0 b/ \+ Z* h6 X
  56.         if (fd  < 0) {  v3 r4 O3 e9 r" c9 P
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; ?( w$ @# B- f9 _+ q
  58.                 return -1;
    9 i2 r5 R8 a) X; l3 D
  59.         }  v1 X' B3 J- [9 @: X( w5 \; S- P
  60.         arg.sub_addr_count      = 2;
    1 y0 ~0 ~+ |; Q% d/ T# X
  61.         arg.data_count          = 0x18;
    - e/ \% O5 `8 U
  62.         arg.e2prom_cmd_sub_addr = 0x290;; X% ~! W7 p& m6 j- l' h
  63.         arg.e2prom_cmd_data     = buf;/ e$ o8 y8 W+ C7 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    $ H2 q5 ^; F! Y! G6 u5 P5 c2 W
  65.         if (ret != 0) {3 b0 O+ ~7 e# c2 Q' \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / k7 j! w" a5 W9 ~7 W
  67.                 return -1;( K, |/ _* u5 Q; m% Q
  68.         }
    $ S) U$ y( N- _0 d* J# o! h8 \1 W

  69. % B& p7 U7 G+ ?" d2 y* f+ O7 C# l
  70.         return 0;
    ! R4 x8 Q/ L8 B! y
  71. }
    5 Z1 Z% E! b3 c" Y

  72. 6 U& Q" G! \+ O$ l. M6 G
  73. int main()( I2 _7 c& a* A* |. `7 r
  74. {
    ! D0 u3 O6 c; T2 i. e- ^
  75.         char c;
    ) ^9 i+ _8 |0 l# U7 _" G9 r7 z3 ]
  76.         int i, macs[6];, N1 t! y0 T8 m5 a' }8 d; W
  77.         unsigned char mac[6];
    + c, ?9 ?# y( s9 k& G
  78.         unsigned char stbid[256];; d' }, _, x/ P

  79. ) @' X( S! L  d9 G
  80.         if (readparam(mac, stbid) < 0)
    " z* \- l1 l' z% ^/ r! d, z
  81.                 return 1;# Y, ?0 I+ A; @; O1 ?# C
  82. 0 B' P' ^& G$ L% S2 _  H3 J
  83.         printf("Current parameters: \n");1 e4 Z! N" _& E  F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) v6 f" d& J1 E. r' ~! G( X# J  b
  85.         printf("  STBID: %s\n", stbid);
    5 m$ v* b( _$ j* `4 k
  86.        
    0 y) O6 H. ^! Y0 F) |1 \3 I
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& v1 B2 e3 G5 f; c8 G" ^
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    4 H& ]$ M6 B( r7 r) T5 |
  89.                 printf("Input MAC error\n");7 ~/ x- K" L5 j& }7 V
  90.                 return 1;1 Y# n( ~- u  R. g- [
  91.         }
    ) v1 [  G  c# ^
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    6 a; Y; G- l& o. `/ x( x) y1 g
  93.         printf("\nPlease input new STBID: ");/ L$ c, \( K* l5 Q) b$ Z
  94.         scanf("%s", stbid);
      ~, [1 E' s' D/ S! l
  95.         if (strlen(stbid) != 18) {
    ! d: d: B& e7 H/ _
  96.                 printf("Invalid stbid\n");
    , U, O& u# n  Z
  97.                 return 1;
    / b$ R7 z9 Q  i
  98.         }9 K9 M. _: s9 a& h- h
  99.         printf("\nNew parameters: \n");
    ' e8 j& r7 G2 c
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 t% H8 ^6 p, f. r' h" j
  101.         printf("  STBID: %s\n", stbid);
    2 }3 P% P" W& Z& ^3 ^2 _

  102. 7 v+ C+ }2 X# ], T, T3 z4 J
  103.         printf("\nDo you want to change paramemters? (y/N) ");" x6 I; F( l; {$ @7 R2 x8 W& Z
  104.         for (;;) {
    7 E+ S6 Z6 Y* d5 t8 v3 u& s
  105.                 c = getchar();4 B/ g* y! R5 R
  106.                 if (c == 'y' || c == 'Y')2 w; z# I5 k  P" m( d
  107.                         break;
      T  G1 H& ~; D' P0 v* g
  108.                 if (c == 'n' || c == 'N') {
    0 ?' |6 X, p5 R  ]- X
  109.                         printf("\nAborted.\n");
    , x1 ?1 E. d% B, U9 H9 z3 f
  110.                         return 1;
    5 g! x  e! h) z! S! ?: F. O4 M- [
  111.                 }! Z, r% Y) N! J5 X, E
  112.         }" U. ^7 K, \1 \, [  r+ ~& b+ e
  113.         if (writeparam(mac, stbid) == 0) 7 p" I6 @3 x, C# P! i6 H' o% d
  114.                 printf("Parameters changed.\n");+ k; w! M* z% c& O: A% S  F2 H3 m
  115. 2 g9 |* k) ?& b; @2 X5 N
  116.         return 0;
    0 z4 v  b  s" d  d& v
  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
8 i4 A( d- D/ ]( b* |1 [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( Z( |& A( Y' J: j: M- e' o你用的编译命令行格式是什么?
4 a+ [& J$ X, {& }% r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-19 05:04 , Processed in 0.036475 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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