找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15278|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ ~, N0 K. @0 `; p2 X1 w+ E
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    # L7 y% h- `  Y( ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:- e. p/ o  r" N9 l: r
usage: himr <address> <value>. sample: himr 0x80040000 0x0' H- d4 Y: U2 z4 p, T5 Q

2 W  B" z' [. o9 s1 G+ c% `( g% Z4 ?) a2 P) G4 D9 R, R: w0 F3 r
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% q# }  {% r. W+ Y+ n4 J

; Q- F/ j0 L9 h4 ]补充内容 (2012-3-8 09:42):
& h0 X6 a/ o& \8 m+ Mhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 n/ b* V0 x: m这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
' t3 n7 z/ a( R5 z5 [. b; b
2 `! e4 |* }) y1 r! d' xhimr <address> <value>. sample: himr 0x80040000 0x0
. J; D4 @& k2 Q0 c) i. t
! i, i9 L' J. Z- I8 k3 r例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。1 C4 H& P5 m- P: z
himr 0x80040000 0x00" z8 ?7 v. s7 P9 J: k; A
himr 0x80040001 0x11
, D# o1 a3 t- v. Yhimr 0x80040002 0x22
7 n  u8 S- f# ehimr 0x80040003 0x33% g" w6 K+ s& Y" S3 z7 I- k
himr 0x80040004 0x442 v- \9 _4 Y& p" s# j* C: Y$ Y# }
himr 0x80040005 0x55: L+ p$ R  O3 C( y
  I" m- H- r0 d/ E' B
SN也是类似。
2 |/ S& C! _2 C% R; T$ c3 d+ h/ t4 m8 ?& ?; B" P  r
现在主要是,谁告诉我们MAC和SN的地址?+ S" d; {* O# x
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
, L1 x/ E  r7 O- r* Y  n9 M, r. c一直想找到运程修改MAC和SN的办法,苦于无解啊

& E# Q# N6 M3 H源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
' A$ Q2 M$ E; X- ]) b, I/ X7 Z& \" a2 b! f. l8 \. ~/ X
修改的代码早有了。到今天不会编译。
* {2 f, j& c, n9 s7 R需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- R! e! G% u! a
  2. #include <malloc.h>1 E( S; l$ S8 ?: I
  3. #include <sys/types.h>9 d  x7 d! E1 U5 c' ~. n' X. |
  4. #include <sys/stat.h>  M+ x4 x; m' [" @: i8 q
  5. #include <sys/ioctl.h>
    * p- R% R% \; z2 _: s
  6. #include <stdio.h>2 \+ m( j. `: [
  7. #include <string.h>
    7 C3 c$ F/ _& m, g1 ^. k' V
  8. 5 z6 d! s, {2 H3 }
  9. typedef struct {
    5 t+ X8 h. x4 k8 f3 I- N
  10.         unsigned int        e2prom_cmd_sub_addr;  H, a6 C" m1 c) ~  ]
  11.         unsigned int        sub_addr_count;( `: ?  j* _6 z# M9 `
  12.         unsigned char*        e2prom_cmd_data;, ?' o4 R3 M8 h4 K* x! m! S
  13.         unsigned int        data_count;
    , w" M9 [5 V8 X8 S* s
  14. } e2prom_s_cmd;9 B& E' Q& k5 t2 v! u( v
  15. * c1 U3 K; u7 Q* R0 O& l
  16. #define E2PROM_CMD_READ 1
    8 t% K( A- U* u- ~1 L) ~
  17. #define E2PROM_CMD_WRITE 2- t8 a4 I0 y, O$ Z
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + @, }" W7 X, Q+ Y

  19. : H8 w7 h  ]  k# T, G$ ~; l) v+ z
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ( }+ k( F5 Y8 }1 i) l
  21. {& g/ k8 ~5 k7 I7 Y
  22.         int fd, ret;/ r5 @" i* \6 P1 r
  23.         e2prom_s_cmd arg;) G( M- P: h1 g+ ]" L: ~: A. Q
  24.         unsigned char buf[0x18];
    5 D( x7 g( r- q' g+ a

  25. 9 I. q+ i# b6 s, d7 ?' }% E
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. B4 c3 G5 _7 @. n: q
  27.         if (fd  < 0) {" t0 ^* H1 q% A% L/ w5 U
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 i- C+ c2 @0 a: p9 U
  29.                 return -1;2 E8 o; r4 M# j9 `
  30.         }
    0 m0 ?0 q% q6 t9 Q
  31.         arg.sub_addr_count      = 2;
    ) D5 I) q+ K* _0 k
  32.         arg.data_count          = 0x18;
    / ]- `- v) ~. h
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    & k6 x% T: c  M+ }
  34.         arg.e2prom_cmd_data     = buf;
    & j: p, B5 d, v! O+ J
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & B, m7 g" [3 ~% l$ u; l1 y
  36.         if (ret != 0) {
    ( s1 v, ^" L7 |! c) d! a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 }5 N* F1 i6 D- f* r! x/ n
  38.                 return -1;
    " k* X" O" [+ T" q5 {9 U8 @
  39.         }3 V1 F+ r) M2 g& D
  40.         memcpy(mac, buf, 6);
      v( z# t% P$ T
  41.         memcpy(stbid, &buf[6], 18);1 W  b' H% q) j4 t* i# S& W* U
  42.         stbid[18] = '\0';
    : n) l7 u$ _5 K

  43. ( u( |! n+ t; h8 Y. b: V
  44.         return 0;
    ( ?1 Y$ p, R0 d6 b
  45. }
    " ^& b- _9 m. q
  46. ) |5 p% W( l8 k' |: I
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)+ \# U0 T! v! O, K" v7 ]
  48. {
    : E" b, {$ y) ]% E
  49.         int fd, ret;
    9 ^6 b0 m" B! \: x1 q4 D
  50.         e2prom_s_cmd arg;
    . U* ^! y; I+ n6 _( e
  51.         unsigned char buf[0x18];
    1 j8 s6 e! z: \4 s9 ?" k  B# e
  52. * e5 O+ ~2 E' \8 @1 S
  53.         memcpy(buf, mac, 6);
    ( p9 j5 l# `( S
  54.         memcpy(&buf[6], stbid, 18);" C7 x: e# I! J
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' e# m6 Y& |# D. r0 }2 ?  [; j" V- j
  56.         if (fd  < 0) {2 O. W7 m: l# j1 Q" W
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    9 o/ M/ R" q; a- Y8 M
  58.                 return -1;5 Y; s# I% J: x% O- D- {4 x7 B
  59.         }
    1 x9 ?% n6 [# \3 ~- m$ e' A5 t
  60.         arg.sub_addr_count      = 2;
    . d/ V2 t) u4 v, a1 R. F& [. T
  61.         arg.data_count          = 0x18;7 X, L$ e! w5 g( ]
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 u" q, y6 g7 L6 C: L
  63.         arg.e2prom_cmd_data     = buf;/ g, p7 l& J: t+ P+ ~
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " o& `; S7 M* U* {2 g# Z
  65.         if (ret != 0) {) g, ]; Q& a" [% U" G: D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    6 c; A4 i5 e+ F& L. x
  67.                 return -1;
      _9 }7 V$ G' C/ c3 Z
  68.         }
    0 x$ b! o' K! g; g( {7 O4 X
  69. * ?2 z) _' P$ k+ X' y- Z
  70.         return 0;9 \. Q  V% r% ~6 J. n' \) X
  71. }0 J4 E" V2 H* _
  72. 6 p; Q* J# N7 R" x* I
  73. int main()8 y  }$ a7 A: I% F2 k
  74. {- a! I$ k4 ~4 m% Y$ A, Q, I. P; C1 D' `
  75.         char c;
    # i" Y. I: i- R4 k" X# Y# |
  76.         int i, macs[6];4 H; t  Q% A  c& p
  77.         unsigned char mac[6];
    4 Q3 A$ t! t7 l1 D0 ]: q$ x
  78.         unsigned char stbid[256];: {0 d7 m; r# T+ T1 U- B! n$ L0 T1 L
  79.   N/ t! B% ?4 n+ @. g
  80.         if (readparam(mac, stbid) < 0)$ p0 x, L% N+ J. C: @
  81.                 return 1;
    7 r+ B. {6 M3 E0 i

  82. - x' t% N, P8 W; d& y, X) Q4 Q
  83.         printf("Current parameters: \n");3 \7 _) y" f+ _4 S
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 F2 G! w5 w" ]0 f2 G
  85.         printf("  STBID: %s\n", stbid);. x4 j6 v/ [+ ?. ?+ I
  86.        
    6 }9 K+ L5 X- n' C9 W7 ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / A+ ]- `" J& y4 Q% K# |1 y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* i+ C+ X/ u8 F. V6 ?" ?1 G4 e
  89.                 printf("Input MAC error\n");+ D0 }1 M* V6 V2 H7 p6 @
  90.                 return 1;
    * Q, j' T  J  e. I& }
  91.         }; r+ `5 ]- d& M% M: P# c& u) [4 v4 x
  92.         for (i=0; i<6; i++)mac[i] = macs[i];1 R' G2 [& O1 h5 j" T) Y
  93.         printf("\nPlease input new STBID: ");
    $ I* \+ ^! |# X* b$ j3 k  f3 i- ^
  94.         scanf("%s", stbid);0 K* h. R: y; N) L; \+ g
  95.         if (strlen(stbid) != 18) {! l& m. o. D8 H) V9 F/ D# A
  96.                 printf("Invalid stbid\n");1 ], d( b6 u% X" W
  97.                 return 1;
    - @$ ]% b9 M! z/ a2 z/ _3 S7 F
  98.         }
      y! e1 X) v$ x. ]% F2 F
  99.         printf("\nNew parameters: \n");
    4 S0 S5 l$ E% ?; W. O% h0 Y$ L
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # M! @/ [, G$ g( i( P5 Z& S
  101.         printf("  STBID: %s\n", stbid);
      N+ V/ A6 t0 W) {7 a& ?/ j0 J

  102. " }. O' _9 b& w, m2 _
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ x- r1 f- Q2 E
  104.         for (;;) {
    # H+ |2 U0 R( G& a2 G& a* S
  105.                 c = getchar();
      c' e3 X) Q' e. ]4 n1 n
  106.                 if (c == 'y' || c == 'Y')2 u5 @! f3 s* {; N8 x0 L" C
  107.                         break;5 y$ K# _: O* }
  108.                 if (c == 'n' || c == 'N') {
    8 L) I- q/ {3 K. q/ `
  109.                         printf("\nAborted.\n");0 a' b( K$ I5 @' n. P2 s
  110.                         return 1;3 i  x. j2 V) o) L1 n9 B
  111.                 }
    / M9 [2 e9 ]: o4 v
  112.         }
    ! A! ~$ [) \1 b- m4 t
  113.         if (writeparam(mac, stbid) == 0)
    9 O7 P# V& w, y6 i6 p
  114.                 printf("Parameters changed.\n");
    : i# s7 a( x( R
  115. : s) _7 s! a3 I, r9 N5 ^6 f& o3 {
  116.         return 0;7 o* D1 |( R0 T7 o. B( V
  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
/ E! W" [9 R# C, I在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
; Z$ e: Z/ g4 Y) D- T" N
你用的编译命令行格式是什么?* Q7 _& {' D( S
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-15 11:49 , Processed in 0.023701 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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