查看: 16741|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! {( G+ y$ Y; c" W9 e7 J8 k+ ?' T- |; W
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ n0 V. [, _1 u6 ^8 W& F. V6 o/ T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 b* g- ]! D% @0 k
usage: himr <address> <value>. sample: himr 0x80040000 0x0
$ [2 P, H9 L8 U; K1 q* n3 {% a9 Y1 K- M  S$ v$ V

3 G- [3 U, u5 R7 ^0 E; v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
3 Y" s' c* v9 P, ?, P+ g" ]- q" I" G; q9 M+ {! S6 o  l
补充内容 (2012-3-8 09:42):7 Y: q- {2 s0 p! }2 O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 j. l1 x! }" J- L4 e/ b这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' p* x% y2 A4 w0 N% O# o( K% N( V3 _/ T+ B' ]9 \5 a3 v5 x
himr <address> <value>. sample: himr 0x80040000 0x0
$ u* s% F9 b# S. z1 U
( ~3 o$ E# B% [) t例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
7 T: \  s: R" vhimr 0x80040000 0x00
  A9 w4 Y( N: ^2 k$ w7 D/ ~4 R$ Shimr 0x80040001 0x11( \/ y: }! ^7 x" R9 N# b0 t3 c
himr 0x80040002 0x22
7 p: {5 t9 j% b# v: V. \* \7 }himr 0x80040003 0x33
7 e0 r4 R3 q. C  A. Ohimr 0x80040004 0x44
2 ~! y+ j8 J8 Thimr 0x80040005 0x55
6 t7 }$ w0 J; B0 p5 I
/ d$ U+ o: v4 R1 o4 b0 LSN也是类似。
- Y. @# _! Q0 u" f% \( u4 c( N1 @% d2 E' y
现在主要是,谁告诉我们MAC和SN的地址?
. f- I9 r6 d. l
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, Y- `4 a2 n0 M& Q( i' v: [一直想找到运程修改MAC和SN的办法,苦于无解啊

2 j' q0 ]! A& Z( H5 g源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
! e1 t8 ^5 _1 O
3 r6 z' y' i5 M& m% G* p修改的代码早有了。到今天不会编译。
( _. ?+ V5 d9 J# S/ }" m9 `需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ) p5 c) q& b' ~
  2. #include <malloc.h>
    ) q7 ^" Q! ?2 L; K1 s+ b" n4 J" p
  3. #include <sys/types.h>
    2 Z9 F' E4 O6 p( S7 ?) g8 Z/ O
  4. #include <sys/stat.h>
    3 ]/ J' |2 h7 ~( K( h) I
  5. #include <sys/ioctl.h>- [/ f0 T# Y% t+ c
  6. #include <stdio.h>
    % G& Q  r8 P- K% {/ S/ p
  7. #include <string.h>
    6 {2 ~% _6 s7 g6 V3 b$ T/ c  A) `
  8. ( w$ J4 ]- Q! ?. G0 m; A( |
  9. typedef struct {
    ) l$ P* a0 c/ j9 Q  x% _* Q
  10.         unsigned int        e2prom_cmd_sub_addr;
    # X  `3 J6 S+ X
  11.         unsigned int        sub_addr_count;6 B( P: Z+ s- E+ C
  12.         unsigned char*        e2prom_cmd_data;$ i& c2 f( h& Y0 F. [5 E% H8 O
  13.         unsigned int        data_count;
    - S3 l9 N- B* g% O! j' o
  14. } e2prom_s_cmd;
    % F) r% [7 z( h6 V; b
  15. # h, V& W, K0 s1 G6 q( r
  16. #define E2PROM_CMD_READ 1
    , Y/ j: n4 Y" C' U6 j+ {% J- g
  17. #define E2PROM_CMD_WRITE 2( n  ?) \' H6 |6 E' i7 w6 B
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    & b! n/ {, ^, U& g9 e) O& I* I
  19. , L' s' k, ]  k) R8 \, l0 w) W
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) ~( i3 c, J" v& Q5 Q# Y- l
  21. {4 g' l- n4 [0 ]. K1 A* d6 T
  22.         int fd, ret;* R) I3 j  r7 S2 w# P7 S+ ~, j  w
  23.         e2prom_s_cmd arg;
    # h7 X& }' Y3 W0 Y/ q# t( F9 ~
  24.         unsigned char buf[0x18];4 k) n4 b! g* f* J  Z" D
  25. ; y  ~+ K& f" k: b* W/ G1 V
  26.         fd = open(E2PROM_DEVICE, O_RDWR);8 ]+ U' g* j' O/ @/ L) m
  27.         if (fd  < 0) {! f" G2 ~% ?  Q* a" ^8 U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 O$ v5 @$ p9 I( r& X
  29.                 return -1;
      B- G. u# G, |3 s
  30.         }
    2 n9 S+ D$ p8 v- @6 J
  31.         arg.sub_addr_count      = 2;) ^: H8 v  M! Z* s( ]
  32.         arg.data_count          = 0x18;
    1 z; N- q6 W: m4 M6 m1 {/ `
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 G+ [- s. |2 \3 x6 g1 G; Z
  34.         arg.e2prom_cmd_data     = buf;2 Z  u6 g9 X  [% w, W/ O! c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    0 M& O6 z! f. i% v! T
  36.         if (ret != 0) {
    ' a9 I, }' w4 N2 v; s# w* X
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ( e6 w4 C+ H  l3 `% ?/ h+ w
  38.                 return -1;
    8 x. u! x7 ?# [5 \& ]. k, @0 _5 l
  39.         }
    0 @) L( c& t5 K5 J3 R
  40.         memcpy(mac, buf, 6);
    5 x. H) c0 I+ g& D1 ~% Q: _, b
  41.         memcpy(stbid, &buf[6], 18);
    8 S" [% L& c1 c! W. p: v: D# x) V
  42.         stbid[18] = '\0';( i4 d9 N# P5 }

  43. * G% }# ]" Y( B
  44.         return 0;0 d/ u9 _2 c4 z: _: ~! H) y3 a+ m
  45. }
    5 F4 R' `" m! ~' ?9 m: E. \- o( a

  46. + C2 Y. P* r7 H0 G% y0 o% p
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # A# z2 W, J4 r2 X' g( _# p
  48. {
      F# @. A7 C" O1 y: u
  49.         int fd, ret;  a* x$ Z1 u) O6 a2 w
  50.         e2prom_s_cmd arg;
    % M$ u9 j- b3 R  L( F& o2 p3 L
  51.         unsigned char buf[0x18];3 e) j% |& p  f) S, _
  52. - F5 w) \8 ^7 g$ G/ H  \0 C7 y
  53.         memcpy(buf, mac, 6);
    ' }/ @- t4 u9 d% J+ E
  54.         memcpy(&buf[6], stbid, 18);( U( u2 f4 X/ Q/ h9 ?% Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ T' v1 s; M! s1 m3 O. W2 J
  56.         if (fd  < 0) {
    - {3 t# J$ @" U$ I
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 F5 C' c0 v  e0 {( [
  58.                 return -1;) O) L. W% i7 }7 R/ ~
  59.         }3 [9 }  G" s; d+ c5 C6 M4 ~% F$ t
  60.         arg.sub_addr_count      = 2;5 O4 @5 Y1 n  c( e( ]" M
  61.         arg.data_count          = 0x18;
    9 J+ c# t" h; |3 r6 n
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    % \- X6 F  D4 c
  63.         arg.e2prom_cmd_data     = buf;" h- c- u) d0 K9 X9 p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);# }( D& N. W5 T& T( n$ P
  65.         if (ret != 0) {
    , z: D9 e& L# t) ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; z0 e! K+ W% ]/ E6 o
  67.                 return -1;. x  A! q( p7 T* d8 q2 s6 @
  68.         }1 R  y% d/ @- m7 n% z& r
  69. 1 d9 g9 j3 `1 r( a
  70.         return 0;  J8 j# X3 {) Q) `) I8 E- V( @
  71. }4 ?8 g% ?. O+ R

  72. 9 \8 N6 b0 k; `; Q% d4 t
  73. int main()- i% }7 A9 L; e7 w- g) X6 l( s0 e
  74. {
    8 A, k7 G0 B$ m3 ^
  75.         char c;
    0 r6 H' g  `& g% V9 n. D
  76.         int i, macs[6];+ z: k8 ~4 r3 V, w+ R
  77.         unsigned char mac[6];  s% f9 v7 T* Q3 c# a) C! S1 z
  78.         unsigned char stbid[256];& z' v& W9 [, a% j
  79. ' W( I2 H8 [# u# E/ n3 V" Y
  80.         if (readparam(mac, stbid) < 0)
    $ }7 C4 B, R5 d9 B0 b6 R" N
  81.                 return 1;
    # V/ s( l0 Z4 C; ^, n" l) N1 ~
  82. / y8 I" d# E' b: u$ @
  83.         printf("Current parameters: \n");
    / G$ o5 g( |! Y8 y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" `& |/ `4 C+ z# p3 G2 R9 b
  85.         printf("  STBID: %s\n", stbid);
    " @6 f5 n# X: F) ~: C
  86.        
    & z( J( h' _% ]$ z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    2 O; T+ l5 y. x, r$ ^3 H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 \. Z$ [" U: J' |6 ]! C- ?4 ]% `* v2 Z
  89.                 printf("Input MAC error\n");# `1 q; `: w( M$ G& ^' f
  90.                 return 1;1 `5 Y; K$ E& q  L& s  o5 b  x
  91.         }0 G9 R' a. d% v$ v3 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 }# t2 \, ~& B6 F  i
  93.         printf("\nPlease input new STBID: ");3 b/ e8 M; J$ K  R$ @" j
  94.         scanf("%s", stbid);
    0 R" }5 N( \+ N9 m  o  K. G
  95.         if (strlen(stbid) != 18) {' e, l. L" d' E, F% @# h# s
  96.                 printf("Invalid stbid\n");- E5 B# O3 c4 X& q* ^) V" D& K
  97.                 return 1;
    " c% `* F- X& M) ~
  98.         }* m' D3 y5 B$ T  r! W
  99.         printf("\nNew parameters: \n");  g( O" r8 |+ ~# \; [
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / O' X4 s+ Y1 q4 V7 b
  101.         printf("  STBID: %s\n", stbid);0 D: _* U# R. l+ p4 y+ _
  102. 8 z) ]& G/ X/ }6 r
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " _1 F8 ^7 E1 G- f$ `
  104.         for (;;) {3 ^1 x5 z: \" V
  105.                 c = getchar();6 v" A/ x& ~7 x( o1 z$ x$ Y
  106.                 if (c == 'y' || c == 'Y')
    4 F7 ^$ T( N4 K: P' p
  107.                         break;* Z0 ~4 V) T, F7 m/ |; T' t
  108.                 if (c == 'n' || c == 'N') {2 F1 Z" v/ J$ W4 R8 a) k$ V
  109.                         printf("\nAborted.\n");
    ! b/ O. \8 Q4 O2 h  V+ c6 w
  110.                         return 1;
    1 M" H3 j4 Y3 A2 i8 G8 r
  111.                 }
    8 X: V; R" C1 b
  112.         }
    & f9 i5 f: j" _, ?' y2 ?# N
  113.         if (writeparam(mac, stbid) == 0)
    " b4 U% A& H5 ~
  114.                 printf("Parameters changed.\n");+ z( j3 _; K2 F3 I

  115.   F8 ]& i% X+ f  l
  116.         return 0;- ?- U. v" W) p
  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
* U. x& |" T4 F2 r在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 d3 @& x4 N% G
你用的编译命令行格式是什么?
3 Q. e3 d$ t6 V& w0 j4 d. j- e$ E
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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