查看: 16647|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% @6 \7 R' z8 a  q8 N
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! _8 D# D7 P2 ^! Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* v6 n' G3 ~: A& R* w% I
usage: himr <address> <value>. sample: himr 0x80040000 0x02 G7 Z/ K) O1 ]# P8 r. H, z

- B% r& T0 [9 i* W7 b5 q5 E8 K3 j' G' ]) |4 E" S3 Q4 a
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 H9 I- d9 e& l% a$ g
3 x. D' [4 i: Q# S. K1 F5 ?0 J补充内容 (2012-3-8 09:42):
9 d1 u4 E, N7 x6 ]http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 N8 g5 g) @5 L' {2 i' [* F! @
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
! w; l/ ~7 L0 V4 c" w
  u7 c: x: s4 m# ~" uhimr <address> <value>. sample: himr 0x80040000 0x0
7 h% p( ^% D. G( r, m' B7 |9 r4 S: v! `/ E
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% t. r" _% J& ?/ f! M/ @5 e
himr 0x80040000 0x00
) s( h1 O6 \3 s! Fhimr 0x80040001 0x11
) q* {- m* {# {; p3 Chimr 0x80040002 0x22
+ h  m, v0 x4 `1 ?. [# Nhimr 0x80040003 0x33
, z* F8 J# _) e) n. \6 `himr 0x80040004 0x44+ Y5 F' ]; i9 N
himr 0x80040005 0x55
, Q; t& P6 P3 E+ r$ c7 [4 T0 \" @  e0 s9 A$ q2 e
SN也是类似。% z0 p- ]( y; J+ E

4 \1 L2 a* c4 H) H/ N现在主要是,谁告诉我们MAC和SN的地址?9 L4 _9 R5 |7 T6 J5 h# q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
6 H1 j  w) f: d, T一直想找到运程修改MAC和SN的办法,苦于无解啊
5 ]+ M! C& m7 s
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 d0 t- H7 T8 T9 L/ c& K, G7 k) a. i7 w, X
修改的代码早有了。到今天不会编译。
* S/ `8 E7 a* x# b. Y* ~5 x需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 ?2 v( e/ p! Y) Q
  2. #include <malloc.h>
    4 ~( u) E9 }9 m( o- ]+ U" |
  3. #include <sys/types.h>
    2 [9 L; }/ `6 x
  4. #include <sys/stat.h>& C, B% B, t4 P+ O6 _
  5. #include <sys/ioctl.h>+ T# y4 p$ {+ x' y1 Z! v6 ]+ v
  6. #include <stdio.h>) H, j, H& g3 \. i
  7. #include <string.h>& y5 ?" [; L) `" {0 R% d. O
  8. # M# ^: S6 H; j& u  q( u; T
  9. typedef struct {2 M5 y& k4 Y; `7 q2 x5 I$ C8 o
  10.         unsigned int        e2prom_cmd_sub_addr;
    1 Z) f% `; @- [( g! w. N; F
  11.         unsigned int        sub_addr_count;& z8 d( F2 m. b/ s+ Y% j- o
  12.         unsigned char*        e2prom_cmd_data;
    % J" m; H1 ?/ j6 }  b- b
  13.         unsigned int        data_count;) M4 a  s, ]* Y+ T
  14. } e2prom_s_cmd;. |2 w8 S$ `. P2 I3 s0 W2 `

  15. , V% T5 r8 C9 T& u0 z
  16. #define E2PROM_CMD_READ 1
    $ z4 \$ Q! F7 x" u
  17. #define E2PROM_CMD_WRITE 2: c! U; P: c7 S: F; V
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"- M/ B8 l' z  b

  19. ; {- O9 R7 h) K; [; w7 B4 {) s
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# C& T0 Z2 B2 f2 D( O
  21. {7 c7 E+ r6 E, Y
  22.         int fd, ret;
    6 t: o& N7 D- a  B
  23.         e2prom_s_cmd arg;
    : {: e3 n! f* p- \( q; I" m
  24.         unsigned char buf[0x18];6 y, t0 f0 l/ a+ F3 i

  25. ! P2 T% J( U, J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; m( n9 }9 ?4 s8 Y3 C$ V/ x5 p/ i8 s
  27.         if (fd  < 0) {4 J" f2 A+ d4 I0 G9 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);' G( e# ?; s- N2 v4 Y) ^
  29.                 return -1;. T  v/ Y; a8 g3 _
  30.         }
    + w& t) o; j9 m8 y. V
  31.         arg.sub_addr_count      = 2;
    6 j  I5 `/ Y$ g& n! F
  32.         arg.data_count          = 0x18;6 g! Y6 _0 r% X5 _# V/ F9 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;: g) q, u3 V$ U3 i# e
  34.         arg.e2prom_cmd_data     = buf;
    $ P' H2 j1 b; A2 ?- \
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) w2 b! T: i% D3 }
  36.         if (ret != 0) {6 Y6 S) ?5 s+ r- ]7 `/ H, A
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . Y6 t! K+ O1 l; r5 i& I
  38.                 return -1;
    0 Y  i+ ]" I* x. P
  39.         }4 [. v1 {/ g5 t# S2 ]6 f
  40.         memcpy(mac, buf, 6);/ Q. D9 Q" G9 A/ r: c) [2 u
  41.         memcpy(stbid, &buf[6], 18);
      z$ ]- b: B7 k, x
  42.         stbid[18] = '\0';
      u; {  S2 M* g, L
  43. 7 s; q3 I- z* `8 B( Z. V
  44.         return 0;
    / C" a2 Q$ L& _  B8 [9 [
  45. }0 j+ V) ?' q# y) Z' h

  46. 0 N* S( s  D  ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid): w# Q- ]# U1 f- T" g/ }
  48. {
    # O7 E3 f( g  B, U1 P# N& ~, s
  49.         int fd, ret;! U; s' g- n. I9 G9 N+ l# i
  50.         e2prom_s_cmd arg;
      Q* G9 x* L2 T
  51.         unsigned char buf[0x18];5 F- f4 m& r8 ^) V- p! e/ l

  52. * {/ E! W- y1 ^- t  E
  53.         memcpy(buf, mac, 6);
    # R0 @, {/ f3 p
  54.         memcpy(&buf[6], stbid, 18);
    2 T$ I4 v2 A- d1 C/ o
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) I. o/ f. g5 s3 c/ \
  56.         if (fd  < 0) {
    6 g; s/ _- r, i- f+ U, U; r0 m
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; Y; m/ B( q- J# n+ a3 \6 h
  58.                 return -1;. ?* ?! r+ d* q) A( X. D. {
  59.         }0 _1 T; _' g% N/ v
  60.         arg.sub_addr_count      = 2;9 l- I1 q- c# `: w' q
  61.         arg.data_count          = 0x18;
    / y5 x8 W6 k! `9 V: i3 K
  62.         arg.e2prom_cmd_sub_addr = 0x290;9 z6 d  x! G3 G3 P: G8 z. L+ v2 w5 u
  63.         arg.e2prom_cmd_data     = buf;: s3 m  R9 B3 c  A
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 E0 G7 |! B9 E
  65.         if (ret != 0) {
    5 W% _# ]. u7 p! t) G2 |( o6 Z
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);9 o$ D& k0 e9 P7 |1 M
  67.                 return -1;  s1 G5 M9 o1 V+ L  Q' J' }
  68.         }
    5 k. y0 F8 t5 |1 E: G; I
  69. 0 M6 _+ D6 x/ D* B8 _0 t( f) ?! }
  70.         return 0;7 m9 c7 x- v. F* d9 V/ I
  71. }, _# D: c4 O, I7 m6 m" t
  72. ! r6 T9 g9 ?. m1 p
  73. int main()
      i; z8 I% _2 s+ j3 }  |% ]  Q! t
  74. {
    , E' {) w: ]) n8 w9 }# n
  75.         char c;
    1 @' ]$ V) g+ g% n  R
  76.         int i, macs[6];: M0 H. v; n7 K6 R7 _/ T
  77.         unsigned char mac[6];
    9 {) j9 g5 K. v
  78.         unsigned char stbid[256];( |+ |4 U+ w' O9 a2 i

  79. " e( c1 H; e& q( Q& G1 u
  80.         if (readparam(mac, stbid) < 0)0 }" Y  D/ E4 s
  81.                 return 1;
    " K* [" i7 L+ E" t8 a
  82. ! J( i/ q, n. ?
  83.         printf("Current parameters: \n");
    & ^& C8 D+ k& |. ?3 q5 i8 }! M) F$ V8 i) T
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' B1 {9 d5 [+ y/ W* ~/ ?4 B
  85.         printf("  STBID: %s\n", stbid);
    5 @$ @( k) U  \1 t2 r( k+ F
  86.         . I8 ~+ f# Q  R8 H4 G# H
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");# i# ?5 V5 ^3 N6 W) i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ! W3 H) S( @% }" S$ y8 r5 Y# i* [
  89.                 printf("Input MAC error\n");
    ' p; U3 g8 m! @- V- j! ]! q' X# _
  90.                 return 1;6 |- R9 M% R7 Y6 u( p0 L4 G
  91.         }
    - _% C" T5 K* v( F3 P5 o
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + t9 U8 c& M9 _1 U2 s6 Z/ b5 [/ T; N
  93.         printf("\nPlease input new STBID: ");
    % ?: @3 b8 j! v2 `
  94.         scanf("%s", stbid);
    0 ?& G4 W! u8 Q3 J- l
  95.         if (strlen(stbid) != 18) {
    2 F: |3 S9 R% U: z" L
  96.                 printf("Invalid stbid\n");
    0 e+ A  I: Z+ A4 f4 w. z
  97.                 return 1;
    6 {! {* p& N9 t' R3 a0 m
  98.         }
    " Z8 Z" K3 v/ s4 ~$ {* V
  99.         printf("\nNew parameters: \n");
    , W" O  D" b0 R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 T3 H  ~. |! y$ J
  101.         printf("  STBID: %s\n", stbid);
    ! @; ]% D$ n' F6 S% N6 u0 W

  102. : t0 Y6 T8 T" D3 \" N& ~4 b
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - e+ _& M- P1 [; f' h& y( |6 A
  104.         for (;;) {
    7 }1 A/ D! e0 w
  105.                 c = getchar();
    ) r7 z- M' ~! V5 U! q5 u/ t
  106.                 if (c == 'y' || c == 'Y')) c4 l- a# V6 J8 F
  107.                         break;& |4 A2 e0 }: k: E0 i
  108.                 if (c == 'n' || c == 'N') {
    4 S, e! m3 ^& `# M7 f) Z
  109.                         printf("\nAborted.\n");, y4 j5 v8 u, L
  110.                         return 1;
    # E3 p8 R' M! N" j( x: _
  111.                 }
    : i5 i4 y+ e- z) \1 M4 ]
  112.         }" J5 J1 v* p4 v. `9 A7 Q/ s- f
  113.         if (writeparam(mac, stbid) == 0) 3 R+ j. L( \) X5 K  f
  114.                 printf("Parameters changed.\n");+ u2 i+ I( I  j9 e$ f
  115. & ]# P% @. U% P! h( w
  116.         return 0;( g( w, B& D7 i- h% Q' d) J6 }
  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
3 O! W. a4 u9 f) n; P. C2 v在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

6 B( ~2 L8 i: P, x你用的编译命令行格式是什么?4 Y) [3 d5 }' P  a. {& d7 L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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