查看: 16606|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr1 D9 }7 Z2 M1 W3 t9 e) K
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    5 r$ V! @+ x* ~, M' d5 x/ ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
" n0 u' R5 x0 Eusage: himr <address> <value>. sample: himr 0x80040000 0x07 h7 r. r. k; a
6 j+ J, K( o. V
; u3 e* `" \5 ?6 N
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
. N4 B* ^9 L# H% O
  {5 ^& d8 ?7 K" {5 J/ t0 H  G补充内容 (2012-3-8 09:42):0 X0 d6 h8 u$ S$ I; s: ^' t0 V
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数! S( R2 H9 e# o& M0 z" ?( ?$ j: E
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。1 C' T0 C- p3 U7 ~: Y. k9 x: @

& _5 W+ B# y  a# Whimr <address> <value>. sample: himr 0x80040000 0x0
) z6 S4 P' V( K2 {( x- `) l
. N$ }  _4 L6 W8 Z9 B* P例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
5 S& W+ b8 O& E  \# Mhimr 0x80040000 0x000 L/ \4 N3 [" q. R6 I' W+ `! S
himr 0x80040001 0x116 ]; {9 y. r: s& d3 }1 @9 ~) |
himr 0x80040002 0x22
4 ]2 H; ~1 b% T( t4 `/ ?% _( l" t8 Shimr 0x80040003 0x33
8 B, _3 F- z" n. N' Thimr 0x80040004 0x44
% Y" D  p1 D8 E+ ]( G: |himr 0x80040005 0x55+ S9 X9 [3 c2 n$ R5 q( [
+ j- ^9 F: e6 \& V/ ]
SN也是类似。
8 N; M( |3 E; A) ~
: ^0 p/ u, L9 o7 T$ E现在主要是,谁告诉我们MAC和SN的地址?
- k7 H0 Y7 z: e/ T' C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
) R' w, P+ u0 O4 G: B6 s/ M) r4 d" X# ~一直想找到运程修改MAC和SN的办法,苦于无解啊

) o7 m$ r+ q$ {' m源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 Z0 m- l; z7 H5 c/ j9 ?2 J. s6 J6 y* Q8 N7 s  [
修改的代码早有了。到今天不会编译。
* V' m" c) p" `  R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 G; `9 ^( ^% z5 G0 T
  2. #include <malloc.h>
    3 }* n8 R! {8 a3 k
  3. #include <sys/types.h>
    1 P+ o( W6 X1 J6 [7 f) ~$ T7 }. Q+ w
  4. #include <sys/stat.h>; C! G5 V* x0 [9 d! Q
  5. #include <sys/ioctl.h>+ H- _1 o# }0 E9 `2 m
  6. #include <stdio.h>) \: Q2 E! k. l1 c3 s
  7. #include <string.h>9 G/ ^; S- a0 v# ]

  8. 8 A& d4 e7 Q7 y% K8 \: @7 @" }
  9. typedef struct {: b4 T( V3 l  A% u" w' _. c& C
  10.         unsigned int        e2prom_cmd_sub_addr;
    + `6 P! S" U2 M8 Y
  11.         unsigned int        sub_addr_count;
    : |9 K4 a1 t0 F6 {# ]8 o
  12.         unsigned char*        e2prom_cmd_data;
    ! J+ W) {7 [4 d5 T, t! T
  13.         unsigned int        data_count;+ T7 y( j4 x; f* A
  14. } e2prom_s_cmd;1 v+ ]2 p1 g  Z

  15. , o) u/ {0 O# Q; Z% S
  16. #define E2PROM_CMD_READ 1, y+ A% b# |! ~9 f+ Q& v
  17. #define E2PROM_CMD_WRITE 2
    ( D2 s) z9 P# a0 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; {& ?# }; H0 X( T# b; q+ i

  19. ( y: A+ i. k6 I$ ]8 k% s* u$ H
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& E2 s8 F' Q9 N/ b' \" T: `( }. }
  21. {$ a# i3 Q9 Z) e/ c6 m; {1 Q" r4 |
  22.         int fd, ret;
    2 S6 u1 `& d0 q1 L  G1 _
  23.         e2prom_s_cmd arg;5 O6 a7 ]* {) m' }) V2 _
  24.         unsigned char buf[0x18];$ n, i) c. _5 |9 W7 ^

  25. $ X) h1 R* M" h2 ]# D: O1 G, V3 m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& ]: G) [' ]( n' ?  V
  27.         if (fd  < 0) {; H& w7 ^3 V* i9 g8 i' k
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    0 L4 Z8 Q; k; I/ u* O9 x  V1 b
  29.                 return -1;
    . a3 `# ]! b1 R& B7 b
  30.         }# C( x. M& \0 n2 f1 a9 Y* H, M6 j
  31.         arg.sub_addr_count      = 2;
    : v% C- V& j0 e$ `% `) x
  32.         arg.data_count          = 0x18;) G5 J8 F+ z! m3 k3 x8 ~
  33.         arg.e2prom_cmd_sub_addr = 0x290;3 a; L) R" L" _# a7 A. F8 O
  34.         arg.e2prom_cmd_data     = buf;
    + `1 F' y2 y, O, l' B6 i: j
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    2 h' F4 P4 N( O5 o7 m
  36.         if (ret != 0) {
    . ?7 u( I- n# J- @% X7 m1 B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);+ o( \( Q4 r8 X7 V
  38.                 return -1;7 B2 R: Y2 X+ z& V8 B; r
  39.         }0 D% F9 L- ?, B  K! c
  40.         memcpy(mac, buf, 6);
    + j: J6 C9 F; [6 n
  41.         memcpy(stbid, &buf[6], 18);  J, d2 C* r, ~7 o# k  M9 a; M
  42.         stbid[18] = '\0';
    , r' h( W/ L9 q% o0 O
  43. ! q* o: o$ Q( Y3 g$ C$ v* K
  44.         return 0;
    $ X6 @* x7 i1 Y
  45. }+ J: e7 [1 e$ \" U4 s
  46. ( t4 q8 O8 Q2 u( k
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# v+ F& k# M6 F' U( E" M
  48. {
    : e0 n6 b2 h1 d
  49.         int fd, ret;) O% b$ V" T" @  P( K: _
  50.         e2prom_s_cmd arg;: `8 Y3 D, N  i; w$ M- l. C
  51.         unsigned char buf[0x18];7 m9 x  X% L3 O3 ^, N1 ^

  52. ( k# E0 a; C, S2 N
  53.         memcpy(buf, mac, 6);
    2 j7 e1 @+ n/ r. v. b- l
  54.         memcpy(&buf[6], stbid, 18);
    3 `1 w" |8 s- U5 n
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    . H  S8 O4 J0 h. j7 b: _# j2 X
  56.         if (fd  < 0) {
    , b: ~9 ^6 b2 F* C, r1 o5 z. `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    3 I  @4 Z+ v2 t' s& @* [* c0 `* h
  58.                 return -1;
    * x) V2 r9 |8 W7 z+ n3 H6 a" U) N/ l
  59.         }. P, d; p( f' [- U. u
  60.         arg.sub_addr_count      = 2;
    # k# X) e3 Y$ g( P
  61.         arg.data_count          = 0x18;
    " C( k" E% z* P  i" a) t; N7 u5 Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    * i. M  D4 L% B2 A* P4 ^
  63.         arg.e2prom_cmd_data     = buf;
    9 z& }' @' U  b' g2 x
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' V. S( g# G/ y( v* R9 y# q8 R
  65.         if (ret != 0) {* N$ K( q' a4 ]& `# y( X' a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);0 K$ V4 T6 Y" R/ O
  67.                 return -1;; Q2 K+ o- t' \4 i, j- V. R
  68.         }: q6 ]1 ]3 y8 |3 W

  69. ! C. V4 `# k, o8 K
  70.         return 0;
    * G& A9 K' a0 _/ I) t
  71. }1 t+ E! |% S- X+ X: f0 d

  72. , M' {+ e4 w6 X7 y- K
  73. int main()
    # ]) D! C5 m8 Z
  74. {
    4 h$ W2 R& Y) R+ r$ e) x
  75.         char c;
    % ]4 u9 o7 X8 R9 c
  76.         int i, macs[6];1 h3 ]  \' c; ?# s1 m
  77.         unsigned char mac[6];1 i$ _5 j' t( u6 H% ?9 Z
  78.         unsigned char stbid[256];
    ) Q' a/ ^4 k% b( v; ~3 v+ o
  79. : x+ q& Y, ~& i' S3 [, m
  80.         if (readparam(mac, stbid) < 0). w" J: k/ y3 {% c: k7 w0 ^" _% _
  81.                 return 1;
    + }7 ^( A, R) u2 i
  82. 5 g6 V# D5 Y( T: K; L
  83.         printf("Current parameters: \n");
    % k( r( S- s) n. u6 w# J. d- V3 Q
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 t9 v* M$ T/ s/ I  I
  85.         printf("  STBID: %s\n", stbid);' M1 T5 s5 Z1 t  F: L0 w
  86.        
    ' D: X# {5 i: j* T
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    & J! x/ P  v' e9 c8 C4 X
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    , M1 v9 @; @$ i4 D& i" S1 L. ^
  89.                 printf("Input MAC error\n");6 s% C4 V% k; j# u4 S
  90.                 return 1;" T' Q( r# V1 k
  91.         }
    / R9 h0 a' g+ s( Z1 ^$ i- O: V
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    - J- o) ~. n. c* V/ o, x( B' F( ]
  93.         printf("\nPlease input new STBID: ");5 r  X% @  M- ?/ U
  94.         scanf("%s", stbid);
    2 ^- U+ T# [5 S" D8 G
  95.         if (strlen(stbid) != 18) {+ r$ W, }4 M1 S2 K0 J. G; k
  96.                 printf("Invalid stbid\n");- h2 {* E6 e& @9 d2 s  T; H- O
  97.                 return 1;
    ' z/ J9 j" A# K  S7 c" m! s! v6 A
  98.         }9 S/ \0 l6 t$ c, Y! f
  99.         printf("\nNew parameters: \n");
    ( b; ?% B2 `, ?# k- o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 s+ U( t, ~# X* @% o- o
  101.         printf("  STBID: %s\n", stbid);
    ! ?* }! z$ r) F  S/ w1 M

  102. # H, a+ Y+ U; c& e- y# D
  103.         printf("\nDo you want to change paramemters? (y/N) ");  N! s8 ~0 D& z  T7 N% t
  104.         for (;;) {! _; \( ?5 x3 X" u7 n
  105.                 c = getchar();
    7 b( I2 |# x3 K# M% Q6 V, R4 o& {
  106.                 if (c == 'y' || c == 'Y')0 u8 w/ H( D8 m. Y8 w5 l, i
  107.                         break;$ }, I) B: f6 q) a, a; X% }
  108.                 if (c == 'n' || c == 'N') {
    ( F& b* ^3 u. _
  109.                         printf("\nAborted.\n");
    1 Z8 w5 z. @9 R: H- u
  110.                         return 1;7 }( n$ g, M7 Z  C
  111.                 }2 Z1 \/ P" h" O2 R: b+ y, J: z
  112.         }) v& M" @4 Z, f8 D# L( I
  113.         if (writeparam(mac, stbid) == 0)
      A" A: b! R) G% q9 x7 W2 C, U
  114.                 printf("Parameters changed.\n");
    # M# @1 J7 G5 U( K1 i3 ?9 A5 V$ ^
  115. ' H# W5 R: d, \0 ~; @
  116.         return 0;9 f, D. u, w" R
  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 # l+ j6 j' |2 j; |1 X
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
. h7 s* U( `- ^( k
你用的编译命令行格式是什么?
4 q* K/ k$ s/ y7 {- q! x4 D
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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