查看: 16946|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    , C, x: O* M$ W$ D$ b$ b9 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' `: v( }8 m- W. f  r3 i* D
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:# k, U3 ]$ g! L- Y
usage: himr <address> <value>. sample: himr 0x80040000 0x0
) [8 _- U7 ?0 P
& m, s  H$ s: S6 w) Q( y1 l2 o$ K* G) g5 Q8 J$ B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; B3 h4 [, e2 o/ P+ E+ q, m9 Q6 r
) D$ x& I# m  a1 Y补充内容 (2012-3-8 09:42):
1 g; V: P3 f& N! R1 |$ n$ ~8 [$ q6 ]' Xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
" A- z0 s( R% T" L/ C这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 ?6 h5 K! c. x% C% L
) L! n5 ~' Y6 o
himr <address> <value>. sample: himr 0x80040000 0x00 o4 j% G7 e8 X8 s" Q7 B) X
9 b7 Y' W0 P& W+ ]- [- T  ]
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' I8 L; z& V, khimr 0x80040000 0x00
7 @1 ]! |( t9 Vhimr 0x80040001 0x11, ^/ |/ L" q3 [. a. N
himr 0x80040002 0x229 J6 h# b/ A  D0 o" h" f" g
himr 0x80040003 0x33' _6 c2 R* H, _; |+ e
himr 0x80040004 0x44! z4 O1 D* C. {8 W
himr 0x80040005 0x553 V' Q3 |8 Q' K1 K( x
  S5 ^  w) i2 s: R8 }
SN也是类似。/ e( K' H& i: k( ~
6 c3 ?! Q" m5 _9 ~! X& m
现在主要是,谁告诉我们MAC和SN的地址?
* D" X% F( p3 N9 |( G
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
# u  M' F8 v* ?! D2 n1 S; C1 x/ n一直想找到运程修改MAC和SN的办法,苦于无解啊
6 E6 y; _2 v7 `5 G' y" ^* B" h# c
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& t8 c, \& U. H2 b' C( M6 S* S  k5 u1 s  J6 L9 R
修改的代码早有了。到今天不会编译。& z; _% k% j  y
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 p( t. ?6 w" T3 A. U# ]$ Q3 W
  2. #include <malloc.h>; d/ Q) T' h; j9 U7 `1 C" X7 g
  3. #include <sys/types.h>1 {# q" E' ?3 g& K. j( P; _2 b
  4. #include <sys/stat.h>6 h' s, C! _; s' E) S
  5. #include <sys/ioctl.h>
    ( T8 g' _, i8 M( i
  6. #include <stdio.h>
    2 o& k! E( ]5 A
  7. #include <string.h>0 I9 R- Z  P9 @; m; o0 q1 l* w
  8. 8 ?+ s) P. d; K  q0 S! P8 R( H
  9. typedef struct {% `- t, a2 k+ n" E8 Y1 K+ S
  10.         unsigned int        e2prom_cmd_sub_addr;6 b! G) v# F$ W2 C& k" V3 t
  11.         unsigned int        sub_addr_count;( ?7 l, j1 h6 g& e% z- c
  12.         unsigned char*        e2prom_cmd_data;  g6 E+ k  s# H, }
  13.         unsigned int        data_count;% _& T5 f) G$ Q$ e+ {& z( a
  14. } e2prom_s_cmd;
    / N! r3 |3 Q- n5 n% v- D

  15. 8 M& @$ M6 T. J  X  K
  16. #define E2PROM_CMD_READ 1( H7 V( u0 [6 m% `+ t; Z( O! y
  17. #define E2PROM_CMD_WRITE 2. h, ~6 M; O$ f" Y9 j6 w( G+ U: F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"4 O+ a% M9 ~) H! |7 A
  19. - S: t1 v1 t' }
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / f0 S* a0 G' ]0 x- Y6 S
  21. {6 f- H( J7 v& [# ^! f9 o$ K
  22.         int fd, ret;
    ( F- `9 T: k0 W, ~3 f0 M: h: s) x
  23.         e2prom_s_cmd arg;( X, V- k1 Q+ Z9 }+ `
  24.         unsigned char buf[0x18];
    0 ^( _" C# n3 g& }) v3 `

  25. 5 O4 @# {& E" \8 Q$ f% s: e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 i# i) Z1 F5 \, B6 q! I
  27.         if (fd  < 0) {( w7 G( \  c0 }& P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) S6 i  m3 @: [6 c% H( _& E, L# ^
  29.                 return -1;
    ) f& u- D# t1 g' I6 e0 F
  30.         }  U' z2 m) n* ?0 j2 R1 w% t
  31.         arg.sub_addr_count      = 2;
    ) M5 y- B' \4 s; m( D
  32.         arg.data_count          = 0x18;) R6 I* g* a( W0 P! E1 S2 @
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . v" x, q' G7 K0 X
  34.         arg.e2prom_cmd_data     = buf;  k% W9 I  a3 w5 t2 }6 u2 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    4 N& R' j/ \7 d* }
  36.         if (ret != 0) {4 k5 B" E& M" n: U9 x4 r/ O
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& z& i1 u" _$ b' p2 O
  38.                 return -1;, Q6 C2 l7 c# K' Q1 Z
  39.         }" @) M/ ?0 y1 F; u# ^" s
  40.         memcpy(mac, buf, 6);% \, p& ^0 F* }+ N& ~
  41.         memcpy(stbid, &buf[6], 18);
    6 g- L8 }6 w- a+ l2 g1 Y5 L
  42.         stbid[18] = '\0';
    * U, `: Y) Y$ K7 c8 D0 d
  43. ; L  t, @! _/ y7 k
  44.         return 0;
    # f* n) K1 o! z3 _2 R/ q
  45. }
    : e& C. H* q. ?  }* Z' `  ^) ]

  46. # Z* J. q$ X7 b, [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  @0 N+ t$ q0 U  G6 L* ?
  48. {) Z" U5 Q+ Y+ m" j! m: E/ q# [1 Z
  49.         int fd, ret;
    6 a5 D( t; P+ h9 n
  50.         e2prom_s_cmd arg;" w# G! P8 \6 j5 ~2 C# `1 z0 t- g
  51.         unsigned char buf[0x18];
    4 A1 @1 F& q0 q8 b! `8 Q" B" o
  52. - `+ u4 o) ?* j( J- Y
  53.         memcpy(buf, mac, 6);3 H( k0 c) Q( l1 F& ~. E" a- F
  54.         memcpy(&buf[6], stbid, 18);& ]  H2 `8 S! o. F7 H6 M3 S: C
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " \7 u/ L8 Q  a# D/ {# L4 |
  56.         if (fd  < 0) {
    3 [, Y: p* T, o
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* B+ q* e. e6 g5 V
  58.                 return -1;5 Q- K5 Y1 r! j- m) @3 j7 v: @
  59.         }- J' j; m2 P$ M" Z9 u: f
  60.         arg.sub_addr_count      = 2;
    : d. O0 i7 L1 M3 ]/ x  B
  61.         arg.data_count          = 0x18;7 R6 u8 \: D2 z4 G& ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;' W4 }2 z8 O9 ]7 F! ]6 y: k
  63.         arg.e2prom_cmd_data     = buf;
    $ [- ~0 O* ?+ `6 o
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);+ D9 `3 B, @+ q
  65.         if (ret != 0) {
    - P0 `+ n! n0 K. j+ Y  x! t. I. P+ Q. [: p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 e+ ^' o9 P# x" F1 {6 Z  S
  67.                 return -1;" l6 c2 I1 c' \! B0 G/ f
  68.         }! o8 L! Z7 g# c- L4 a0 X- E

  69. - C2 a4 a* C; [) S1 a2 |
  70.         return 0;, N7 H0 ~' U6 T/ Q" W# t
  71. }
      W. W" ~6 I, z5 G

  72. " E9 t0 @0 W, ^* N3 S2 g8 C- q
  73. int main()
    5 h' D; T; @# I# k( B# z" ~; }
  74. {
    ( h2 u8 u; ^( j: n# w+ y
  75.         char c;% X# s( i3 k' p4 y" ~
  76.         int i, macs[6];
    3 ~$ ~8 z4 k, v) ?* b* A
  77.         unsigned char mac[6];
    8 Y* H5 E  A- \
  78.         unsigned char stbid[256];
    0 Y  ^. X/ W1 ]0 k0 {

  79. + s* J& D% ?; x  G0 c0 O
  80.         if (readparam(mac, stbid) < 0)( L6 M' ]8 |( [$ }4 D
  81.                 return 1;  l2 k/ G" H2 q# w
  82. 6 [1 V3 X. u8 X, F+ g+ H
  83.         printf("Current parameters: \n");' A0 B: |  M. y7 }8 T2 U# S+ {
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # D/ @8 b0 D6 _* f0 g
  85.         printf("  STBID: %s\n", stbid);: I7 L4 a& T" H# R5 v: J
  86.         5 C2 A. e5 O& I; g- t9 t5 H- J& u
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    - I$ ^$ H% F. j
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {# f: N/ r3 }5 U$ D- F: O. J
  89.                 printf("Input MAC error\n");& c8 a1 w9 L1 [4 f+ k5 B( I
  90.                 return 1;
    . v  C7 |; K/ A3 I  V! Q
  91.         }0 ~8 _; K0 g: R2 Z3 [, W2 k, o% k. c8 L
  92.         for (i=0; i<6; i++)mac[i] = macs[i];, _, G  r4 o: z& Q8 W: y. Z7 E; Q6 C
  93.         printf("\nPlease input new STBID: ");
    " B3 W' a+ A: j1 {/ [
  94.         scanf("%s", stbid);) f6 M" ]0 }* s, N- ], I( a7 D
  95.         if (strlen(stbid) != 18) {
    - D5 R. H* S3 a9 S
  96.                 printf("Invalid stbid\n");/ o/ x) k) L( s- q* [9 P
  97.                 return 1;2 L3 W" ?# t7 ~# H/ l
  98.         }
      k1 f2 e1 V1 b0 w# U
  99.         printf("\nNew parameters: \n");
    5 C" F1 z2 y9 D; e8 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' L0 W3 G8 d) M7 d' Q& c
  101.         printf("  STBID: %s\n", stbid);1 o/ x* g- A( J7 e5 k" A

  102. " [% N; w# R1 B2 N; \( J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / i* u; p& F# N6 c% `9 @/ b" D8 O
  104.         for (;;) {
    9 ?, i2 i+ a: U6 O; \
  105.                 c = getchar();
    " y! ?' K+ T4 B; j, A0 D9 y7 a
  106.                 if (c == 'y' || c == 'Y')5 L- u6 k; u  [: a
  107.                         break;1 D- @4 |( r% y* O+ i/ j
  108.                 if (c == 'n' || c == 'N') {# P1 i4 ?4 V0 h- [. w
  109.                         printf("\nAborted.\n");
    / B& C5 ~. S' o- S0 U
  110.                         return 1;, w7 m  b- C8 u) d8 F6 n
  111.                 }
    , r1 x! a8 o4 H: Q& a
  112.         }
    6 h* F6 g4 q5 q) Q$ _0 }
  113.         if (writeparam(mac, stbid) == 0) 8 l, ?  q4 e5 g
  114.                 printf("Parameters changed.\n");$ L. K$ b3 O" A$ Y- b

  115. ( S; p4 |& A4 T3 m) a. U+ `7 @# \
  116.         return 0;% a! A  Q1 V" X+ 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
. K' g0 W# l$ Z- g在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

$ h9 v5 Z+ w, H你用的编译命令行格式是什么?9 O$ L0 O; @# T/ k6 h
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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