找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15162|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ! x% O9 d, x4 D3 E# p% Q
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig' R& g% K& _% I0 Z' F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
; U. X, Z$ `2 U# Z1 Q4 X( g; w0 A& ]; Dusage: himr <address> <value>. sample: himr 0x80040000 0x0& i% O$ F1 z9 U6 C1 t0 ?9 x
7 ?+ U- j) J0 U! x/ B2 C( D
; N' b, c* t, W9 O- N6 f# S0 G
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?. B& q# u. W% G, x

* u/ y5 M0 o- g3 H0 H补充内容 (2012-3-8 09:42):) q) {8 k! I) [, d0 p+ v
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( `( H2 W% ?+ s
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- E1 O* _! U- K+ c$ u# J" a. q1 H  D& {; D0 r
himr <address> <value>. sample: himr 0x80040000 0x09 ?$ [2 g1 a2 d1 b
0 `/ t8 `  @/ V; v4 }
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 P' }, P0 X# [  N- Jhimr 0x80040000 0x00; W0 p4 {% _  }! \1 C, m
himr 0x80040001 0x119 w6 y( G9 a0 N! W! n3 {
himr 0x80040002 0x22* u( m& y! L4 ?& K3 x
himr 0x80040003 0x33( v- T) v' |. e& S0 R0 a9 a5 [1 j
himr 0x80040004 0x44* A9 [& w) A+ b7 m  ?; ^" U
himr 0x80040005 0x55
8 q$ s9 k# W, E; g
2 J+ \6 H1 y9 B) }SN也是类似。4 p' y1 G+ i- t+ O

( I* J# _' L! D2 V/ |现在主要是,谁告诉我们MAC和SN的地址?5 f! Q" d) m. u: d  e
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 . H+ [4 [9 }6 g( Z; b# l3 U
一直想找到运程修改MAC和SN的办法,苦于无解啊
, E3 E: R( M& j8 c5 Q6 Z3 T) y
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
8 C6 [/ o4 W% I# V- \4 F4 v
  o8 |' w# F1 U& f+ p8 ?* q4 h修改的代码早有了。到今天不会编译。0 }3 x3 R/ p0 d, }
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    & s( q9 l) K9 ~6 E) T9 R
  2. #include <malloc.h>
    6 p/ u6 v) V, ~1 c' E
  3. #include <sys/types.h>
    , D: y1 k/ r; t7 @2 p' o
  4. #include <sys/stat.h>* l1 h, {0 `7 W6 k5 ]% F5 v
  5. #include <sys/ioctl.h>' }6 S3 n* r+ h: r" _0 e- j
  6. #include <stdio.h>
    9 x# t6 s: q6 l" B) G' \/ t
  7. #include <string.h>
    & i6 P% a: ~! B' k' L9 @5 b
  8. ' w! J1 u, R  _: }6 S6 D7 J
  9. typedef struct {
    ) c0 M8 L6 F- u% \( N
  10.         unsigned int        e2prom_cmd_sub_addr;4 e! K3 t- j3 f5 U
  11.         unsigned int        sub_addr_count;8 ?' H6 k: l+ }2 [
  12.         unsigned char*        e2prom_cmd_data;
    ( |, ]1 V8 @! k* o1 p" w2 J
  13.         unsigned int        data_count;
    3 E5 L' t3 @3 @; k( p1 M3 u6 z
  14. } e2prom_s_cmd;
    # s( V. k/ v& Y5 v0 M

  15. , ^9 Y8 z* ]. c' S
  16. #define E2PROM_CMD_READ 1
    7 Q; W* q$ f  K3 K  t
  17. #define E2PROM_CMD_WRITE 2
    ( k  C& S& A5 s) k( `/ u  Q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"* c/ W8 u& G! `2 I. V2 N

  19. 7 h: l6 z* Y& w; M$ u  m" b$ i- l9 \/ B
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / ~- Z; ]6 a5 U7 ^  Y/ f: I
  21. {
    4 A2 h9 \, P% R0 k
  22.         int fd, ret;
    1 j% D/ x3 j- o  Q
  23.         e2prom_s_cmd arg;
    + ]9 w% ~+ ]0 ?3 y* H/ h
  24.         unsigned char buf[0x18];
    3 d: q' A+ `; w9 A- Y- |
  25. : w/ ~; p6 ~3 [( p: j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ `8 o; x; S0 I) d* {
  27.         if (fd  < 0) {
    7 l0 T' A2 O# {/ [, R- D+ v
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 }( M4 M" Z" m1 P3 X; W9 h) G, T" @
  29.                 return -1;( n" m$ s* {( {2 v. L3 r) @3 l
  30.         }. _! L  _4 z6 v8 o! V
  31.         arg.sub_addr_count      = 2;
    - u  B# X% h2 s
  32.         arg.data_count          = 0x18;! ~2 C- k* e, x4 ]
  33.         arg.e2prom_cmd_sub_addr = 0x290;7 Y5 x2 J/ i) M2 ?
  34.         arg.e2prom_cmd_data     = buf;
    % B- u$ F; J5 s& x1 V& d9 o5 x
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - w* [$ k  M3 d  _* i& n
  36.         if (ret != 0) {
    7 I" I- ?3 L! Q, s( P3 t  f; t4 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);9 h8 @5 b2 s4 X+ O! o- J
  38.                 return -1;
    8 i$ q( H9 y; f9 ^: H1 m7 j
  39.         }
      _1 s+ C* B4 J
  40.         memcpy(mac, buf, 6);
    : W( r- Z' E- \' @% s
  41.         memcpy(stbid, &buf[6], 18);+ P7 a' a! ?& N6 ^% A( D
  42.         stbid[18] = '\0';4 \! t3 T* E* w& Y% b

  43. ) ^- R9 r8 E! }, S, L9 b
  44.         return 0;) L- w5 m# Z& ^# n; _/ x
  45. }8 d* T$ y9 M) t. e; d; D- l* C

  46. 3 j5 w! u# U  O: i. {. A6 t
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" U. s! y- ?7 w* {7 _! g
  48. {& l! ?+ H1 G+ {/ O# @& Y: g. t
  49.         int fd, ret;5 A' L: I0 Y7 I% D
  50.         e2prom_s_cmd arg;
    " @  f( N/ y* }2 S. K
  51.         unsigned char buf[0x18];
    ; W1 d8 {/ T2 p/ ]  p1 j

  52. : C- f1 L1 o9 d6 F0 @* V6 G
  53.         memcpy(buf, mac, 6);' n8 v% o9 S! O
  54.         memcpy(&buf[6], stbid, 18);2 t5 Q3 |  _' H* E' W0 r
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 w/ K2 B4 r# a" x, K5 p& B
  56.         if (fd  < 0) {
    4 ]5 m; ^9 L, Y1 r1 _5 F
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);+ H  p0 P5 ?3 U  Z
  58.                 return -1;
      ]9 F7 D# N6 A8 |% z, P
  59.         }) D# b7 n. P$ K/ A* p! Z5 R
  60.         arg.sub_addr_count      = 2;* }8 H# c: i8 g( G: n
  61.         arg.data_count          = 0x18;; ?* j% T# i5 O- u" l: ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;" |8 d4 J& M" f: y) \
  63.         arg.e2prom_cmd_data     = buf;: S4 j$ {3 D8 J8 t) C
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ; N5 T) D" p% @# I' y; l( H3 F9 y1 }  N
  65.         if (ret != 0) {
    & e# [+ G% W3 E
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * P+ X, Q: X6 ~! U" O* k4 `
  67.                 return -1;2 }2 }- L2 Z! p- j
  68.         }! b# r. |1 X! p9 L! G! t

  69. 2 b1 C8 L; X4 ^% J2 G) S2 k0 {  D
  70.         return 0;
    5 `; i+ T- g% |$ X9 [/ \
  71. }  K( G( K8 O7 v: w! y4 ^
  72. / \! s0 ^& I; P7 t- x
  73. int main(); N) O7 b1 h" b' S* z7 T
  74. {
    ' F0 K" M3 J4 S: [/ ^5 |3 s; G
  75.         char c;
    2 y' Y0 X4 `" D# S0 q  {
  76.         int i, macs[6];, C/ l: r$ ^: i
  77.         unsigned char mac[6];
    / l6 P7 Y" V5 s. G: @* M0 @
  78.         unsigned char stbid[256];
    - H" A& i; S' Y+ X# T1 j' d" c3 p# c

  79.   K# V8 M$ w* v  d: d' b. d: @
  80.         if (readparam(mac, stbid) < 0)
    ( f( x0 [* c. v6 a
  81.                 return 1;
    7 N  E3 Y6 Z# |" a* N
  82. 9 ]- r: d% s# v" [
  83.         printf("Current parameters: \n");' C3 S  Y' D& W' _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # N& b. o: t2 C! j
  85.         printf("  STBID: %s\n", stbid);
    * a( I8 b  o! m+ x" A
  86.         0 r( S+ W2 I: M( J3 e
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    6 C, B, c% Z6 Z! R% L& o' g
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {" y0 ^, Q4 W& U/ \$ A) j
  89.                 printf("Input MAC error\n");* q! `7 `+ T7 `5 n  {. }& S6 u
  90.                 return 1;
    - L5 E7 e% u  `4 w; \* A
  91.         }4 L8 j# Y( R5 `, c: m, m
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 y* p9 ?3 Y% c" E
  93.         printf("\nPlease input new STBID: ");9 ?! X9 t; c5 y( j! ^3 X; p9 ]  C
  94.         scanf("%s", stbid);# Z8 v$ G# q( v
  95.         if (strlen(stbid) != 18) {
    9 I. b; s* t; M
  96.                 printf("Invalid stbid\n");6 b2 z2 t2 g" p
  97.                 return 1;
    4 R# d  g8 `/ ]9 }8 A, q+ Q4 ~/ K
  98.         }
    2 V1 g0 u0 I6 S6 W3 G# t
  99.         printf("\nNew parameters: \n");
    1 P1 ]8 Y2 z0 ]  b: S6 F# ]- I
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 @9 |4 U! x, i' S3 U3 X, c
  101.         printf("  STBID: %s\n", stbid);
    8 F' L. _+ {( C. u# y% C9 N& z$ {

  102. * p  q- {( R+ Y: o4 j
  103.         printf("\nDo you want to change paramemters? (y/N) ");: V2 e" X9 _9 b6 R2 b3 B8 T, |
  104.         for (;;) {
    & h4 H8 @( t0 @9 z8 B
  105.                 c = getchar();
    $ h5 X! _" X# U3 y( i
  106.                 if (c == 'y' || c == 'Y')5 v: ~% w- y" C( f. y  O/ c3 r
  107.                         break;9 z: \/ H1 A3 q* [& I
  108.                 if (c == 'n' || c == 'N') {
    7 t9 ~1 P3 v! c8 Y
  109.                         printf("\nAborted.\n");8 @3 p, m8 T2 \
  110.                         return 1;2 M* ~0 E, t' J+ L6 e
  111.                 }$ L7 I3 @: `0 j4 Z$ N$ h! x7 `
  112.         }! M4 G, K. s+ k- A4 T5 b
  113.         if (writeparam(mac, stbid) == 0) " p" e4 N0 A( }  c- t3 n
  114.                 printf("Parameters changed.\n");
    6 U4 D) A' k' w( h# Q) I

  115. ! T  W- Y  W6 B: p6 R' M1 x
  116.         return 0;
    ) g# f3 }$ e) j( n6 e
  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
) O' r7 O6 I1 K: _在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) ^  G, u6 J3 b
你用的编译命令行格式是什么?* p$ K4 ]6 V) c0 B: C: @
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-31 05:15 , Processed in 0.023217 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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