查看: 16651|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    4 }2 M" ?4 R" h5 c1 o3 X, ?
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 U8 N1 L6 u1 ^) R1 O, L
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- B! G( w6 S! K: Y3 D0 i6 {( X
usage: himr <address> <value>. sample: himr 0x80040000 0x0
7 l( `* F  m6 \1 M' R7 r0 c( P) x* E0 g

* A4 b( M7 B# q$ w# I$ K  C不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?5 m& _2 ^  y2 A- N; s2 d& f( ]
+ w9 v; r1 S6 L7 A1 M1 @( r3 C
补充内容 (2012-3-8 09:42):9 _; z0 R- P# o! V  ^0 @
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 d4 ?2 |# o! q8 T; }# l8 w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
: F7 `' D) d9 m. M9 `' B9 V; ?7 Z
4 R3 e% r& N1 |! c- I. p0 phimr <address> <value>. sample: himr 0x80040000 0x0$ J3 x' I7 M& l+ L' X* d. c
$ T4 _; `+ `5 j$ M: O
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
- B' M) y$ \8 I. |- E; }himr 0x80040000 0x00& r+ _! ]+ m1 f$ C) Y: Y" ]
himr 0x80040001 0x11% D9 U  ?; l7 [8 I/ f. l
himr 0x80040002 0x224 r1 y* \% R5 I! L5 ~8 F% L
himr 0x80040003 0x33
: W- J6 \4 [- C, o  _7 [1 Nhimr 0x80040004 0x44
% N* G; \! Y" P  s& h, i, z+ o# s0 ghimr 0x80040005 0x55
0 `$ w) }2 J! X7 n2 X: y$ e* i3 F/ e- ?/ ^% r; |, L
SN也是类似。
. ~' J7 x1 p+ u+ f4 U; o; K  q- r: |8 f* M" T$ R, u0 M" [
现在主要是,谁告诉我们MAC和SN的地址?  c/ {9 D; d6 L; q0 F1 s; V& \0 k( `
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
; `( a2 ?0 R9 b% E0 F1 J一直想找到运程修改MAC和SN的办法,苦于无解啊
9 Y4 t9 S8 }/ y( A
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: {3 M2 d) m! u: C3 a
+ e0 f4 S. I8 B  m修改的代码早有了。到今天不会编译。
" C$ m3 Q" g" c2 v+ i需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  O! ]* n' Q1 [8 A' H* B3 y
  2. #include <malloc.h>' B& b) Z3 m7 X8 G1 S! g
  3. #include <sys/types.h>1 X$ Z: ^/ |) I! }4 E
  4. #include <sys/stat.h>
    % t# k1 b, J6 Y" [) V
  5. #include <sys/ioctl.h>
    9 B, p( J3 n6 f! C( B
  6. #include <stdio.h>% `$ d! r$ U) F" ~- w
  7. #include <string.h>
    / s7 P9 {6 L4 C5 v9 a: K' D3 G
  8. % L7 C+ X* C2 W4 ], G
  9. typedef struct {, X) R# i; c2 `2 K! n
  10.         unsigned int        e2prom_cmd_sub_addr;
    . {2 X# j# n0 n* v# m3 X* X
  11.         unsigned int        sub_addr_count;7 Q2 o& g2 P# |' r
  12.         unsigned char*        e2prom_cmd_data;6 v6 h- R, v% F3 }! ?' Q# b6 k
  13.         unsigned int        data_count;
    * b* ^, X6 x1 C/ U
  14. } e2prom_s_cmd;
    9 P% k2 Y, W4 O/ q$ p, I: A

  15. ! k( g" t) V+ d4 }+ K
  16. #define E2PROM_CMD_READ 1' A) ]% D) k. G. G6 ?
  17. #define E2PROM_CMD_WRITE 2
    5 r) f7 P* n$ C) N! E: P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"! D" P" X. ^1 l& T+ ?6 }, P+ Z

  19. 6 e" l/ ~: C6 a6 a0 C
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    % E: G% Q+ R% F8 a  u1 E. y
  21. {
    1 b: D% A! Q8 X3 l8 e/ r
  22.         int fd, ret;
    * J! ~5 E, f; p
  23.         e2prom_s_cmd arg;
    # h3 ~$ X7 {( U* F/ I& F
  24.         unsigned char buf[0x18];8 |! s$ b+ U- S  I& a; W' D- z
  25. + W3 M9 l; F# a% g
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; C4 [1 c  ~6 N) k! F% j8 Q
  27.         if (fd  < 0) {8 R1 V! U& W$ }9 y' d! Z
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);- c& L- c0 S$ T7 z
  29.                 return -1;
    / v( {( s" ]) t. ?7 s7 {+ E- h
  30.         }7 R3 Y- |5 t4 b8 H  ~  w3 O& k
  31.         arg.sub_addr_count      = 2;
    3 Z) t1 q; a7 y2 c
  32.         arg.data_count          = 0x18;
    " B$ y8 A8 \  g( s4 A4 J
  33.         arg.e2prom_cmd_sub_addr = 0x290;: M0 ~- D' F) h7 `) _& g) Y- ^
  34.         arg.e2prom_cmd_data     = buf;% J0 c* O7 e3 R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);' B; Y8 S0 L) p  H" N
  36.         if (ret != 0) {
    : {" o- ?$ {( k6 q* k0 F
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);6 T  X6 M, O: c/ `
  38.                 return -1;; X( w/ s2 Q' e
  39.         }& M6 Z1 {0 e' {. {- s$ k
  40.         memcpy(mac, buf, 6);
    ) E4 [$ t' M. P5 o& P8 S# W' X
  41.         memcpy(stbid, &buf[6], 18);
    " e5 g8 J( ~1 j- U/ D# r: K
  42.         stbid[18] = '\0';
    ) T  o7 o: G- B4 J/ N: c

  43. * L- x# }" B. V! y
  44.         return 0;
    4 b+ E, ?& a/ w; {- o, t
  45. }1 k- z, q" v+ h; f
  46. 7 d1 O, I( s$ t5 M/ T8 C, H9 t/ |
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    * x$ M! G* a! V: l. f& E& ?0 n
  48. {5 ?2 w0 Z4 [- P7 |" \# z
  49.         int fd, ret;
    6 t8 b5 j+ K6 E4 z
  50.         e2prom_s_cmd arg;3 T6 x- A% m, L& [4 g
  51.         unsigned char buf[0x18];' _. y; j: [6 z/ S& a- o

  52. : P3 C  Z; J9 e; Y5 t
  53.         memcpy(buf, mac, 6);0 _' m0 E: C# N. z6 j$ r/ N
  54.         memcpy(&buf[6], stbid, 18);8 i2 S0 t  Y, e) ^4 `% Z+ P
  55.         fd = open(E2PROM_DEVICE, O_RDWR);, ^1 U* b$ b" m7 ]- n% q- r
  56.         if (fd  < 0) {9 A: v9 X* V& A& a
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);4 `3 J) g/ d' B$ T; T* _
  58.                 return -1;1 C5 o$ P2 J" v- D
  59.         }  `) e" x7 x2 c2 I3 |
  60.         arg.sub_addr_count      = 2;
    ( X' U" r6 P# u# V
  61.         arg.data_count          = 0x18;( J9 Y$ a, }  H% Q; k" @9 f- c
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 u/ |& K1 ?4 {1 i; M' g
  63.         arg.e2prom_cmd_data     = buf;" u, O0 H! _7 l, C' E
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);  v' F' Z1 a7 }6 c0 V
  65.         if (ret != 0) {2 C+ a  a8 T4 I+ `
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);4 C0 k6 \& Z' t/ ^6 P
  67.                 return -1;
    & c- w8 _6 T7 ^, m
  68.         }
    9 q* I# x' j" e% T' O

  69. % v. M" U6 w# l$ J
  70.         return 0;! {! |9 ~! l# L  ?8 W6 @5 U! M' e
  71. }) X8 M2 i; Y* _5 V; W/ Z7 L/ g

  72. # J$ e' I6 ~# H# V
  73. int main()7 k) f/ Z- ^" r: |7 m
  74. {( d: ?/ @* U% z6 R* f
  75.         char c;
    7 w% E1 M! S. C
  76.         int i, macs[6];1 o8 c" O4 G" {& v$ r" w7 \, k6 N
  77.         unsigned char mac[6];% L: G+ G/ ~4 X, @/ O, d
  78.         unsigned char stbid[256];- ^9 C" D; b) D9 a8 L5 |: {
  79. $ ~8 d% x1 e% i/ F0 \
  80.         if (readparam(mac, stbid) < 0)7 z+ y; i3 ~- {# F" J
  81.                 return 1;
    5 ~: O/ c) C6 j

  82. 8 R' }5 @8 M# s. k" }- q6 q+ q4 O9 U
  83.         printf("Current parameters: \n");
    ) j4 N8 P+ @4 P/ V/ h! p2 b2 A9 e$ [
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);9 C& k7 x- I, `, R4 I1 P6 }
  85.         printf("  STBID: %s\n", stbid);
    % L1 r3 I$ d% Z) @3 n
  86.         $ ?+ G3 i' \1 g- S& {
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 _7 ]' p0 \8 J7 a0 e9 C, ]* T7 L: b8 T) [
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {! j- b' {3 w# M8 Y
  89.                 printf("Input MAC error\n");# Z, r1 R( \, `# ?
  90.                 return 1;, \7 v4 ]- J% r4 J) I9 [
  91.         }
    ' y' g0 C+ b+ v$ p' r- \# h: m5 p
  92.         for (i=0; i<6; i++)mac[i] = macs[i];" u/ p- l0 l# f0 t- y
  93.         printf("\nPlease input new STBID: ");
    9 z4 F! Z) [4 {$ G+ L0 h
  94.         scanf("%s", stbid);2 v4 j/ d; {, d3 N
  95.         if (strlen(stbid) != 18) {* a: A% S$ B8 f4 m$ N
  96.                 printf("Invalid stbid\n");$ _) B8 D/ n  b! q( f0 r1 i
  97.                 return 1;( c7 U( U  p2 Y
  98.         }, ]/ H. X2 h' G3 @: v
  99.         printf("\nNew parameters: \n");6 c! k1 O% T# s/ k  Z
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - |/ C( i7 r3 m
  101.         printf("  STBID: %s\n", stbid);
    / L" w- c4 Y3 h! p1 p- s
  102. + V. p. j% S; c: I1 Z6 p% ^
  103.         printf("\nDo you want to change paramemters? (y/N) ");. E  y' P- s9 R/ k+ P5 _) F5 p8 ?
  104.         for (;;) {
    * a% g; Y+ C; d7 z; y
  105.                 c = getchar();6 q* m( Q4 u2 h$ V% {1 U
  106.                 if (c == 'y' || c == 'Y')+ w3 a$ _, k; {1 ?
  107.                         break;
    4 n8 g9 S) f1 P" l( V
  108.                 if (c == 'n' || c == 'N') {
    , |  @8 D1 c9 O
  109.                         printf("\nAborted.\n");+ N# @& S. ?2 h& E; O  o
  110.                         return 1;) P, w+ h7 Y3 |1 {
  111.                 }
    , b5 n7 s( D4 ?$ S( `* Q5 y  h
  112.         }/ U; i' j2 C7 R$ S
  113.         if (writeparam(mac, stbid) == 0) 4 i, z+ z9 d) s
  114.                 printf("Parameters changed.\n");& h# G# g" H2 Q- x; b8 I; ?5 ]
  115. , t/ ?' C3 i; Y- Y1 n
  116.         return 0;
    % E3 I5 u8 ~7 W) G/ y, a* X  h
  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 5 L% g/ s  |& H- z$ c8 O! H
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
: Y; r" z$ Q$ u! m
你用的编译命令行格式是什么?
" {/ U) T# |1 H' d0 }3 f2 \' q
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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