找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15693|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' n% b) ?+ j9 F% R" ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    0 T: y5 f3 \( h2 z& m* e
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:5 l# p1 i5 ?1 b% ~6 b: S/ }# O" j
usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 ]- B- J$ _& D% O! {
. R. i& v& U0 I
3 H- b" }7 F% E不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?: T! I) x3 b9 M( E3 `
! A4 M" y; B4 ^$ N2 Y6 C9 ~7 \
补充内容 (2012-3-8 09:42):- z! [7 \- |% ^
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
+ j# X, F  ?+ `$ z. m4 d  C这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
/ O8 ]- z  U) D% }; X# {6 A6 L) L& w1 O- _3 _7 Z! B9 W) _
himr <address> <value>. sample: himr 0x80040000 0x0
6 Q8 e' O" C& I: n7 K
! {# x6 A9 c/ f, n/ [' l例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
2 d, B" v0 d5 B, z/ s+ b6 ghimr 0x80040000 0x002 G9 ~* Q) ?7 z' {4 o$ d
himr 0x80040001 0x11& A' A$ A- A- {0 y; o' a3 z4 q. d
himr 0x80040002 0x22
4 S. q8 K" e- ]# C1 r1 p  Y7 w8 k" |himr 0x80040003 0x33
; |7 D5 r8 C) v, Shimr 0x80040004 0x44% J4 H# ?2 u; F" ^) w
himr 0x80040005 0x55
6 M( k3 Y6 [1 ~, |  o6 A
* I. U, F* w* c3 wSN也是类似。
8 a+ T* e. U( v. t
( X# k; s: [6 e) a: T现在主要是,谁告诉我们MAC和SN的地址?5 l( y5 h" t# G* v6 T9 C
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
& }# S8 n# h* g0 m一直想找到运程修改MAC和SN的办法,苦于无解啊
* M$ `( d- [. F0 e- _- i
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
$ G* \3 N$ t7 W- D) m
% Z5 R& E  s% E5 l% W修改的代码早有了。到今天不会编译。
6 O8 ?3 e0 A( ^需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h># @& ~9 E, g* \2 D+ O
  2. #include <malloc.h>
    8 ?$ t6 b( X2 k* K4 D# r- o$ z
  3. #include <sys/types.h>
      o! C: L8 L/ B1 |* T2 C: Z1 K
  4. #include <sys/stat.h>  c; s/ }. L  X
  5. #include <sys/ioctl.h>3 @; y' n5 ^# D: D+ m
  6. #include <stdio.h>
    9 \  R7 A* ]! k
  7. #include <string.h>/ C, }7 V* f+ B# s" U/ m
  8. & t; K. @8 ]5 J
  9. typedef struct {: J8 ?0 }5 ?5 x) q
  10.         unsigned int        e2prom_cmd_sub_addr;( q! V3 R  }% C! Y; d
  11.         unsigned int        sub_addr_count;
    * z2 c8 X. z" ]5 f( x
  12.         unsigned char*        e2prom_cmd_data;' T  B5 O, s( s6 T8 V4 J
  13.         unsigned int        data_count;
    ) X( V4 o. o' c& v. Z( u
  14. } e2prom_s_cmd;
    ) b0 i9 {: Y8 g
  15. & J2 x. ]& c8 k9 r  j2 q6 A
  16. #define E2PROM_CMD_READ 1
    2 o0 m# E9 U  ]  A
  17. #define E2PROM_CMD_WRITE 2
    . `3 H, Q: t" S, o& i
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    , ?* O! R4 d& a8 p0 m" y- f
  19. 1 C/ B. }1 }- j
  20. static int readparam(unsigned char *mac, unsigned char *stbid)" l4 s) a- k3 O8 U( R
  21. {
    : [! R% n$ Z4 H, l
  22.         int fd, ret;
    2 J/ y: G* C2 }  m. t# d: Y
  23.         e2prom_s_cmd arg;
    7 a6 m3 W% J6 f( r. ~9 a2 _
  24.         unsigned char buf[0x18];
    : W. j+ R" c8 J! \8 U$ V/ D  w: f9 I7 K

  25. / F3 X) m# S4 I1 ^' u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    $ S5 M! B. f# F8 l1 m
  27.         if (fd  < 0) {& c' A2 K! T6 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);9 c, Y& t2 U  v0 v& L
  29.                 return -1;* ]* Z2 |& M- ]; P# j/ k! _; u
  30.         }
    0 t" p7 @2 b% _2 @
  31.         arg.sub_addr_count      = 2;5 `5 t$ d" U. ?8 q0 i3 m' \. P
  32.         arg.data_count          = 0x18;9 u- F% c! o- p1 c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 T' K; j5 J( G% i5 ~+ c; D
  34.         arg.e2prom_cmd_data     = buf;
    $ o, K6 |, H/ A+ k" }8 E9 i
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& K* f* U) r* ?- `. j' L' z
  36.         if (ret != 0) {) f' W. Y& W: Z8 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);% D9 z& D+ {7 j
  38.                 return -1;
    + t3 H+ [) Z' V; L% j' B& k+ N
  39.         }5 k# i1 z- D5 I7 I
  40.         memcpy(mac, buf, 6);$ [, U2 x# W+ n% n! e# q/ Q
  41.         memcpy(stbid, &buf[6], 18);
    ' {+ I: G8 G. c4 h3 ]" \) O$ z
  42.         stbid[18] = '\0';
    $ \) f: G: m( f8 B9 ?& K9 H6 C
  43. 0 d9 K% W# D2 o: _: J
  44.         return 0;
    6 S% t% s/ o/ O7 E1 ^
  45. }0 T: L0 G* d$ [* J  C# R

  46. ' h0 |3 n. O7 B  X5 M' \  }
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    6 Y, x2 f. g( y/ q) j  m& y
  48. {
    " k0 k1 a# Y: R. P
  49.         int fd, ret;9 [" g$ q% \  l8 q  v$ t% B- ?& Z
  50.         e2prom_s_cmd arg;
    $ l$ m" t; [5 K
  51.         unsigned char buf[0x18];
    ' e( V* n) R, j
  52. . K; Y0 E* s  q& {" w
  53.         memcpy(buf, mac, 6);) {" H+ I$ t6 S2 L% `5 ]! `% R
  54.         memcpy(&buf[6], stbid, 18);
    % S* I: o6 h+ o9 l$ T' I. _9 t
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    7 u7 i! O9 P4 _. J7 F
  56.         if (fd  < 0) {0 ^6 q) `+ e/ }9 l7 s, V
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);) a$ ?. i/ v8 p0 o1 `
  58.                 return -1;* M1 X1 X4 C7 J9 f9 g
  59.         }
    0 s! A) B2 W7 I3 G# @* d
  60.         arg.sub_addr_count      = 2;
    8 t  i- A' H0 e1 p
  61.         arg.data_count          = 0x18;
    0 m' E1 y5 G; ~
  62.         arg.e2prom_cmd_sub_addr = 0x290;% e; e  V% I+ X. J+ x2 X1 P. |5 i. t3 J
  63.         arg.e2prom_cmd_data     = buf;
    ) R, Z4 `+ G3 w2 H; b0 N
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);/ p, h) p) ~8 J: p5 ]- {; N
  65.         if (ret != 0) {. W( \2 u6 g; a" J9 L) D; P2 {
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# ]- _1 `$ O& m* _/ O  l: B
  67.                 return -1;0 d5 ^3 l4 m- C8 Z8 F8 v
  68.         }
    ; B  I6 h5 |& s" f% H1 n
  69. ( e/ L) ^' q. ^- B
  70.         return 0;6 k" K1 z# I0 H1 L+ C
  71. }7 e# x4 H  M6 m  h5 k! o

  72. 8 Y# a! \/ x# g9 b6 H& @* J
  73. int main()4 a) V  V" W8 p- T6 v, ]" d* U3 q
  74. {
    6 E3 b4 Y/ u  Q7 n* }2 O
  75.         char c;
    8 y. {. y: l8 x& ~6 K! Y
  76.         int i, macs[6];
    & ^1 D8 X4 f$ ~0 ~% h' U" _; v
  77.         unsigned char mac[6];- t% r' E4 J) q5 v. _0 d
  78.         unsigned char stbid[256];
    * D8 [/ s! [8 O$ @: l

  79. 1 o: q+ }7 n$ o; B1 u
  80.         if (readparam(mac, stbid) < 0)4 w( \4 v" `$ [1 i: y
  81.                 return 1;
    1 J9 m3 b& H  T; X% y1 {
  82. 1 q% q# Z/ {' V; u, Y3 @0 K" ~# p
  83.         printf("Current parameters: \n");
    ; C6 W) z6 l+ A  s- E
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: H4 i& o7 D8 m& l0 M2 W+ J
  85.         printf("  STBID: %s\n", stbid);9 H% z& O4 o& @, [+ z% Y
  86.         & P% y; W6 ?0 [. X) J2 H" ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * ^% G! V( ^( N9 A# ~* r4 n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    8 P' i& t" b" X
  89.                 printf("Input MAC error\n");2 K  G5 w2 w" W
  90.                 return 1;7 o/ C3 p$ {" E* i6 \+ }
  91.         }
    ) x: V  n0 i5 o0 D# }
  92.         for (i=0; i<6; i++)mac[i] = macs[i];! \7 n2 q% _( P7 j; O/ L2 l+ ~
  93.         printf("\nPlease input new STBID: ");
    6 w) ?% P! V+ J9 a, Y# u, I
  94.         scanf("%s", stbid);: U5 c- A6 E% _: j3 z  P/ J: B: x* p
  95.         if (strlen(stbid) != 18) {. ]) N& L/ E" O8 s7 D' M1 m
  96.                 printf("Invalid stbid\n");
    8 ~' ~- D) @$ `( z1 a, f3 ?
  97.                 return 1;" A- X+ o0 F& ]: G" F% D# }4 i  |
  98.         }4 J# z, ]- Y9 w; A: X/ X
  99.         printf("\nNew parameters: \n");2 d/ w3 e5 f. G5 o3 M1 g+ Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- L$ ~% o3 ]# A* @* [
  101.         printf("  STBID: %s\n", stbid);
    9 |( T; x% |9 O
  102. ) M9 x8 [9 J/ p) K* E6 n
  103.         printf("\nDo you want to change paramemters? (y/N) ");# x& v9 a3 K5 {. {* ?1 @4 _
  104.         for (;;) {
    , `; I- ~' k1 L$ [8 R8 b2 n
  105.                 c = getchar();' m2 R& c( e9 u- ?) H; d( X% I8 ~
  106.                 if (c == 'y' || c == 'Y')8 W: X0 C% [0 Z( f5 f) |
  107.                         break;( Z, G) K( I6 W7 o; c$ {4 e
  108.                 if (c == 'n' || c == 'N') {
    : X" U% P- ]- W8 c+ ^# g( D
  109.                         printf("\nAborted.\n");1 f2 ^; s' ?( i  h& K
  110.                         return 1;) r3 J" ?: }1 F4 K: y7 c" }5 X
  111.                 }
    4 ]- A3 L% g3 i4 F* f. ]9 G
  112.         }& N; r( `' s9 @
  113.         if (writeparam(mac, stbid) == 0) 8 m, o; p/ e/ G& F) k  Q' H
  114.                 printf("Parameters changed.\n");
    ! t3 |) y, T2 x# }- k0 V* ?
  115. ( t3 D( m" Q' {# Z& C: _
  116.         return 0;
    ( x- B9 W" o7 E. C% ~8 p9 _7 P* Z* ]
  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: t1 Z. l6 x$ p* i, H9 l在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ `7 h/ i- S9 h' W6 S; o你用的编译命令行格式是什么?
5 q9 {. ~0 v2 W' D4 p8 u
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-2-28 01:51 , Processed in 0.022512 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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