查看: 16122|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    $ A" A& _: y" A7 h7 Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: j/ e2 A2 {/ H8 T& I2 D  v& t
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ I+ |* p) H3 m8 ]
usage: himr <address> <value>. sample: himr 0x80040000 0x07 J/ h1 s4 m" d. g

5 }6 }/ [" ~& z/ {( D& ~) S3 ]* w: J3 |& R( ~) T* H
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ K4 A; Q! }5 W9 y9 ]6 M9 s6 V
2 c* @, ?! D" W/ {1 s4 L; N, C补充内容 (2012-3-8 09:42):
3 W- v% m1 @) \% u* mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 ]+ {, G  e0 j2 B这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
2 c& z# b* b- }$ F3 ~7 C
+ `' B" `& G9 ?2 I5 j4 h! A& f' Z# Y2 A* Yhimr <address> <value>. sample: himr 0x80040000 0x0
" ~5 A9 \& R8 g- e
+ Q+ p6 E/ [2 `- [6 C例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
# c. ^6 O4 Z) `* ohimr 0x80040000 0x00
* T/ w. C" O& lhimr 0x80040001 0x11" {5 Z9 I/ k' U4 w  [8 \
himr 0x80040002 0x22
1 O6 y4 G# a* S) K2 ^  V$ i1 jhimr 0x80040003 0x33
, q' I; c0 m3 {* {% Ohimr 0x80040004 0x445 V& c6 _! Z; h: t
himr 0x80040005 0x552 G1 h) h: U) o$ G2 e3 ~2 z% F! u
5 Y* ^' Y' _) V# G
SN也是类似。& q; O0 u% O+ j3 a! B7 S
$ p3 K& H8 p' W3 N
现在主要是,谁告诉我们MAC和SN的地址?- L: U9 y4 T2 t( d$ y' |
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 - z$ U$ `7 w6 v
一直想找到运程修改MAC和SN的办法,苦于无解啊

* L+ V+ S; W% Y1 x源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑   [. M! f: B7 B; N. p+ j

$ m, ?1 _. r2 c8 u5 _  @1 Y修改的代码早有了。到今天不会编译。  j" c  @: P& \! B. r" S; ]* ?) v( V
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>$ M& m& g$ l; h& u4 {( ]
  2. #include <malloc.h>9 n8 n2 x) {8 H0 k0 r% o
  3. #include <sys/types.h>% y7 a  n, E$ L: Q
  4. #include <sys/stat.h>5 Z/ b. l& B' s6 K' R
  5. #include <sys/ioctl.h>7 b6 O7 C. `- h( o% c7 G
  6. #include <stdio.h>
    , b, J5 x$ b$ E+ y( d
  7. #include <string.h>
    ) g7 p% }4 {5 s8 j* V$ d* Q  R4 s+ D
  8. 1 B. h3 ~. L6 C( h, ~$ k
  9. typedef struct {& o- d6 f5 V! ~
  10.         unsigned int        e2prom_cmd_sub_addr;" \& y% `& p$ R# s& p% E
  11.         unsigned int        sub_addr_count;
    - h" S, v' M1 c# e! X+ Y1 p
  12.         unsigned char*        e2prom_cmd_data;' k* S' A( e9 t6 q1 X
  13.         unsigned int        data_count;
    ) H. H4 m$ B  L; s6 x+ A0 }
  14. } e2prom_s_cmd;, o7 i2 h+ K7 }/ }. @' ~' r
  15. 6 V$ H  u3 M% Z" h# ?, g" H& H
  16. #define E2PROM_CMD_READ 1; s% u. i8 s% J$ S' ]
  17. #define E2PROM_CMD_WRITE 2
    2 f) d7 B* i  ^4 @+ Y4 A4 E$ H& T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; t  a6 R/ v! q9 H! n* c
  19. 2 O  u  r) m" {; K/ Q% j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : [4 ]  ?, O9 x" h! E5 Q* C- d
  21. {  p) G: l4 Y2 O2 K8 n: F
  22.         int fd, ret;
    : U: L" }4 s* P/ ~; x: j
  23.         e2prom_s_cmd arg;
    5 {  L2 V: x& d' h4 M+ a/ c3 @
  24.         unsigned char buf[0x18];
    ) o+ _& |5 R7 d0 u$ R" T' E9 |
  25. $ k: g- \2 x  y5 t( k$ H  L& m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    : d' ~$ z2 B+ S$ @: m# Q+ @
  27.         if (fd  < 0) {! H$ N; }3 T$ t5 c& S9 K) @& \
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # B; e% z" [: V
  29.                 return -1;
    8 J& x* S- g3 m2 F4 Z
  30.         }
    ' C* t/ B% m& ?: N& z  s
  31.         arg.sub_addr_count      = 2;
    ( `8 z- Y) C3 z* \$ ]
  32.         arg.data_count          = 0x18;. v% a4 H/ E, t* j+ h
  33.         arg.e2prom_cmd_sub_addr = 0x290;, c3 A/ ?  t( r, ~- T" W8 m
  34.         arg.e2prom_cmd_data     = buf;5 z1 ~7 g/ e8 s( Q8 }
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - T6 w6 v: L! h/ N1 d8 k6 s7 ^& z
  36.         if (ret != 0) {9 Z, _  l" W# a" Q" |+ N
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% e+ R! S7 ?4 g5 q* ]
  38.                 return -1;
    ( N. t- y# P) ~/ _" P4 I& P! f
  39.         }2 Z" c; ^% G! x4 ~( R$ \
  40.         memcpy(mac, buf, 6);
    % \$ a" w/ {8 n7 S: ^
  41.         memcpy(stbid, &buf[6], 18);# K) k& j8 x, S7 R9 @
  42.         stbid[18] = '\0';
    * h& ^/ G5 O% w/ Z* C& i& W0 _

  43. 2 t+ {  N: i7 J5 Y. B
  44.         return 0;+ d3 C3 Q; ^( p* j
  45. }
    4 |* k: y. A# |) ^' Q' }' e

  46. 4 l5 Y; `' b+ w9 r5 ], M# ?* @
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    7 J& Y" s; C* G% f' ]; M* R
  48. {
    & e3 ?5 {: P8 F. X) u& z
  49.         int fd, ret;
    ) ~: a* T1 V3 ^! ~% R3 m2 w
  50.         e2prom_s_cmd arg;
    , P0 V& W8 m9 H- d! h, Y
  51.         unsigned char buf[0x18];; E2 {1 N) ^$ n8 o/ |

  52. 7 A- E# k8 e/ K+ v; j
  53.         memcpy(buf, mac, 6);& V9 e. a7 I9 W! d7 P
  54.         memcpy(&buf[6], stbid, 18);
    9 Y# U8 @% i& Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' t6 i7 C  {4 b+ r
  56.         if (fd  < 0) {$ [  B7 ^3 P  M  H1 ?8 `& v) E
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    : v+ U* r8 f( J5 M* ~9 S
  58.                 return -1;7 p) s3 K# l  z7 q1 R, E
  59.         }, `6 V' n8 S& d7 M' y8 \. Z/ j- {3 K
  60.         arg.sub_addr_count      = 2;# W4 E$ M8 }( s
  61.         arg.data_count          = 0x18;
    $ K. S, K+ s2 A7 N5 _0 e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    4 R/ z) |9 ^+ p3 j) z9 c# {" `
  63.         arg.e2prom_cmd_data     = buf;
    9 k  f. j; X. P0 d; C4 p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 z( Y4 @( V8 I- i% S9 ?8 a
  65.         if (ret != 0) {2 J# B' X( c4 N6 T  U6 P" X' \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    # r% [  \* W# D1 T  |8 @4 z
  67.                 return -1;. j6 l% X. Z( o( Y2 T$ T) H
  68.         }  x. h4 }( f$ T" ]' }4 s
  69. $ R4 R2 V# q  M7 C* f; j( r2 N
  70.         return 0;5 N9 g: T- t. t5 h  p
  71. }
      \2 r1 q( U: d
  72. & t: k- B3 t" J3 X& m* Y
  73. int main()( a0 x5 P) m4 k" P# f
  74. {" H' U" @" b$ c/ A" i
  75.         char c;8 U0 C+ V8 `  ?& W; j8 [. E
  76.         int i, macs[6];
    8 w; o" v$ G' H
  77.         unsigned char mac[6];
    3 D. L* S. Z# a  ?# m5 c3 t
  78.         unsigned char stbid[256];
    2 j0 ?* y& t0 R" u0 X; |
  79.   B" }2 b! ?# a4 Y
  80.         if (readparam(mac, stbid) < 0)8 q. T5 e3 i4 d3 k& \
  81.                 return 1;+ w1 f4 Z% J& @, B5 s; }6 }( E
  82. + V0 v4 H6 w& b+ D# {
  83.         printf("Current parameters: \n");
    ) Y6 P) k+ `5 ^
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' `5 L! l% @$ D5 ?/ t$ e* H
  85.         printf("  STBID: %s\n", stbid);8 e' H9 M( t% q; W
  86.        
    % s4 V1 L) `( m7 a9 d
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    % x! [  \5 b$ z9 t; {
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    % l* W* |& l% l; u' c- L
  89.                 printf("Input MAC error\n");
    + d. f. g& c* {( I
  90.                 return 1;  e; y$ t6 t/ a/ O
  91.         }# Z! e4 ]) T8 v. B+ p4 D8 \
  92.         for (i=0; i<6; i++)mac[i] = macs[i];) c# I. f" ^9 Z
  93.         printf("\nPlease input new STBID: ");
    ; ~" j; e! W: i5 d2 e  Q
  94.         scanf("%s", stbid);; B6 F9 o; K- n( Y
  95.         if (strlen(stbid) != 18) {6 ?- X  p: J" q7 Z$ U' t
  96.                 printf("Invalid stbid\n");
    : |; {, B* i3 z" U4 B5 H. X
  97.                 return 1;
    / q0 M) ]2 W" L1 h. |
  98.         }8 O4 i  D/ H) u8 q' Z7 l
  99.         printf("\nNew parameters: \n");" y$ G0 a- ^6 _: [0 {
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" W; A% c" S0 o' W8 r; u  |) a
  101.         printf("  STBID: %s\n", stbid);$ c/ |% J8 J9 l0 @9 L% L

  102. 0 A) H8 `. e' i/ D1 U$ a$ n4 _# z
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    6 j; z" k6 G8 O# V4 C9 `: ^
  104.         for (;;) {
    & J' [3 s( J+ c. S3 ]) n
  105.                 c = getchar();
    8 x$ n: d* A5 l9 @* r1 o
  106.                 if (c == 'y' || c == 'Y')
    4 p8 H1 v' u# K2 |* i6 k, p
  107.                         break;
    ; B! B' Y1 q9 I( z2 R1 y
  108.                 if (c == 'n' || c == 'N') {3 _9 S8 a% x' _
  109.                         printf("\nAborted.\n");
    ' x+ @1 j% P8 L9 y& f
  110.                         return 1;8 h9 M$ K- f5 f# D6 E" Q
  111.                 }/ j  W) B1 ^& `. I" ]2 z- ?% s
  112.         }
    % V/ l% t0 ?6 M! d/ {: g
  113.         if (writeparam(mac, stbid) == 0)
    ) a6 _5 g2 M' z1 y3 U( q0 o) ~
  114.                 printf("Parameters changed.\n");
    9 l5 b9 B) }! k& V! z5 k- _9 J

  115. & p/ `( j& ^- h: ^  j
  116.         return 0;
    % z5 p& d/ k9 K& R4 x
  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 ' ]1 ~6 g2 j% ~
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

' H% W+ \7 P7 ~& K$ P, Q你用的编译命令行格式是什么?
7 h" x: a5 }9 X, h4 r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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