找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14072|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    1 D% Z* y1 l3 |* H+ v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig+ t: P# L2 x7 z( Z) ^. @  q
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
$ ?  C) v; @. F# musage: himr <address> <value>. sample: himr 0x80040000 0x03 F5 F# G( x* z5 j( _/ [! g
8 S: G4 S" }, Q

& ~& y: [' \* O不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 M. ~) u1 y: |; g. R: ?
, c+ W* y- `; ^3 J& h7 p$ A" `补充内容 (2012-3-8 09:42):
' p$ M- g8 B. ~$ R- _5 Z' ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ y2 E0 X& J; @8 S这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。9 J8 a4 n5 M8 J
6 C2 e+ u' F9 J' u3 \! m- |/ t9 m
himr <address> <value>. sample: himr 0x80040000 0x0! `- R& i( n  \0 W3 D" Q* j! ~1 c

! ?4 c& q# H0 q3 ~- F9 |! X例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。4 Y2 B4 x4 U8 y+ o
himr 0x80040000 0x00; `, u* J+ @% F! L: T" g) ?% A
himr 0x80040001 0x116 L0 X; @8 F& u* w& q
himr 0x80040002 0x22
+ Y0 I, x; h6 ?; k+ _* chimr 0x80040003 0x33( z# k3 p; w4 L5 F9 C
himr 0x80040004 0x44: }* ]! x/ b2 w( e3 a7 L
himr 0x80040005 0x55
9 R' n3 S: Q9 F8 l$ P! x5 M8 ^6 e2 @: w4 x6 C  U! Z# q! Z
SN也是类似。4 m$ U# x3 S! }  U" r$ u" A7 {
6 [  C% L4 E( v) ]( P. M, H
现在主要是,谁告诉我们MAC和SN的地址?
: t! I7 k" X  A0 j0 G
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 h2 w/ ^; w) v- t- L0 \* W+ R# y
一直想找到运程修改MAC和SN的办法,苦于无解啊
+ [- l8 P! |/ N$ l- C
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 Z3 z" k% ?: a6 F5 e' M$ d. h! F. @' Q
修改的代码早有了。到今天不会编译。6 N  S! Y+ `. x
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>4 Y" g) {9 G' `! \- }: a
  2. #include <malloc.h>
    ! k' J; |8 I7 H: Q5 A4 p  Y- ]
  3. #include <sys/types.h>
    9 E. @4 E* ~/ t5 B, ^' X
  4. #include <sys/stat.h>' t0 H+ G- q  K+ Q$ b5 v5 K
  5. #include <sys/ioctl.h>
    1 E( V, V' @7 c/ w
  6. #include <stdio.h>- s6 h9 N  O& D9 [' H# ?1 k7 O
  7. #include <string.h>( n' N; U- a3 {
  8. 9 S. a+ ^: O) A4 E' q
  9. typedef struct {7 O& b' R- a/ I# C7 V  g
  10.         unsigned int        e2prom_cmd_sub_addr;3 `' p! j$ u; }) J
  11.         unsigned int        sub_addr_count;' }4 [- b; e: c. _
  12.         unsigned char*        e2prom_cmd_data;
    ! ]$ n, u2 H' R7 x
  13.         unsigned int        data_count;
    5 N$ r. r) R' w4 q: v8 `
  14. } e2prom_s_cmd;
    3 I1 ]' s9 [! K8 j" ^' ?0 L' @
  15. % v3 i6 T. D  s/ q' a
  16. #define E2PROM_CMD_READ 1: r" l! b; A7 b; Q; a5 }
  17. #define E2PROM_CMD_WRITE 2
    + @1 ~% u6 K2 _: S$ ~0 q$ H% }  _
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& m+ h6 ?$ ]" w5 p
  19. / [7 f1 T* [+ n/ r* n# J0 W, b- r
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : _- I! [3 x" w% {& Q
  21. {
    / b3 h$ c9 g4 {, m, |: T% k7 t
  22.         int fd, ret;. J+ u& k9 Q  D& b# U( ]$ d0 j
  23.         e2prom_s_cmd arg;
    " X) r1 i) {; x& d% @
  24.         unsigned char buf[0x18];% X4 ?% X' y+ `. q
  25. # F& U! R  _7 [7 ~
  26.         fd = open(E2PROM_DEVICE, O_RDWR);: W( S5 }( P8 N. u
  27.         if (fd  < 0) {
    , L4 L) Y0 }$ j3 v' Z8 ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    - G& a- V9 ~% x9 o
  29.                 return -1;# L$ r: h1 U) {% Y1 o0 B; n
  30.         }$ p  x, Q* Z9 ^! o
  31.         arg.sub_addr_count      = 2;( h8 j( g& b# {& h0 O
  32.         arg.data_count          = 0x18;
    3 x% U" ^; _! {% @
  33.         arg.e2prom_cmd_sub_addr = 0x290;4 W! X# G7 j2 S$ a
  34.         arg.e2prom_cmd_data     = buf;
    + V4 @% U/ L; Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);2 x2 P& F  U( A. O
  36.         if (ret != 0) {, B& o1 u; M* M& M; C5 G3 Q# I
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);( A* J% I6 L2 J' S/ `
  38.                 return -1;; I; S( v# i" J: k4 y
  39.         }
      C, T0 I; S* x! r( x8 N* z- n
  40.         memcpy(mac, buf, 6);  H0 I! x8 h" A+ d& i9 f0 n" j
  41.         memcpy(stbid, &buf[6], 18);' C% H+ Z* S) I1 p+ I# h
  42.         stbid[18] = '\0';$ W  ]$ M: ?5 w/ y9 B# y2 v* n
  43. , t0 [: P+ v+ E$ B6 z5 S
  44.         return 0;# A+ ?2 ~9 w( o' Z
  45. }
    3 \9 ^- G7 n1 `% j& |

  46. 2 R4 h" ~; `* |3 z4 @0 l/ V0 T: A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)- o- J/ @+ _; D% p) w  \) Y* r
  48. {
    5 s3 ?1 u/ A7 H2 e1 r4 s, p8 R5 }
  49.         int fd, ret;* M$ d8 v9 t" b- f
  50.         e2prom_s_cmd arg;
    ) v. \: S1 f# G7 j
  51.         unsigned char buf[0x18];
    5 }" }! |, V+ H# Q$ S

  52. + R) S; y2 S, `3 `
  53.         memcpy(buf, mac, 6);
    ! U: p. ~0 c, W5 F: a
  54.         memcpy(&buf[6], stbid, 18);4 i' V' F: ~6 x8 P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( \" j- P3 K' M9 ?4 s* C
  56.         if (fd  < 0) {
    " Q% [: a: E" O6 W+ V7 u" ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# K* u1 q: x* N. k0 p* U% J, e" c2 ~
  58.                 return -1;
    # C. g) Q' U$ T  z. j2 ?0 t
  59.         }
    4 `5 n* o9 p% \2 w2 T
  60.         arg.sub_addr_count      = 2;
    4 V& t/ N& C' H9 a" l1 N
  61.         arg.data_count          = 0x18;
    6 W1 n! o7 S! J$ x, ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;: V. N8 Q; }$ T, T4 U
  63.         arg.e2prom_cmd_data     = buf;
    # v2 r2 [( p, R! S2 q$ y/ D1 K
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    6 r4 q. a# I2 D% Q
  65.         if (ret != 0) {
    8 g2 H7 i& p( |  u( {0 k8 }
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 ^. v: I  ]( _8 ?0 x/ e
  67.                 return -1;; x6 w( u5 U9 \
  68.         }
    ) i- \# p, v* w. d" s

  69. , H4 a: ?# _6 i; C/ E6 B$ ?
  70.         return 0;: A( D9 m0 ~. S* P! p: Y0 a
  71. }4 u1 u- f2 m9 L& M* C

  72. 5 T! k* ~, X0 v/ ?# A% [& O; r
  73. int main()
    ( R' T; @* D+ s0 l* M# X
  74. {
    6 ]3 C2 B: d9 Q# o* o- q
  75.         char c;
    ; c7 w5 d" M& G. }6 M
  76.         int i, macs[6];: L/ h; |, u. Z. p+ y
  77.         unsigned char mac[6];: a& c6 r& Y1 v$ Y6 h( @
  78.         unsigned char stbid[256];
    ( w: f$ y5 c, n! d3 ^) R

  79. 1 i+ m" v, e* e$ D3 }  b" |9 y* y
  80.         if (readparam(mac, stbid) < 0)
    1 @" c3 U, z2 }9 b/ l1 r7 r. T
  81.                 return 1;
    * `3 q  @8 R1 u8 E8 l

  82. 5 z( n) [( q, M
  83.         printf("Current parameters: \n");
    8 J; G' ^; r1 `/ F& S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    * p) z3 ~% C. O7 ?; B* J& y  x; C
  85.         printf("  STBID: %s\n", stbid);
    1 S+ i" B# F- I& a) t. ~( ?$ t
  86.         , C8 ?" {; n+ r4 s. P
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");; _& y! W" o* q, ^- W
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    + W- T. z  R4 x" X7 k+ R5 e
  89.                 printf("Input MAC error\n");
    ( T1 O; x0 Y' l  V" N0 ~0 X
  90.                 return 1;' L" x" t# B- p' d' E0 u. |+ `  e
  91.         }
    + z" Q. `2 |, m5 B# B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];# h0 q4 u: n6 [% x0 M
  93.         printf("\nPlease input new STBID: ");2 ^& M2 z# Q* B- j' U4 s4 F" R
  94.         scanf("%s", stbid);
    : R) l) b5 T  Y5 ^8 j1 m) O
  95.         if (strlen(stbid) != 18) {
    8 k/ B2 j& [: J  A
  96.                 printf("Invalid stbid\n");) S: [; o& K& \4 A: m1 F5 P2 P
  97.                 return 1;
    # J4 D0 K. R; i, c+ ~! Z
  98.         }: s. K: ~' L2 i. W% \4 w' v
  99.         printf("\nNew parameters: \n");! _0 u( J/ U- }! v5 R; \+ U
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! }5 u$ s; _( w; u
  101.         printf("  STBID: %s\n", stbid);
    $ W. E6 K! O2 z6 G2 c. _

  102. , l% u4 p0 s$ H4 Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    1 G8 E7 o8 d$ G: ]5 Q' \/ A4 x
  104.         for (;;) {
    $ F, X1 @: e; T2 W, ~
  105.                 c = getchar();
    0 T5 ]# Q: _! t0 A% [3 _: X
  106.                 if (c == 'y' || c == 'Y')
    " s! H  G5 e+ {9 }6 [) y: q* M
  107.                         break;
      C" }% S( Q! V
  108.                 if (c == 'n' || c == 'N') {3 s! G6 \- r* Q1 a$ w
  109.                         printf("\nAborted.\n");
    ( M9 i5 d5 k) }: ?& M0 K
  110.                         return 1;) O1 p+ Y3 e- P9 D; n  z3 C
  111.                 }+ z( k9 \; [3 u! p7 U
  112.         }
    , j5 J9 C. d5 s6 \# [0 M' N& `
  113.         if (writeparam(mac, stbid) == 0) 8 v$ `; R' d; G1 ^  V' a; S
  114.                 printf("Parameters changed.\n");
    ( n+ R$ i1 V) E
  115. 4 j! I- Q1 K! U) r
  116.         return 0;- W: U5 b# y! S, A7 d9 i3 }
  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 ; H7 S" l: ^* s
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

9 R7 j' D6 \+ e+ K: P" P% W你用的编译命令行格式是什么?
7 ^, s2 g2 E6 h! S3 k3 r
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-13 19:24 , Processed in 0.027601 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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