找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15842|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) y' V7 D9 k! p/ b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    2 S: N! I7 c: s4 P# S2 a+ B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:  x( z+ Q2 @( r* k- P
usage: himr <address> <value>. sample: himr 0x80040000 0x0: V6 K" p$ M; z5 Z
& L  g, V2 j# J, _& @9 S5 W

) o7 c$ u0 U4 C# U6 q/ l- P不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
2 m, v0 x( _3 T: \' K: e: }3 O5 B" R2 L; C8 Q5 F
补充内容 (2012-3-8 09:42):
" o' H8 S+ M2 k- ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 T4 x2 z" G) D0 A( a- `这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 \, u; |" e1 v! Z. @
% e9 I1 u. |; ~2 d% X7 |5 o; B
himr <address> <value>. sample: himr 0x80040000 0x0
8 a& }. j1 ]  F9 I# e- v+ J/ |) `: C: L9 J
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! N0 o! x6 m# W! X
himr 0x80040000 0x00
" ]$ B1 T  Z3 e+ `3 m( Ihimr 0x80040001 0x11; R4 L6 p8 c1 `$ \. r5 B: v" f+ I
himr 0x80040002 0x22
# }4 g$ V& S$ ^" z) S. Zhimr 0x80040003 0x33/ Y3 J% R9 y8 H+ Q
himr 0x80040004 0x44
2 O6 m( U, M9 w; thimr 0x80040005 0x55) k7 ?  }6 ^9 O; S' N! J- Z6 ^! }

1 ^7 u) W, X9 M6 `) nSN也是类似。5 {5 a, G* ]" Z, ?0 [

5 K/ j3 W/ x3 Z8 V3 J现在主要是,谁告诉我们MAC和SN的地址?  d6 k7 _7 i8 ]1 I7 j
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) d/ X# f) ~' k' @# [一直想找到运程修改MAC和SN的办法,苦于无解啊

; H' u8 P( t7 s/ p  B0 Z1 S源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 @7 T* Z9 w5 f7 C  _

) B+ o7 d; K# d修改的代码早有了。到今天不会编译。5 m+ @# i$ N6 w9 u- m$ A. i
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ' f+ y3 n+ S- _* d: v1 H
  2. #include <malloc.h>
    7 ]1 t- F  V+ U+ B. [6 b. t
  3. #include <sys/types.h>: F4 ^8 e7 |) Q' X4 Q* [8 f; _: D/ m9 a
  4. #include <sys/stat.h>
    1 n  x6 J+ r7 c0 f- A5 X8 l+ W
  5. #include <sys/ioctl.h>, f7 y, |7 r7 B  i/ L2 F4 X
  6. #include <stdio.h>9 J+ v9 H  u) p6 q% H6 \( E
  7. #include <string.h>
    ; Y' L$ k5 r6 M5 j$ v6 n

  8. 8 l+ l* Z" f" A8 y
  9. typedef struct {6 e( P' K+ z" `3 V0 ^. \; J
  10.         unsigned int        e2prom_cmd_sub_addr;
    # t3 i9 }* A5 s4 u& P$ a
  11.         unsigned int        sub_addr_count;$ H2 I& |/ Q( M2 o* @* }
  12.         unsigned char*        e2prom_cmd_data;6 y2 f: o7 {+ @
  13.         unsigned int        data_count;) x7 A7 S/ p, Y4 E: ]1 L5 U
  14. } e2prom_s_cmd;$ y& N3 A0 m, O% l

  15. - m6 t) H. h( T0 B) d
  16. #define E2PROM_CMD_READ 1
    3 a9 K6 A7 E% l0 v: y+ K
  17. #define E2PROM_CMD_WRITE 2
    0 G4 ]$ B. x. f+ R7 Q7 A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : Q  L3 T7 @# t4 F5 ^
  19. 4 w# N! f- K8 H4 o7 t+ X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 {' S% H5 Z8 j% [4 A; [" _
  21. {
    " a0 X3 ~* A* x# P' B6 s
  22.         int fd, ret;2 U3 M/ _6 w% q+ U) L  y
  23.         e2prom_s_cmd arg;& b5 }/ D  x! \/ ?' y; l& ]7 @7 X
  24.         unsigned char buf[0x18];
    ) {. J( k9 r, C1 U( w4 g

  25. 0 z5 B! ~/ ^9 p/ p, Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 w3 A  Q  s& `- E3 m; s
  27.         if (fd  < 0) {- x! f6 H) b8 f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ J) l: A7 y. M& H# c
  29.                 return -1;" t5 J  }! o7 d. w% X, l' ^
  30.         }
    ) f2 h% ?; K* _5 w1 u: `9 b' @
  31.         arg.sub_addr_count      = 2;
    - t; H2 G: j9 R% r' h3 A
  32.         arg.data_count          = 0x18;
    7 d8 x( G: E+ Z: W+ k- ^" @
  33.         arg.e2prom_cmd_sub_addr = 0x290;5 u! p# V4 ?' P. G5 S0 |4 ]( w
  34.         arg.e2prom_cmd_data     = buf;
    ( b: @# j* U$ F: ~. ~( d  A5 J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);* B9 [# I+ x9 `) @7 Q( I
  36.         if (ret != 0) {
    3 E) G* S6 B4 `6 n9 s/ e  j1 U0 g
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);& m  s. V2 d( s- c4 m& ?" r4 \
  38.                 return -1;
    7 S' G& V& _* g* `& u
  39.         }
    8 ?  {# w1 D2 T' E$ E# {
  40.         memcpy(mac, buf, 6);  ~& u0 |' y2 P: j3 a- Q
  41.         memcpy(stbid, &buf[6], 18);0 a0 z5 K: x. Z  v7 r  n; {6 j9 R
  42.         stbid[18] = '\0';
    1 J9 ^9 Z: c1 f

  43. / z3 d" l( Y2 Z! Z( |, V
  44.         return 0;
    . P5 c: w2 M  M" ], t- Q
  45. }. V/ o* r1 {6 s- `
  46. * Z5 |2 K3 S" N6 ~9 U5 K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    2 W4 U; E+ A7 D8 k; P
  48. {
    0 n8 h" O" o8 u8 \' C
  49.         int fd, ret;% l: {( o3 _+ ]8 M
  50.         e2prom_s_cmd arg;
    " c  z& N6 i  U
  51.         unsigned char buf[0x18];3 h0 F5 x* q5 z9 D; Q  \5 {! |
  52. 6 R% M! M! i1 I4 j& o$ C
  53.         memcpy(buf, mac, 6);& Q$ S# S% m* ]  ]  L; y
  54.         memcpy(&buf[6], stbid, 18);+ u+ E; L6 d$ h
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
      ^- S' S  E. N
  56.         if (fd  < 0) {
    % X* d  J  f6 n. `5 ~' Z' z* h
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # ~6 G( z$ v0 v( N3 W- s
  58.                 return -1;7 b7 Y0 l' k8 T' ^- D  v: M
  59.         }5 R( w! h: `5 v3 x# [! E" A: s
  60.         arg.sub_addr_count      = 2;) y5 I- ?& v! ~* Q9 E
  61.         arg.data_count          = 0x18;
    . `7 c8 a. A1 J3 \
  62.         arg.e2prom_cmd_sub_addr = 0x290;" J- b, e- l8 T6 m/ `4 G
  63.         arg.e2prom_cmd_data     = buf;
    6 C8 y# z4 ?8 [- G; [
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ K- Y4 `1 K7 `; Q
  65.         if (ret != 0) {
    / Y# c+ _( @: ~0 N+ F  z2 |3 n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : o* ?) e  R# o
  67.                 return -1;' Y  k8 l) t3 ?- m9 C1 e" L, W
  68.         }& c0 @, L* _4 h4 s
  69. 2 {  Q0 Y# i5 }3 q4 C
  70.         return 0;
    % ]+ V5 \6 v1 d3 Q5 t# U! D; w. e/ S
  71. }
    1 @$ R2 H/ X) S& E3 O7 O* K8 w

  72. 5 k/ m7 B3 V+ y8 P" o5 S
  73. int main()
    ! [6 V$ Y, {$ S1 n- z3 V% {
  74. {
    " n( \. Z' |# H5 c, K) r$ x" W
  75.         char c;
    8 X, o6 z( m3 e2 r; x
  76.         int i, macs[6];
    ( F0 _6 [$ z+ h" P; C, h
  77.         unsigned char mac[6];
    ( ~4 i$ c; R$ b
  78.         unsigned char stbid[256];4 _4 ~! E8 a) U; G; F6 x

  79. ! i" t; d9 d1 i1 \; Y
  80.         if (readparam(mac, stbid) < 0)7 O+ ^" K9 L# t7 ?
  81.                 return 1;
    . E, H- p+ ?; z' D1 O6 a7 S

  82.   m/ y2 U6 ~( X4 J' ]) z* a' {& K
  83.         printf("Current parameters: \n");5 ^: @& |' Y8 U( J5 L5 q( C
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) s# l$ Y3 a# [) B
  85.         printf("  STBID: %s\n", stbid);; O5 M; \. P5 _; ]
  86.         7 j0 E" l) g9 x$ a/ ?$ B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");& {1 s1 G$ p0 ?- R1 n1 h. n; r3 o
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 X' A( W- m. Q% W, E3 M2 K: ^8 M
  89.                 printf("Input MAC error\n");( A0 F; d! O7 t+ K
  90.                 return 1;, E7 l# d3 @, V2 y
  91.         }0 n& {! R8 W0 n  `7 e
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    * s3 B  M; o  ?4 z1 ~; G7 D
  93.         printf("\nPlease input new STBID: ");
    - m1 V4 x1 ~$ l1 i2 L- Y$ z
  94.         scanf("%s", stbid);0 }* J5 E$ a. T) G0 G2 s. j
  95.         if (strlen(stbid) != 18) {& Q# p/ X8 D, R/ j$ _. t* T
  96.                 printf("Invalid stbid\n");! |' p* y* y$ x- B+ {# c$ ~# b
  97.                 return 1;4 g/ Y2 W! j( u* o; z
  98.         }
    $ Z7 F2 n& {* v- U, _+ u! d
  99.         printf("\nNew parameters: \n");/ \6 l0 C; R! H" B) Q" v( Y1 G+ e
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 h6 G: Z* D9 f
  101.         printf("  STBID: %s\n", stbid);
    / r, P' l4 `5 R! W/ W

  102. ! m  l5 b3 @, k3 P9 K
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    # s- }6 \3 T0 C7 Q+ s$ i
  104.         for (;;) {
    9 R! Z. D# R. x2 s8 f
  105.                 c = getchar();
    0 Y+ r& w. J/ U5 ~& M. [; q
  106.                 if (c == 'y' || c == 'Y')9 c6 w; `# M0 T; ^4 ]9 t
  107.                         break;
    1 q. w- |) \3 r6 ]9 ^1 R: o
  108.                 if (c == 'n' || c == 'N') {# {6 f! c$ y. ~; q- ^
  109.                         printf("\nAborted.\n");* k* U1 {) N4 p- J, l6 l  y! b
  110.                         return 1;$ d3 N9 y( N, L3 }( O- g* f
  111.                 }
    + d2 O, n4 U5 X5 \
  112.         }) y$ [* B3 t' ~$ s2 Y2 p# q
  113.         if (writeparam(mac, stbid) == 0)
    " n9 ?+ N3 ^# b6 b% A6 L- q; r
  114.                 printf("Parameters changed.\n");1 n! c8 s/ I4 U; h" N6 i* J! q0 ?
  115. 9 o3 C1 t1 W; N5 {# h
  116.         return 0;" N! }5 W3 s8 w' A
  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 7 ?7 A) t5 `& d
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 y2 p# A7 }1 Z9 m/ x
你用的编译命令行格式是什么?
' X& G5 p6 E1 s) j
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-22 02:14 , Processed in 0.346424 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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