查看: 16185|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr, c1 U; D( N; K* t) q/ j( d
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig# B9 J9 e( e+ _
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:; ?3 K4 k. w7 Y; V* r9 h
usage: himr <address> <value>. sample: himr 0x80040000 0x0  }1 d/ p  L% n6 [0 r9 d( h

& ^, B, b2 a# J/ \! D
* u& v% m5 p$ K+ G# S2 B不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?# O7 Z& Q3 G" i3 F, h

  V4 ^- h& Z5 r# m补充内容 (2012-3-8 09:42):
( y3 J  J) |2 r. e4 uhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( N, E1 i- ~* H4 d% O这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。2 n5 ~3 }) X% C* U# V

( O+ v4 \9 P3 P' `+ Xhimr <address> <value>. sample: himr 0x80040000 0x0! l/ F9 S0 I9 F9 O/ I  i6 r
( h4 ?. U$ w: L0 ~: d
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& o8 g! f' e5 @
himr 0x80040000 0x00$ B4 f0 m- o% c( n, x% p
himr 0x80040001 0x11" A* Z* `+ A+ s% E. I
himr 0x80040002 0x22
1 ^4 l+ W9 ^! a/ S3 R8 dhimr 0x80040003 0x334 u" L# p# k1 S' t/ J0 }- K
himr 0x80040004 0x44
) ]+ F9 g  X* ~. @himr 0x80040005 0x55
3 G  S  f$ |! z/ d% n3 S3 |
0 _" L9 [+ M; c9 C% h5 VSN也是类似。
* G: Q* j0 F/ B) c$ p% K
6 a( a6 V6 l# Y/ [7 H& o' @现在主要是,谁告诉我们MAC和SN的地址?% K8 ~3 B- i; \! ^1 p7 p: F# E2 u6 x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* }: L: ]5 E" _. q/ E1 v% s一直想找到运程修改MAC和SN的办法,苦于无解啊
+ R; G" b( ^$ m- q
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 S, k3 G8 N  ^8 K
6 ]8 f6 C+ i$ h! s
修改的代码早有了。到今天不会编译。& D2 ^7 l6 f" n; H3 F
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 G' }2 u  E. J' c$ [" x
  2. #include <malloc.h>! j# n/ d7 G3 l9 m2 J
  3. #include <sys/types.h>
    . p7 b) U3 b8 F+ p3 Q$ V
  4. #include <sys/stat.h>( l8 S3 h6 ^1 e1 \+ M7 `
  5. #include <sys/ioctl.h>  s9 M$ M3 ~- {* T
  6. #include <stdio.h>
    9 {' m' g* q8 g7 V* B! p) Z
  7. #include <string.h>
    3 ]3 h2 h( a* I, P4 i! J

  8. 1 X6 \$ Z3 E! G' z8 c% J: O- ~
  9. typedef struct {
    . E/ H3 c5 g9 y7 \0 l5 K" G+ S3 n
  10.         unsigned int        e2prom_cmd_sub_addr;; m% ^* c; k. @
  11.         unsigned int        sub_addr_count;3 j6 `! P+ x8 g( M6 e
  12.         unsigned char*        e2prom_cmd_data;9 D; l) G7 W8 _/ R) V/ C
  13.         unsigned int        data_count;5 `! N- _' W3 u* @5 H5 P+ `) ~( E1 v9 g
  14. } e2prom_s_cmd;) n( f7 ~4 `; F9 J& d; n

  15. * r2 A2 d* D# {/ X
  16. #define E2PROM_CMD_READ 1
    ' k5 x& f5 P/ U. f  z$ W' f, ~
  17. #define E2PROM_CMD_WRITE 25 D6 R# t& n0 g, g8 }0 T
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16": x4 N$ o$ s7 ?( k8 N
  19. # h: F  K  `: t0 W& a2 y$ X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ! r: ~6 C( n2 U; p2 H, f
  21. {
    8 U$ n# t8 \5 Q) N& _
  22.         int fd, ret;
    % Q0 Q3 f  \6 @5 \. C& [
  23.         e2prom_s_cmd arg;: k, [& x0 R' e/ R! v7 X
  24.         unsigned char buf[0x18];
    $ x, m5 x7 u! s, Y5 F
  25. 9 N# |' n  M8 ?0 l! z( z* M
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 E, W3 |8 ~4 [& v
  27.         if (fd  < 0) {
    " `/ ?( ^+ O$ K  f* M! `$ ^5 l2 x
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) B# J  W1 `+ m4 N
  29.                 return -1;+ f7 f% h% u2 [
  30.         }
    * x5 r8 V' v: p: s9 p  }
  31.         arg.sub_addr_count      = 2;
    * A: E4 @  j+ I1 {; P
  32.         arg.data_count          = 0x18;
    4 ]; q/ c1 I8 \) l( Y$ S- i
  33.         arg.e2prom_cmd_sub_addr = 0x290;. k0 R0 o& w. S
  34.         arg.e2prom_cmd_data     = buf;
    5 |# i1 H% ?( t8 H+ l- N
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ; M( ]# H5 _& F) w; F2 \: k
  36.         if (ret != 0) {/ Z( E  ]- [+ Z' d/ i' I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ O9 }$ m3 w% f8 X3 L7 R, P0 n" H# e( A
  38.                 return -1;/ a6 V7 [- z- m2 `$ f; K7 e
  39.         }6 T4 d9 n  K7 p+ o, w2 C
  40.         memcpy(mac, buf, 6);3 K. u  i5 N$ E- @. C, g; S1 [; g. K
  41.         memcpy(stbid, &buf[6], 18);
    4 x* i6 M3 h: c) C' q  r
  42.         stbid[18] = '\0';( h- Q2 L1 f+ q8 g0 G' e) b( M+ X

  43. . S$ c5 W, h6 u& ?! E3 v; p; p
  44.         return 0;
    : I; q  j- p3 X, B# I5 y6 Q5 b# h$ K
  45. }
    3 Q, ]1 O% s" e2 y) n

  46. : h- Q  a/ h9 p! z' C) `( A/ [, M
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# ^' w' p' c4 Q. }
  48. {+ U) N. R- `0 l7 Q6 K
  49.         int fd, ret;3 x) a8 O& J) W& d
  50.         e2prom_s_cmd arg;, @4 S4 T( G3 v1 J/ h
  51.         unsigned char buf[0x18];) \. }( _# E' Q2 w2 Q
  52. / J6 g0 |4 e8 M; b8 h
  53.         memcpy(buf, mac, 6);
    , {+ q1 `  N+ \6 d; I8 o
  54.         memcpy(&buf[6], stbid, 18);
    % U$ u' ^: e* y- f! W* q; L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ; E: n; T% @( C  a0 C
  56.         if (fd  < 0) {
    4 N" f  j2 F" c3 ?9 W  K4 k' Y5 f
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 @* X3 W2 w, {0 V8 O8 {; U& \
  58.                 return -1;
      e6 V$ o( Z+ [4 T* b4 n! n
  59.         }
    & z8 {# |6 [. i/ F$ o
  60.         arg.sub_addr_count      = 2;0 L2 c* D8 T0 ^( H, L
  61.         arg.data_count          = 0x18;
      y6 f: _  n0 @8 J: C
  62.         arg.e2prom_cmd_sub_addr = 0x290;5 o9 ~3 d  ^  c; J
  63.         arg.e2prom_cmd_data     = buf;# w! K( @2 P2 Q4 V8 r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    . V: {) Y' T& _$ k! v
  65.         if (ret != 0) {/ A, c' v1 ~. k$ Z' O0 r) U% I( K
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);- V4 D: b- L2 n+ m+ q& C& d
  67.                 return -1;% I1 t- S* k. q3 x9 c! F
  68.         }
    ( N& P1 a1 D: B) x) m! [6 }7 g# a

  69. , y) Z" d8 N8 t, {. f4 r
  70.         return 0;
    $ A. ]" H5 i' M/ W) Y7 M9 Q* I. n9 k
  71. }
    4 q( _! D+ z1 a
  72. : K) n0 p. h0 K+ J# K
  73. int main()9 V% N& p. l2 |* Q; y% Z5 _
  74. {
    . |* J4 i* P7 w) ?7 x! l0 V- `
  75.         char c;% W, a" C, k9 x. u& L
  76.         int i, macs[6];
    3 x* l7 X, U1 w" r: l  ^% m. U
  77.         unsigned char mac[6];& C2 p4 h& Z2 i$ l1 Y; G. J9 Z2 O& b
  78.         unsigned char stbid[256];
    $ q& u$ ~% v0 U: Q$ F7 L* w

  79. ) G9 j0 k3 Y8 J! g! t
  80.         if (readparam(mac, stbid) < 0)) d9 n. \6 o& Q8 Q: F
  81.                 return 1;6 R' z. N- X1 f" ]& d

  82.   m2 k3 }, v- j
  83.         printf("Current parameters: \n");- c7 v5 J; r% i* Z. K0 M0 d
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 C) F2 }0 }) K+ D" j
  85.         printf("  STBID: %s\n", stbid);
    * _* w' e4 E9 d& f, ^- ]  U" \8 t' e
  86.         7 n; c6 b7 p- F* k
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ y3 S; }9 ?" E
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 P' j( B* E- n$ @
  89.                 printf("Input MAC error\n");
    & M$ K( W& K' S2 W6 Y: k
  90.                 return 1;
    & v  e$ V# ]) n$ g* J) ]
  91.         }
    ; e# G' r" l9 T# [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' P5 l* ?- u( P9 ~2 }& _* w$ o
  93.         printf("\nPlease input new STBID: ");
    2 L( u3 {8 N. |6 u, K3 C. V2 S8 ~
  94.         scanf("%s", stbid);
    ) C( h0 q4 V: r+ v
  95.         if (strlen(stbid) != 18) {
    . ?5 }, \5 I9 I9 F+ R4 E) e) O
  96.                 printf("Invalid stbid\n");
    # g: W6 |- @4 @+ ?: `# p. X
  97.                 return 1;
    3 z2 R8 p; e1 }- N! O: F
  98.         }2 _, l4 }$ z6 G+ k. \
  99.         printf("\nNew parameters: \n");
    9 r, f( M7 t3 Q  H/ ~
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    0 Q, `: ?. V( S; K; v- e
  101.         printf("  STBID: %s\n", stbid);
    / _1 l$ l2 v( v2 n0 ~: ~

  102. 9 J3 h" f# L: c! Q* [' `
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 `9 j2 M8 @  h2 W7 Y1 H1 ]
  104.         for (;;) {
    ; P! W3 G6 e1 C& a4 D4 x& C
  105.                 c = getchar();
    1 R( P3 T- q% g! {  L9 a' \
  106.                 if (c == 'y' || c == 'Y')
    : \" W6 U- H' ]
  107.                         break;
    : U$ v% r! y! A' ]0 p( h& S. w
  108.                 if (c == 'n' || c == 'N') {4 W$ d6 t8 g4 u9 u0 \2 z
  109.                         printf("\nAborted.\n");
    + l+ P" B, ]; l; l/ T" V5 K, P
  110.                         return 1;
    4 N- ?5 r% \: G( g$ q
  111.                 }
    5 ~( U0 I% r7 m
  112.         }1 g& Y/ B) Q; D5 `2 B; _
  113.         if (writeparam(mac, stbid) == 0) : S! m5 g) D: B  T& X5 p: @" O, X% `! ]  H2 N
  114.                 printf("Parameters changed.\n");
    ; l; h  k( ~% C! Y' ]' G# G
  115. / F# Q3 I" p* a
  116.         return 0;4 a) V7 x' G$ ~, k9 Q  d2 P
  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
6 g6 h2 d  a- X* x8 x5 z1 z: \, C在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  R8 g4 O- ^' L: k9 \# |你用的编译命令行格式是什么?* X. A  h4 B  K$ G, b* y+ M
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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