找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15834|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ `! I7 z) r  @! P0 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    & X. _5 K3 x( i1 T
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:: K- c/ t6 `# U+ S; \- B1 z
usage: himr <address> <value>. sample: himr 0x80040000 0x0. Y8 P7 Q: n# V* |  a$ G8 F
" x4 B( k! j1 w  i+ v
1 [8 m3 P  [8 L, P/ n9 A! X; U
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
" a; m$ G& g/ h7 }+ W8 G+ U! H2 J; w4 Y; J; g6 R
补充内容 (2012-3-8 09:42):- E( ?7 }' U! k9 R) q0 j
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数5 K. p! g* o. A  u. d
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- W& n: L/ R. P; @1 n; p7 _7 T! `* I3 D, O
himr <address> <value>. sample: himr 0x80040000 0x0
+ n  x, W. X8 R2 H0 S& ]: U" n) ]+ K" d7 P$ c# `6 C
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% n, o' q5 }- q+ q; X, |! yhimr 0x80040000 0x00
9 y0 d, Z2 {7 w% U8 f& ?- rhimr 0x80040001 0x11
; R! N9 H, f; F( J+ W; M$ {himr 0x80040002 0x221 m# f( n/ w- g% H8 d/ q
himr 0x80040003 0x33* W0 l4 {! @- ~! w! X6 z3 D
himr 0x80040004 0x44
. G, L6 Q% T8 f" Chimr 0x80040005 0x55
% W# F. P6 o$ {  {
9 s6 r7 d2 ~% V9 s5 F6 f4 HSN也是类似。- X" `' Z! t( T6 _

% P4 g/ U8 p, B, B6 x# ?/ A( k) t现在主要是,谁告诉我们MAC和SN的地址?' @  D& i, J' g4 Y1 t$ @4 K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 O$ Z" Y$ u4 l9 J* u$ R2 X一直想找到运程修改MAC和SN的办法,苦于无解啊

1 W6 C) z8 n4 Z& \( u. a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& |# L  l2 a9 K7 x( E& F' O+ @; A* _$ j; ]1 {$ U0 U
修改的代码早有了。到今天不会编译。
8 _3 F% p9 s: }2 [" Y9 ]' m  h需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>2 _$ U' i* t/ [2 V4 d
  2. #include <malloc.h>
    3 W/ i- G9 _% T& B/ E7 G  g' R+ G
  3. #include <sys/types.h>' B( G7 [5 n8 G8 ]/ n; U7 }3 \2 k1 f# h
  4. #include <sys/stat.h>
    " L" B6 U! S( p$ O3 }/ C+ m
  5. #include <sys/ioctl.h>4 M- c* f+ F3 W. ?$ \
  6. #include <stdio.h>
    ; w2 N3 n% c) e% i0 ~  t
  7. #include <string.h>* A4 A- ^) Q' V! B
  8. 7 B' u0 b# S9 f  T, J5 \" g. s
  9. typedef struct {
    0 V, }; F0 ^+ R: U
  10.         unsigned int        e2prom_cmd_sub_addr;/ P( j: u' p1 i: P9 C5 T+ w- F
  11.         unsigned int        sub_addr_count;7 M: ]! X% Y% i1 p9 g
  12.         unsigned char*        e2prom_cmd_data;7 Q, m# H9 ~( r* Y( P  ]
  13.         unsigned int        data_count;
    1 u) J4 K& @# H' c9 X, S
  14. } e2prom_s_cmd;& B; q! V( i) m/ s1 z

  15. 8 c9 F0 [! i' S9 Z' Z
  16. #define E2PROM_CMD_READ 1
    ; b" p" C) [0 s' Q$ @) V
  17. #define E2PROM_CMD_WRITE 2
    , R2 d; J4 A$ l5 H3 V8 v; F+ I
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"' u" x: r' `  G( A

  19. # q# S, @  ~' C4 H3 Q
  20. static int readparam(unsigned char *mac, unsigned char *stbid)) E; m6 w# X! a9 g$ M7 `% x
  21. {
    5 B% ?% |' m5 O- p+ l
  22.         int fd, ret;
    1 C+ A0 n6 R3 Z# V: l8 U4 {0 u
  23.         e2prom_s_cmd arg;2 ~. e  x5 ~$ q. c1 `) ^
  24.         unsigned char buf[0x18];
    ) c# X; s  p& Z0 r! Y6 d
  25. 9 J2 t9 P& j9 M( e
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 I0 K2 Q% I( N$ A3 h. J3 U! I
  27.         if (fd  < 0) {" w3 p( i( u: Q  t) X4 E+ o- T6 t
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& t. t/ q& w' ?0 h8 S2 o8 h
  29.                 return -1;
    ( ^: b6 b# v* C
  30.         }
    # z  `( e: u+ r( O
  31.         arg.sub_addr_count      = 2;
    & {) L& B4 N7 B1 Z% A1 O/ J
  32.         arg.data_count          = 0x18;7 a* \& E7 H: L, [& n# h  }
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ [1 P$ e' v$ O  ?/ a
  34.         arg.e2prom_cmd_data     = buf;4 `$ v8 b" j$ c+ c& a
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ) X9 \7 ~: K4 I) L- [$ H
  36.         if (ret != 0) {) h$ y0 x5 X' W& |  k7 Q9 R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 Q! _! f+ p. T- m: `5 c
  38.                 return -1;
    & }8 K0 X: S) d0 V
  39.         }
    , e$ `1 p1 Q. U" f% r
  40.         memcpy(mac, buf, 6);/ q4 {8 W1 g! F1 w- a0 r$ D2 k
  41.         memcpy(stbid, &buf[6], 18);2 I; Z0 E2 p. q% w% ~6 D: W
  42.         stbid[18] = '\0';
    6 R( E  @6 X) ~" d
  43. 4 @$ K5 j& v1 d+ Q6 X4 d
  44.         return 0;
    1 I; z) J& n- {: C3 P
  45. }8 \& ~+ `- W) i3 b2 ]% t( U

  46. * w  Z  J9 b0 A
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    4 l+ ^% S& p- B7 [' o. o9 i, r
  48. {9 g& c& o& W) E3 x/ ^  [
  49.         int fd, ret;# Z3 r0 U3 N& u3 z$ M6 P4 P
  50.         e2prom_s_cmd arg;
    3 R' O9 D. X  `9 c( b. A& Z
  51.         unsigned char buf[0x18];
    : q  A( P! R( p

  52.   l, a6 [2 ]' C- s' a
  53.         memcpy(buf, mac, 6);5 {  Q0 s7 q$ S1 N7 Q! Z" M
  54.         memcpy(&buf[6], stbid, 18);) t1 u% E& v& A7 [7 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    0 T7 [% x. M5 u8 q
  56.         if (fd  < 0) {# J* \% E, d" |0 Q# V4 |
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  s% g! A8 C9 N
  58.                 return -1;
    / i# V4 V: T% h' S& M
  59.         }
    2 {" N$ a# P- Y6 G* N6 [
  60.         arg.sub_addr_count      = 2;7 s! }8 `, `. R3 y- ^% x4 ?2 l$ i
  61.         arg.data_count          = 0x18;
    4 z/ q+ c8 `$ M8 K; Y$ I! g# u
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 t* @( _- _2 H, a% C5 h" w% X
  63.         arg.e2prom_cmd_data     = buf;
    $ i' F% ?% l" d
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # {, O- J/ B) E  E5 m
  65.         if (ret != 0) {
    . u% R3 p3 H+ y  {$ ]4 L, ]* u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 e4 ?6 [9 R9 V0 a9 }, l# K; I
  67.                 return -1;
    ; M! h' G) r/ _9 }9 W6 m
  68.         }
    * ]# c% T& B  b! u* U9 d

  69. ; o& q% `; \. q* `; H
  70.         return 0;
    3 q0 w" j) f! @2 l7 B' V, B1 Z% ]
  71. }
    / ?4 M0 y* ?5 ^; H
  72. 5 U: y" m, d6 K
  73. int main()/ Q. e% ]0 p4 v3 g; f4 Y
  74. {7 {* K6 Z' Q- U9 m( l8 S
  75.         char c;
    - {( O) Q! L2 S, z2 Q" O2 N4 {2 A
  76.         int i, macs[6];. x5 e- O) m7 W
  77.         unsigned char mac[6];
    , a% i/ R/ O) A( S; W* h
  78.         unsigned char stbid[256];
    9 w' x( e7 i* A- {+ e

  79. 7 P' i1 M: b6 I0 l( o/ m& o+ r
  80.         if (readparam(mac, stbid) < 0)
    & K# B3 f5 G3 [! C  X  }' L+ D
  81.                 return 1;
    ! h; _: Q. y; X8 |+ D% m- t: ]
  82. ( K6 c/ C- U" d4 ?6 @, }7 I, h
  83.         printf("Current parameters: \n");
    " k& W: n* q7 B- n
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 n+ c5 ^' y; P; L8 r
  85.         printf("  STBID: %s\n", stbid);
    6 T; |" h7 E7 v
  86.         4 o* g# u) P# o% y7 D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! B6 b5 G' g! ?9 _) C& q
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ; J: d( [+ S( @6 H: c0 l. B
  89.                 printf("Input MAC error\n");
    2 U2 b+ R, v/ ~1 V  w7 ?- L
  90.                 return 1;
    $ w6 E- @5 N, _" t/ W
  91.         }% x& a2 a% E7 t1 V# `$ U; H& n
  92.         for (i=0; i<6; i++)mac[i] = macs[i];2 U# B) j4 l" V4 ^0 ^0 K4 H
  93.         printf("\nPlease input new STBID: ");
    ( j; _7 p$ D! O: S! H% B8 `
  94.         scanf("%s", stbid);
    , I) W8 C# P3 i3 }. O
  95.         if (strlen(stbid) != 18) {5 M8 Y+ S4 j+ r4 I! ^6 I
  96.                 printf("Invalid stbid\n");+ p  n# y% N2 z; ]2 }
  97.                 return 1;; d* x+ V" \6 }& g
  98.         }; k8 m! M5 j) t, j: t+ i- x* \
  99.         printf("\nNew parameters: \n");' K' e3 q/ D5 q' r" X
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    . ~! E. ^+ W9 R0 v
  101.         printf("  STBID: %s\n", stbid);
    # _2 H" Y3 c9 S8 r8 u7 X- ^

  102. - }  z: z- e- @2 \5 l0 n& |& @1 y/ u! L
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ @3 k# i3 |; _) @& T$ s1 W( z
  104.         for (;;) {2 {# i- A8 ?2 ]4 }3 ~7 r: D
  105.                 c = getchar();
    ; B3 i. R& W! k
  106.                 if (c == 'y' || c == 'Y')
    ) I" D8 j" X) d- d7 [8 {- P
  107.                         break;: [  @: s5 k% q. H9 r5 z2 c9 H
  108.                 if (c == 'n' || c == 'N') {6 N- B/ E2 S0 y- T
  109.                         printf("\nAborted.\n");# ^- a5 E) ?6 R
  110.                         return 1;7 z. `* k- H3 [! W5 B3 }
  111.                 }
    3 _1 p6 n- ?( S; K/ n; x1 G! A6 N9 H
  112.         }5 B; m7 k, T5 [# J8 }
  113.         if (writeparam(mac, stbid) == 0) ; a: L4 @: \1 P- _5 L" E
  114.                 printf("Parameters changed.\n");
    0 O' _; |8 w) a8 \
  115. - r# s: S/ _1 X# g. b( K8 u
  116.         return 0;
    " _5 x! w9 n* H' n  z$ o) g
  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 . s- i7 f$ t0 q( A8 _, `
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

& _' P5 k# z5 {! u  [: [3 \你用的编译命令行格式是什么?
) v$ Z( v0 p) J" x$ b+ f, ^6 T
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-3-21 10:24 , Processed in 0.031564 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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