找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15274|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 O1 L4 Y5 B+ V* O% t5 ], l( k" P
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 j7 m% d4 I( \/ q7 k; x
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
0 b6 D- r3 X5 v2 Eusage: himr <address> <value>. sample: himr 0x80040000 0x0" Z2 w1 G5 I+ U  f3 d" J

9 L" V. k6 \# V+ a! I+ _0 t' n4 h+ J4 \7 O: L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
7 b: g, A8 R! [' ~! H
$ ]8 Q# J2 B$ H! Y# x5 j& F5 \补充内容 (2012-3-8 09:42):
! b- t0 ?0 r  V; Ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 z) I9 U  ^8 s6 m2 z这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。6 z/ R3 O) g* V$ O
3 D) ~$ D1 H% }
himr <address> <value>. sample: himr 0x80040000 0x0
2 U$ v% a/ I$ Q4 s+ w4 Y" R: i1 }
+ M0 h, i* c( i* L7 o例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。/ b8 i4 G+ Z. I& ?% r
himr 0x80040000 0x00
8 J1 N0 ?/ `2 d  ]4 |himr 0x80040001 0x11% y# Y! w; o0 ?' b( @9 v
himr 0x80040002 0x22& R! Q  r  j: v8 c2 ~1 s9 O0 Y: m
himr 0x80040003 0x33
; ?' W" P7 i! ihimr 0x80040004 0x44
/ F0 d! l& a# q7 ~himr 0x80040005 0x55
8 e" G7 u: T6 R) Z
( ]7 J6 a" W4 s# [0 j, BSN也是类似。
( I# @) Z2 h/ Y7 y8 g0 R2 F' a% @$ `; p3 v: s
现在主要是,谁告诉我们MAC和SN的地址?
2 a. c  g% J$ S. m) C' e
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 5 L1 [  L$ b( N4 t$ [
一直想找到运程修改MAC和SN的办法,苦于无解啊

& C* J( _5 o0 ^3 a源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
& c2 {  ~* K! m/ |1 U
* s- u6 k0 {! b. E2 z! u修改的代码早有了。到今天不会编译。
4 w- J" h% y' M0 I0 |1 T1 L' L需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    , y7 M! ~) J; I" j
  2. #include <malloc.h>
    7 q; g  W( e. l8 c. x
  3. #include <sys/types.h>
    & M0 D) j. ~( J$ G" ]. K( @( ?* o
  4. #include <sys/stat.h>
    : R' M% q, J3 h6 C7 A8 X' A. U% W
  5. #include <sys/ioctl.h>$ r5 H4 j- |' U8 Q
  6. #include <stdio.h>6 J" i3 h0 @4 y" S) M" J
  7. #include <string.h>
    ( n% |3 ^, W# F( p% m$ a  @/ G

  8.   d* @+ I' p! e" Y* M
  9. typedef struct {
    6 Y4 D; d, Z- f" A, q2 s- T( |/ ~
  10.         unsigned int        e2prom_cmd_sub_addr;
    * z) h# x2 T1 [
  11.         unsigned int        sub_addr_count;! J2 p8 Z* W; k% t8 l6 C4 I5 Z; L
  12.         unsigned char*        e2prom_cmd_data;" d* w' w2 G0 Y. e, C( v9 S. v0 }& @# Z
  13.         unsigned int        data_count;2 B4 L+ W, Z: H
  14. } e2prom_s_cmd;
    % f3 ~" S0 Z6 x7 B
  15. / }8 |0 h; y6 O
  16. #define E2PROM_CMD_READ 1
    $ l; R0 K4 a/ q& b* H
  17. #define E2PROM_CMD_WRITE 2
    3 y/ C6 z- ?  X6 m5 D8 u! E; ^/ t( D$ ~
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : I6 s% C9 u! R6 e- U# }

  19. 9 q" }2 y" `  ]: a5 J8 ~3 ^, |6 F9 I
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    / m7 v# g$ t) U, S; ~  v7 T
  21. {
    - t" S4 x3 J# Z0 \/ e
  22.         int fd, ret;  L0 H* D8 k5 v- S& d  ~7 a; H
  23.         e2prom_s_cmd arg;
    + F, o6 @( R+ p) @5 D4 l' c1 h3 w
  24.         unsigned char buf[0x18];
    $ K- M$ C; Q8 U  z3 |  K
  25.   G9 ~+ H0 u2 E: G7 x
  26.         fd = open(E2PROM_DEVICE, O_RDWR);4 X: W8 _  {- A5 N, T% B% q6 p
  27.         if (fd  < 0) {
    7 V6 b# g- R3 |' J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 u8 _" B; n7 Q# \2 N0 c. [& b
  29.                 return -1;
    5 ^5 s# X$ d5 c& Z/ z
  30.         }
    " L" m7 ?1 M& z
  31.         arg.sub_addr_count      = 2;
    8 T! f% w, ~7 n+ v7 B1 ?# m8 W
  32.         arg.data_count          = 0x18;
    3 ~0 p3 ?  o" h7 p& O
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 B' L. [0 h0 U1 Z1 ~( f" C
  34.         arg.e2prom_cmd_data     = buf;
    / a, S/ v; ^  u5 H
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( H9 @. O$ d) e  D
  36.         if (ret != 0) {
    , c3 [/ e8 W7 S+ ~/ a
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    : V# a9 b; Z0 j) w& u8 J
  38.                 return -1;, l+ e6 E. K! R: u0 W: T
  39.         }" F7 V- ]7 m* `* ~
  40.         memcpy(mac, buf, 6);* j4 N1 ]: ^# u) ~/ S
  41.         memcpy(stbid, &buf[6], 18);
    ( F: w1 E5 I) i
  42.         stbid[18] = '\0';1 G2 w1 @0 B! a# j. x2 d6 g3 u

  43. , `& t" ]% @- b, h. r# a/ d' t
  44.         return 0;8 [2 P1 O/ V% M: }4 O! m  l! H
  45. }
    # E5 t- O3 @( S; ]* Q0 I: b0 m* e
  46. 6 o9 Y7 J: Y- i# ~% w" D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)# v5 p) K1 c; b+ |
  48. {
    * z. F5 J# d9 |8 E0 K
  49.         int fd, ret;. c+ G+ @! U6 `) I) N+ U) B7 _3 w
  50.         e2prom_s_cmd arg;( u( k5 X+ x5 p8 j; a4 \" }
  51.         unsigned char buf[0x18];7 }" P. O% K: H
  52. 2 }" B7 C5 q, }/ s
  53.         memcpy(buf, mac, 6);" i6 S6 {: K' k  {) Y. L0 d1 z
  54.         memcpy(&buf[6], stbid, 18);
    - g& v4 p8 X) X# F' Q! K
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # i0 [" t5 G  e, \. G
  56.         if (fd  < 0) {
    9 l* M2 \6 U1 D& T! b
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 x5 j0 u& e5 ]
  58.                 return -1;4 Y( K7 [3 f8 S8 v' [) N4 ^
  59.         }. ^) y% m3 @8 U
  60.         arg.sub_addr_count      = 2;
    & N" ?1 m/ U0 @' p! A9 T( L2 b% [4 k
  61.         arg.data_count          = 0x18;
      r2 Q- t8 s- R5 ?/ Z# h; p
  62.         arg.e2prom_cmd_sub_addr = 0x290;: V2 y% ]5 d3 L3 k
  63.         arg.e2prom_cmd_data     = buf;6 g+ Y6 [& }/ F3 X. t8 f
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    " |: K/ U' y% ^! m) }. u5 }
  65.         if (ret != 0) {5 `" F" R; P: s+ |- q* n8 S5 a
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : C$ m, ], }  N3 o
  67.                 return -1;" }/ r$ Q- N4 e6 ]7 C3 A
  68.         }$ y; p# f% i! K$ ?; s, r% k
  69. 6 e6 z) {; s3 q6 g' i
  70.         return 0;
    ' z( T: j9 C1 B/ j! Y6 A8 }( S
  71. }
    ' w, |* ^+ _2 r* k# e' _1 w: _& |* L
  72. 2 r# V0 Q' N& V
  73. int main()
      n7 R& S4 N; v
  74. {, a! F2 k; }3 F# J* V& D
  75.         char c;
    / E) F5 v5 R% \( [3 `
  76.         int i, macs[6];1 Q  Y7 j! j4 Q$ Y: ^6 s
  77.         unsigned char mac[6];
    4 n  a$ c4 }% @, i5 f5 k
  78.         unsigned char stbid[256];# }8 O4 j! f0 q; R
  79. / f, y* W2 G% B* D8 F
  80.         if (readparam(mac, stbid) < 0)
    ) b) E( d% w; e( I/ Y* Y% v
  81.                 return 1;
    , s" T  A5 I$ \! z/ t& v
  82. ; y% F" H! n, Y% }
  83.         printf("Current parameters: \n");5 w% A# U) j2 z) V$ o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; E* M3 }# G6 s2 D
  85.         printf("  STBID: %s\n", stbid);& n) L( L5 U$ K) a
  86.         4 A  x: {; F' H; y# y* h" x
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 k  M* e+ `& G, H) g  s# Y
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {+ Y! O$ N/ x# T6 u9 m
  89.                 printf("Input MAC error\n");
      f: B; g% t: A, e
  90.                 return 1;! m( d9 t$ y( D: u  Y
  91.         }* ^: ]& T2 O( o, y- a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];8 u; ]! g  W8 B( h1 h) O7 v
  93.         printf("\nPlease input new STBID: ");& U7 c! [  M* `9 f- U5 f
  94.         scanf("%s", stbid);
    + e# a. ^7 x$ v3 w+ u
  95.         if (strlen(stbid) != 18) {" A; t& M( c5 o2 r, B
  96.                 printf("Invalid stbid\n");
    ( l% x4 [- e7 w9 |6 T3 _
  97.                 return 1;% S. w5 S7 u0 R% Z- h- t  H
  98.         }
    ( N; n7 q- d6 w5 X
  99.         printf("\nNew parameters: \n");9 p. B7 W9 l$ |4 T" Y# U, Y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);6 ]2 L* b( G9 L# r1 [& u; y0 _) N
  101.         printf("  STBID: %s\n", stbid);
    + \8 ^7 ], {! }  w" M

  102. 7 e: Q/ a% l8 u$ y
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    - o6 _7 ?8 B$ S, N
  104.         for (;;) {: L* C- N3 q* L: N+ Z
  105.                 c = getchar();
    * A  g4 ]+ i3 b
  106.                 if (c == 'y' || c == 'Y')0 Q6 T3 i! h: \( i4 l
  107.                         break;
    7 y8 i* B, }1 ^4 `# T9 i9 a
  108.                 if (c == 'n' || c == 'N') {1 ?+ B0 L9 x; S: @, N8 U
  109.                         printf("\nAborted.\n");
    4 _2 y8 ~9 P: p" [- R" t9 S% M1 {
  110.                         return 1;0 |4 i6 |- n- ]& t* p6 S/ T
  111.                 }
    5 D- p6 G# k* K6 g1 d4 A
  112.         }; r7 d8 A& b  h( \3 g5 b) I
  113.         if (writeparam(mac, stbid) == 0)
    5 p# {8 ]3 F' H$ ]! P$ i
  114.                 printf("Parameters changed.\n");7 a7 {& @- p; b6 u6 h0 G

  115. " c! Y, p" X3 K" m# G
  116.         return 0;
    - _. e) l% o* D. Q+ H5 |
  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 8 F$ |' M3 u/ N% `: |3 |, G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 o& q# Q' L6 s5 P8 A4 K
你用的编译命令行格式是什么?
7 `5 [; n1 K0 J0 Z( l1 c
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

GMT+8, 2026-1-15 04:42 , Processed in 0.024444 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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