查看: 15867|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ o1 t) a! O" |# H" E
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # K6 {, A/ C3 e( W; p$ [2 o
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:) W+ c3 Y2 i9 u  p2 y7 u& o
usage: himr <address> <value>. sample: himr 0x80040000 0x02 e3 I' D6 o" e2 p5 t, D

" c" K4 [( P3 F# Q. t, q+ @) t0 n5 P. }5 a' s# y; u. h
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?2 C7 v* q5 u% f6 G& K& }% E) S
+ J( Q. u2 Z1 R- {/ B2 B- V
补充内容 (2012-3-8 09:42):
6 `' l, b; f8 {' o* N! zhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 b- E# r' W  z' l7 t# P这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。- ?& N# I" h; F0 u: S- [5 t
; d' D; ?" n, i: h9 N
himr <address> <value>. sample: himr 0x80040000 0x0  }3 z! ~3 Z! F1 W- l

% A( }- G# C: D# W: S6 E例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' t8 J# e! q/ k# o$ I0 P' Uhimr 0x80040000 0x00
- [9 p! u2 w3 j# [! @- W* E- z9 _himr 0x80040001 0x11
! e: r& v* V8 H  ?& r( O) r  Fhimr 0x80040002 0x22/ X$ V6 Z: d+ V2 a/ i. r
himr 0x80040003 0x33
% T3 L! B2 F/ \! M$ ]himr 0x80040004 0x44; A. e% H( ~1 m3 L% X3 A6 b
himr 0x80040005 0x55' Z& \; [; q( e$ Z0 J

0 V6 a# h: l- n% E, F! dSN也是类似。! i# U  v) k( u6 @6 w% p% R! \

# i# f0 D' S! Z现在主要是,谁告诉我们MAC和SN的地址?
) `. h) P8 \8 E, n& T" {0 a8 i
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
" H& W5 C9 o  h) t3 Y一直想找到运程修改MAC和SN的办法,苦于无解啊

- [2 I0 _; j) X' ?) t0 U源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ( N9 I- _) @+ e5 b
! s( }0 k* X% E7 s# Q! |! o
修改的代码早有了。到今天不会编译。
4 [  R/ k! @6 {$ g1 b; J, X' N需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    * H1 h+ G* w" d1 t6 a7 h
  2. #include <malloc.h>
    , ~$ k: ~+ @7 i, U
  3. #include <sys/types.h>
    & o% e' r+ y7 a& v/ R
  4. #include <sys/stat.h>
    9 w+ d4 d, A/ b5 J+ K& L8 V! c4 k
  5. #include <sys/ioctl.h>' Z2 v- @# g$ F9 J5 v
  6. #include <stdio.h>
    " P( ?8 p# f3 {% K3 U
  7. #include <string.h>
    2 f. k" u9 J& P& N- L: {% F4 r
  8. 2 e3 ]; @" D  x4 ?, y3 g3 m
  9. typedef struct {1 A; X7 O- A) n4 m+ Q+ u) J, ~
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 u4 E8 q+ _# [; i0 @% W8 R
  11.         unsigned int        sub_addr_count;! p, ?, V2 A& D  R* Y- C
  12.         unsigned char*        e2prom_cmd_data;. f2 P; v$ j" p; R
  13.         unsigned int        data_count;
    , \1 B6 f0 ^! H
  14. } e2prom_s_cmd;8 K; l; n: t, x# g) }+ H4 d
  15. 1 Y6 g1 w2 o- X
  16. #define E2PROM_CMD_READ 12 b' B8 I: ~& b1 r5 r9 [
  17. #define E2PROM_CMD_WRITE 2
    2 c& u) y/ p3 O0 t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    . ]( P* [4 S) L4 `! u% M$ t
  19. ; _  T8 s$ F& {) ]& W8 I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)/ D% r9 k0 Z# U8 h
  21. {! y$ S/ ?9 }& ]7 j( \
  22.         int fd, ret;# S' f+ H7 o. ?+ \, q1 Q0 n) q6 u+ X. B5 q
  23.         e2prom_s_cmd arg;
    ; d- @& J+ U% o7 m7 e2 T- c0 b
  24.         unsigned char buf[0x18];/ E5 _- |4 ]9 I0 w# l

  25. 2 k4 q! f7 b$ v3 b7 c+ J3 J4 C
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 y% n1 q! |9 W% N  T# X
  27.         if (fd  < 0) {
      ]9 R" z* k/ O# f7 ]" q' O& j9 g
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . I# F' d9 e* B
  29.                 return -1;) j8 j; t& e0 J1 f% @
  30.         }+ O7 ?) n4 D8 i" X! s5 a% Y1 f
  31.         arg.sub_addr_count      = 2;
    ) A* G) h, I6 \: {  v' y; _
  32.         arg.data_count          = 0x18;
    . ~7 s2 A- n2 }0 j% e
  33.         arg.e2prom_cmd_sub_addr = 0x290;# Q# b& f+ h& ^, P9 m1 ]6 \
  34.         arg.e2prom_cmd_data     = buf;7 ]" n" n8 ?  n8 q# R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & i; g/ A3 q7 |5 `* l; K9 @
  36.         if (ret != 0) {" R: [' Y/ y. g" b" z6 n" d+ j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : P6 G; u# K4 R7 s
  38.                 return -1;
    4 y4 L( S' h* f' V8 A$ _5 o9 V
  39.         }6 z& W7 H% A0 K
  40.         memcpy(mac, buf, 6);
    ! q% ?2 s* d( x$ B! _
  41.         memcpy(stbid, &buf[6], 18);* P* O3 m7 L% ]4 P0 H0 V
  42.         stbid[18] = '\0';& `- a! l6 I, ?) e' W
  43. ! J- e! Q9 f( M2 U$ u  z, \
  44.         return 0;  s6 j5 t* i+ g
  45. }
    / q! j# r% q: t3 l: A

  46. 5 i' t; Q& z( p# `! t, E: p: j0 ]& y: c
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # r. R7 {) W4 }6 N0 T6 T
  48. {3 r/ e: [& {8 V: p4 z
  49.         int fd, ret;
    ' f7 N7 r* o. K
  50.         e2prom_s_cmd arg;
    , u0 X6 s! f. k0 T- i4 t
  51.         unsigned char buf[0x18];
    , v  u+ o0 a$ g7 T4 ]
  52. % |+ g4 c6 I" e/ P5 j
  53.         memcpy(buf, mac, 6);& C/ V* V5 [$ }, f
  54.         memcpy(&buf[6], stbid, 18);+ p: e; I" X- p  I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) ^: g% g4 t; E9 j( W7 P9 ]
  56.         if (fd  < 0) {
    & N8 \: v, }: H% `9 R1 w2 |; a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);/ i' d/ I3 V& X" I" }; |  U3 A) j0 Z  \
  58.                 return -1;9 b' v5 F; T+ ?
  59.         }
      _% ~4 z0 v  ?8 \9 h
  60.         arg.sub_addr_count      = 2;) O; I1 C5 N% D4 k4 v- P
  61.         arg.data_count          = 0x18;
    * t# R; {6 v3 N7 M8 i  o
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    / e$ v8 w& k& c+ y2 z0 V
  63.         arg.e2prom_cmd_data     = buf;; S6 P+ [8 V* V4 @) p& m* F" g
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ! K! ]2 H8 N4 F6 _& [
  65.         if (ret != 0) {
    9 F# _2 B( u" m+ _9 a; Y
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);+ G4 v; s- d% d* `' v' V
  67.                 return -1;% ], t8 f# T4 L5 q9 U: K" X8 s8 w
  68.         }5 X3 C7 O; ~3 X

  69. 3 E2 _3 P* S4 F+ w( y
  70.         return 0;
    . q# g( Z1 V  \) g/ D# u
  71. }
    9 |# L. h' Y0 I, l; U  c

  72. # Z# T0 k2 p" J8 {! Z* ^( `& k& d
  73. int main(), u) E; t& K1 z) k, _
  74. {
    4 v+ `/ m/ \) D+ \. t+ y8 w" N
  75.         char c;
    # T! N2 N1 u3 e0 P
  76.         int i, macs[6];
    6 o, B5 v- k% Q% H1 M" _8 i6 v
  77.         unsigned char mac[6];
    ! ]3 S9 j+ }/ C* ^& @4 T* @
  78.         unsigned char stbid[256];
    : ]) L2 ^$ a$ h# W* L4 s6 ?

  79. ! B% t$ {6 H9 T) m- O( A- v
  80.         if (readparam(mac, stbid) < 0)
    ' Y" V* n1 H1 M& w1 S
  81.                 return 1;
    2 z2 @9 d" S! L6 Q' G

  82. 7 @, v: P# z) V0 O. C% }/ [) {' ^
  83.         printf("Current parameters: \n");
    $ i2 \% B8 L* n' M; F. _; d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    4 @5 x: V/ S8 e
  85.         printf("  STBID: %s\n", stbid);
    " X5 B7 g0 ^2 _  d
  86.         ' M) o% R: X9 d/ T( |
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    1 J9 J7 a; _2 p, X4 A; P# @. L
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ( V! v7 ^  G. f0 H
  89.                 printf("Input MAC error\n");
    4 c  I2 u/ c: c( D/ K% v
  90.                 return 1;
    5 q& l9 V: u. [
  91.         }
    # i0 R; @/ U1 T8 y4 g. U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ( _; [, ]# l, x. m. ?
  93.         printf("\nPlease input new STBID: ");
    + }0 C& G- C9 y. ^& z+ f
  94.         scanf("%s", stbid);
    ; t4 O+ h% a# ]' y4 f3 C2 i
  95.         if (strlen(stbid) != 18) {
    0 E$ p# K1 U9 A8 I
  96.                 printf("Invalid stbid\n");
    - f: T" V* e3 x& P# r; L3 s+ A, j  c
  97.                 return 1;0 w4 B! X- p% w. T$ Y
  98.         }
    4 l: ~& \! W: r3 k+ Y, Q: {; S2 W
  99.         printf("\nNew parameters: \n");
    " n5 }8 P( G" C
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( n, h7 n1 e0 l' F) V2 G7 x8 ]
  101.         printf("  STBID: %s\n", stbid);' |9 E$ n' M' s( c. r

  102. 4 A+ y, B# y  L8 M
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 q7 o9 @( ?& N# V3 P7 g3 k
  104.         for (;;) {
    5 s& E7 {5 b( H5 Y# S2 Q
  105.                 c = getchar();
    - I' a& O8 D( c
  106.                 if (c == 'y' || c == 'Y')
      K( Q! J. r8 ]' t1 {0 g
  107.                         break;/ U9 `1 |6 }6 w! w, d. Y- z1 P
  108.                 if (c == 'n' || c == 'N') {
    3 k- l5 {9 k) S4 f
  109.                         printf("\nAborted.\n");2 y' D- T7 M) L% ?  N2 q8 z* W( a7 M
  110.                         return 1;% m! {( f- G. X4 j" l. t6 a
  111.                 }
    % m2 S& Y" n; [2 R
  112.         }- @7 G- e0 w2 v. `/ i
  113.         if (writeparam(mac, stbid) == 0) . ]/ C+ Q! ?# t+ t9 B" p
  114.                 printf("Parameters changed.\n");
    . I7 O, G& `. g: L9 v& t5 c: p  {
  115. ! p  S3 t1 P% w1 x) N! E
  116.         return 0;- D1 e& R$ n% i3 }; g5 B
  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
% l" h' @, x2 h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

" V! ]9 [  Y9 Q$ [; H0 j你用的编译命令行格式是什么?
5 Y5 M; S2 P6 `
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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