找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15578|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    3 H8 I5 u. w8 |- n  D+ e* u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig" D; m9 o0 N7 Z8 q" u
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:. o% l- D- \  z# {
usage: himr <address> <value>. sample: himr 0x80040000 0x07 L, @' T! z6 w5 f) E# b' _0 U
! I3 X9 l( g" u
3 R# ^3 t" S8 N0 R# g4 \
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
- p; C" P, Y! Z2 J# k' N% e& `. W* |. n( }; A8 z
补充内容 (2012-3-8 09:42):
4 D& ?7 g4 S2 W/ Uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数6 t3 i' k5 A% `1 y: y5 E  U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。. r3 b$ x. E( g9 y7 X
8 o% K' b6 H5 v/ F0 a
himr <address> <value>. sample: himr 0x80040000 0x0
" a; G$ X  _' S7 Z& ]& F8 b0 ~- o* x' J% y3 J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 w4 p& r5 K7 j; fhimr 0x80040000 0x00
2 c3 ?0 d/ ^2 K. b) y& J' jhimr 0x80040001 0x11
# g$ Q' n6 m6 B$ b/ p/ mhimr 0x80040002 0x226 g4 f4 a! a* _, O0 I0 m0 {& O- N
himr 0x80040003 0x33  J/ T9 `3 L! ~3 C2 Y
himr 0x80040004 0x44
+ u% \& O/ `' Mhimr 0x80040005 0x55
% b' m2 h( Q% n$ u: D  c5 T& n; e6 R6 \
9 _5 T) T0 S7 _; _. \SN也是类似。+ Q( `1 j# q6 B: L. m5 F
& `6 k5 |3 n: V/ p
现在主要是,谁告诉我们MAC和SN的地址?
$ T2 f1 }5 ^" ~
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, v; _: C! }6 \5 y# h一直想找到运程修改MAC和SN的办法,苦于无解啊
( m# [# d; v0 |
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 + N, I: r) U0 ?2 Q' y" i4 q
4 {0 v) d+ Y2 l4 u# P
修改的代码早有了。到今天不会编译。
$ ]; Y, w6 f# M8 y! v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>) z4 X# A. z: J0 U
  2. #include <malloc.h>
    % H& R3 z; J2 v- I
  3. #include <sys/types.h>0 A! ?4 ?0 c+ V0 p  _
  4. #include <sys/stat.h>
    ! n# ]* t3 a# Q. o5 A* V4 v
  5. #include <sys/ioctl.h>
      W8 L" x2 q8 `8 j! g; G8 q: p
  6. #include <stdio.h>
    - I0 E! c: x, e. Q9 ]( t
  7. #include <string.h>% V8 P1 K, x! _
  8. . H3 ]' h, f' [* j) f
  9. typedef struct {
    . i4 j# b, x; p& P8 Y" S
  10.         unsigned int        e2prom_cmd_sub_addr;
    / @/ m& n* `% y  L
  11.         unsigned int        sub_addr_count;( t' V6 M! \- D
  12.         unsigned char*        e2prom_cmd_data;
    " |; v9 E% c: O. x9 F$ u0 D
  13.         unsigned int        data_count;
    ; X$ d5 h2 e9 }8 k- a( [: p- N6 M
  14. } e2prom_s_cmd;" f1 t8 X5 P% `6 Z

  15. 3 u4 h+ O2 {3 W0 A7 [0 x
  16. #define E2PROM_CMD_READ 1/ h/ u' I; I6 \: b/ ]# }' J
  17. #define E2PROM_CMD_WRITE 2  P& k$ c/ D* ^2 I' q0 ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ' [0 ~/ w/ }( D6 Y8 P- O' P" j+ z

  19. 2 }( W4 L- x+ K# o) f* i6 l( I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    4 s. `' e# d3 h# G* t' n  k; r
  21. {6 G) r% j9 b  d" n5 K
  22.         int fd, ret;
    ! h) V. i: v9 G1 i9 [, o
  23.         e2prom_s_cmd arg;
    % R4 p: t+ k0 p- a
  24.         unsigned char buf[0x18];
    4 Z4 |, F+ T  P" }& L/ p
  25. + h& h6 I8 E4 _$ q+ L! @$ ^
  26.         fd = open(E2PROM_DEVICE, O_RDWR);2 p3 }) j" O, s
  27.         if (fd  < 0) {" t% K; H" a) H
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 E. k2 p; u4 T) Q
  29.                 return -1;
    / ]$ B" k$ Q$ r
  30.         }
    ( E# u7 U6 m" T- B! _
  31.         arg.sub_addr_count      = 2;
    : @! R' j$ x) i7 U
  32.         arg.data_count          = 0x18;% }/ [8 u: H( F6 e: V
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) @6 B1 T+ I! E3 {/ h
  34.         arg.e2prom_cmd_data     = buf;2 l% W. g+ U5 s2 x/ j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);3 F9 W$ B; P# G- Y6 P  |- T
  36.         if (ret != 0) {' K1 h' S: N1 ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);, X& c  Q0 \% D9 k; D2 q
  38.                 return -1;" k) J& ^6 c& Z" g# v
  39.         }7 t# K; g2 D! f: b5 H
  40.         memcpy(mac, buf, 6);8 u4 C9 `0 a* A& P& n- |
  41.         memcpy(stbid, &buf[6], 18);. k5 w2 m: J; h: R5 A
  42.         stbid[18] = '\0';: }- z3 y% [0 j& L" Q  a) e3 R: U* V
  43. 0 q. ~8 h' A3 u& [9 H
  44.         return 0;
    - A% N# }1 ~7 L/ A% m$ Z
  45. }
    % X- i! K1 C* w' i4 a3 `! n

  46. 1 S% g- S- l! b) t* i
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): |: G2 z5 C) b/ q" w  {
  48. {" d5 ^) `- _, a* c
  49.         int fd, ret;6 m/ {+ X5 q& a' d) H0 y
  50.         e2prom_s_cmd arg;. O. i/ `$ V  A; ]$ o* L
  51.         unsigned char buf[0x18];5 E7 ~! I. q8 e, H
  52. 3 ~) j0 i& [9 H0 i
  53.         memcpy(buf, mac, 6);
    - U7 K8 T' u; D6 h/ O
  54.         memcpy(&buf[6], stbid, 18);
      J% X; J7 ?* H  e+ K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " v8 B8 v  g- E2 ]# w
  56.         if (fd  < 0) {
    . O' C) I2 Q, i9 M: @0 ]+ f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( ?* ~. u1 F% i2 s! s2 G+ C
  58.                 return -1;
    3 g2 [% g' k  f( }
  59.         }
    % I& W( g" d4 p" z, L! J7 @( `3 W3 k
  60.         arg.sub_addr_count      = 2;0 y7 [. P7 y$ L& [
  61.         arg.data_count          = 0x18;
    + X9 X. ^* {/ x' k- m
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    , X7 [* V% e9 E! p5 Q, J( U  s
  63.         arg.e2prom_cmd_data     = buf;8 \2 j* Y3 g: k* V
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( X$ U) i8 Q4 x# T6 m& |
  65.         if (ret != 0) {/ J7 b3 ~- Q1 _8 C
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / E* g0 v. a! w4 n) F
  67.                 return -1;
    9 }  {# E$ n  c
  68.         }- G0 y" |' G1 ?$ {
  69. % H" T- w1 {+ y: ~# O/ l
  70.         return 0;, q' d4 ^2 O$ B5 F( g
  71. }8 ?* S$ S& z+ B+ O. Q8 z

  72. % j/ G' @6 s0 i
  73. int main()
    . Q' Y: y% @5 n6 [5 x
  74. {. c8 ^* y- g* c* {' {
  75.         char c;% I% W% q$ Y0 Y) j
  76.         int i, macs[6];" O: D. K! Y" N. F+ C9 w! d
  77.         unsigned char mac[6];
    , B* z! x4 T/ X% E9 p- v
  78.         unsigned char stbid[256];
    . M  a: s5 w. ^: C% D( k& `; R

  79. ( M3 g. T$ Z/ _3 h  r
  80.         if (readparam(mac, stbid) < 0)
    8 U' E( U* X' s; \
  81.                 return 1;# o- z' f/ H9 @
  82. % [6 W! @  _- d) j( U4 J% z
  83.         printf("Current parameters: \n");; `+ M9 A, T2 {* d* g6 e
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    2 Q8 C7 {8 n/ c. I
  85.         printf("  STBID: %s\n", stbid);, n( z; x9 Y/ E5 D/ e
  86.        
    * M/ O7 H8 M  q. [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( @; [( ~7 s3 Q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 Z; k3 G. Z- g9 k% v: P: m1 `
  89.                 printf("Input MAC error\n");
    1 ]) ^. M$ P$ ~, W/ r5 ~
  90.                 return 1;. S  i: \) j1 \. ~
  91.         }
    1 h4 p, t# g" f2 f5 n. {
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! f. y3 w, l, x1 X
  93.         printf("\nPlease input new STBID: ");
    ) Y& v2 }7 M: u7 x. y3 D( M$ Y4 [7 `
  94.         scanf("%s", stbid);" w8 z4 {# F1 _1 D$ s& r
  95.         if (strlen(stbid) != 18) {
    7 Q9 m9 A4 p. m9 s4 [9 q( u  N
  96.                 printf("Invalid stbid\n");- o. C+ e% ]0 _; a$ }. a
  97.                 return 1;
    # v+ L0 {: U4 D, a& Q: c; C
  98.         }: Q# x; V0 k: Y& l' S- z7 Y* M
  99.         printf("\nNew parameters: \n");7 E; |  D! s4 e; @3 P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. A5 x3 r) z2 i' x# u. m5 I- L6 D; {
  101.         printf("  STBID: %s\n", stbid);2 C$ ^& i8 g% @
  102.   x+ X. [( @/ v9 V: Z
  103.         printf("\nDo you want to change paramemters? (y/N) ");* o# p# g  g4 {5 j9 w1 n2 Z0 q; w
  104.         for (;;) {
    $ e/ y- g, w- u# }
  105.                 c = getchar();
    ; g# x  N7 ]2 c! n- i
  106.                 if (c == 'y' || c == 'Y')
    ! v7 ^9 j0 B3 G0 a$ i
  107.                         break;, H( P# N# Q+ ]3 \& N$ j
  108.                 if (c == 'n' || c == 'N') {, o+ \% J$ t8 e! X
  109.                         printf("\nAborted.\n");
    ( \! k' Z" s" }" l; d1 r+ @0 v
  110.                         return 1;
    " Z7 l" e2 X3 n! e5 a% i
  111.                 }% |$ h5 `9 J. Z& ~
  112.         }3 f1 Y: F, H6 C, U4 W
  113.         if (writeparam(mac, stbid) == 0) ; f5 A' V$ \* k- f0 C. z: D5 A
  114.                 printf("Parameters changed.\n");4 f! l' r' C" V+ N+ B4 h2 i

  115. / v* d5 j9 a! u$ J! E" d
  116.         return 0;
    : H1 H: J! f+ |. P5 O0 q( `. L
  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 # S) D  x- f5 S0 F5 ]
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

. V5 @# x  M) \  P& c& m你用的编译命令行格式是什么?7 Q9 d$ Z' s+ K0 a6 \5 u4 l' ~
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-15 21:12 , Processed in 0.026542 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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