查看: 16382|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr7 w' v1 G% V- s/ L7 v
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig3 e- B! B: N- ^6 f8 x$ }/ }
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ a0 J- v0 F( E( A; ]& A5 D0 Dusage: himr <address> <value>. sample: himr 0x80040000 0x0
6 u  ?# P6 W4 W+ V5 C$ ]: o
6 X8 C; p  k  g3 B$ ?; f" S/ K( {6 }6 H$ u; w) Z' Z
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?% ], `% }) p& r) h3 o
+ e$ y( Y; k! ~
补充内容 (2012-3-8 09:42):/ M, g; _" ?" G: V
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
# Q$ H( b" f7 P$ o4 E' }5 a这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。; w( r/ W- a$ D9 \0 ^0 }1 t& n( @

: R; Q2 w- E) X; J' uhimr <address> <value>. sample: himr 0x80040000 0x0# `; `# g, h0 m8 R7 V
' {& q4 L7 _6 `2 \" C; t" J9 E, m* j
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。" R* M+ D0 k( V$ i" L1 t
himr 0x80040000 0x008 T! O+ F8 a) I) Z& `5 Z, X3 H/ L
himr 0x80040001 0x11
& s3 a7 J  |! |; l$ v3 }" S, _- Uhimr 0x80040002 0x220 ~# e; S- L* I4 W( w$ y
himr 0x80040003 0x33$ ^, ~3 J! i0 _; O' u# ^
himr 0x80040004 0x44
. G  k# @1 v& n: |9 M5 H  ]' t) ^4 ^himr 0x80040005 0x55# ?, I' L9 L3 ^# d  E. }# G

1 A3 Q4 _! o+ G+ u& g" g+ y; QSN也是类似。
( @# f! Q. U/ N! V1 w1 H1 F$ z
4 g5 m/ m3 K0 I- W8 O现在主要是,谁告诉我们MAC和SN的地址?8 n' w, }9 @) y0 x: l4 u7 t" a
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 {9 g: ?7 b- a- ^/ r5 O- {" `
一直想找到运程修改MAC和SN的办法,苦于无解啊

; i9 X( H  u/ V源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
; H) F! b, ~8 ~7 d3 Y/ r- s. b4 V( J) k) q  }6 ~7 D2 p; a2 `
修改的代码早有了。到今天不会编译。
! i5 d' G9 J6 j+ P- V1 r需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>  v4 ^7 @' K. m" ?* R8 h' a1 _
  2. #include <malloc.h>
    ; s4 b' y3 l2 a2 S- V/ @$ |
  3. #include <sys/types.h>+ ~5 ^4 y3 G  [( U- Z" u
  4. #include <sys/stat.h>
    9 B. b4 [9 l: Y1 n9 F
  5. #include <sys/ioctl.h>
    5 o0 I& c+ F# n$ y$ J
  6. #include <stdio.h>
    ; u  y1 M9 ?4 H" c& E) `9 C7 v
  7. #include <string.h>6 o5 {% f. C1 Z

  8. 6 J0 }6 K0 Q" h) U& n4 G. M
  9. typedef struct {
    2 ^" x0 d2 K$ i
  10.         unsigned int        e2prom_cmd_sub_addr;9 {4 c9 ~1 G3 G  p% {5 d
  11.         unsigned int        sub_addr_count;
    + W1 r! r' ?# a, l( Z" s; @1 Q: W
  12.         unsigned char*        e2prom_cmd_data;' o, B7 L! y* X% i' U  U
  13.         unsigned int        data_count;
    5 e. Z3 _0 D1 z2 m' _
  14. } e2prom_s_cmd;+ B' F  n7 T; x

  15. % @) {5 y- O7 o5 r  e1 w' l* J
  16. #define E2PROM_CMD_READ 1$ f3 s  ~$ I2 Y1 @; L( T
  17. #define E2PROM_CMD_WRITE 2) C% j0 I6 ~5 R1 _5 F
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    2 ~4 q+ G2 @: w0 G
  19. 1 h% W- D. F) P% }* {5 D% P4 Z9 E4 \
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ i  A6 D3 K% G# [; L
  21. {
    7 j  M2 X0 \7 {4 g0 @1 j4 P; ^
  22.         int fd, ret;# ]4 ~* W" ~8 O7 V% m4 Z! Y7 R$ Y
  23.         e2prom_s_cmd arg;. T9 H( |( F! A# j6 F+ i, l
  24.         unsigned char buf[0x18];
    : ~7 K9 V5 o8 `3 y1 r0 e5 s
  25. 1 a8 W$ U/ @0 ~  j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& B6 k: E6 P! \2 C" y, o" C3 B
  27.         if (fd  < 0) {
    ! [% }, |( C1 e% a& S  A0 r' @0 ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    2 Y/ N3 E; O% k5 U0 |& [
  29.                 return -1;
    3 z& o/ q' |9 c8 ?/ M; {
  30.         }* s* i7 R4 n# k  Q9 H  A
  31.         arg.sub_addr_count      = 2;
    2 t( ~$ I) u5 z. _8 T- B9 Z
  32.         arg.data_count          = 0x18;
    $ {) q1 k' O7 A  g7 r+ b2 }& h  h
  33.         arg.e2prom_cmd_sub_addr = 0x290;( s/ J2 d8 _- z
  34.         arg.e2prom_cmd_data     = buf;  b3 H$ m% n/ c+ i+ ^
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - `5 M9 j' P& Y) Z: K
  36.         if (ret != 0) {
      \9 ~( @$ T5 |8 z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);" h+ C" M, Q' D4 a4 v1 ?" w( l! Z3 n  Y- e
  38.                 return -1;
    $ s: i& @8 X7 R6 I) B& z6 c* [$ z
  39.         }- z, \, u8 _: B9 x( {" L" Z3 g
  40.         memcpy(mac, buf, 6);/ K( [3 `% a( M- n. {% x7 v2 l
  41.         memcpy(stbid, &buf[6], 18);
    6 o; i5 F! O# T
  42.         stbid[18] = '\0';+ u, i7 @3 F) |

  43. ) [4 `. r8 V6 p; D" v. ~# k
  44.         return 0;- z1 P2 Z& ~/ O& A0 a' z+ _" V9 }# Z
  45. }
    " T: j, h& `( q' c# f) M
  46. 1 r# T% @3 a, |) R. Z  z( G9 G
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - r  X7 P9 s; y5 G1 y3 c4 B  [
  48. {
    & U( G9 ]1 C4 u9 O% j) N
  49.         int fd, ret;/ p# }, b; p, {( K% W5 V
  50.         e2prom_s_cmd arg;0 L# e  H& W' u* X0 O
  51.         unsigned char buf[0x18];
    3 D9 d& }; c# o1 F, r
  52. 1 B+ ]1 B3 s9 k' p" j+ {
  53.         memcpy(buf, mac, 6);0 @- A+ {$ _7 e  |$ p* @5 C
  54.         memcpy(&buf[6], stbid, 18);
    & \- p1 [4 b3 q4 d% D3 Y0 G. ?& ^
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : m- c* X8 f* b
  56.         if (fd  < 0) {6 e! p0 {5 I2 W7 H& X/ G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ; E: A! x' ]9 ]+ |, V5 h% b- |
  58.                 return -1;8 w4 z% j: }/ d2 |( J
  59.         }
    * O, j2 h8 E7 R8 l
  60.         arg.sub_addr_count      = 2;& B# B# l# a6 e7 K( ~
  61.         arg.data_count          = 0x18;2 h* }$ L5 L9 H: a0 v! V+ c$ e
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + C: S# T3 I9 q7 L
  63.         arg.e2prom_cmd_data     = buf;
    5 {" O2 ]" ^  T) l3 \1 a
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    5 t# z; R4 J3 D3 R; ~
  65.         if (ret != 0) {6 B$ g1 E$ A0 g! T) [( L
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; [# |$ U: b. @% n* d6 B
  67.                 return -1;1 w! ]8 i8 J& S$ ?3 ], E
  68.         }
    ! _" f& y8 g; J8 P% R. C: b

  69. 6 C+ U4 r3 ]- o
  70.         return 0;
    ' z* C. z* {0 V. H+ N
  71. }
    2 ?. x' a7 j$ Y" F0 L, Q  p3 ]5 L7 U3 |

  72. , I; s- L; k1 l8 V
  73. int main()
    1 N- k9 N1 Q3 O+ x1 {! g
  74. {! T- ?1 w. ~2 k! I& [
  75.         char c;1 k( `, B$ }' {
  76.         int i, macs[6];3 E1 c1 S7 A- @3 X! A- X
  77.         unsigned char mac[6];
    / l  j- O, A9 W* d4 g
  78.         unsigned char stbid[256];6 r4 R# T+ i/ s% Y, c6 O- P8 {

  79. 2 e& [* f4 v' ?4 E* C( q
  80.         if (readparam(mac, stbid) < 0)
    & V7 W. C4 A& U) J( e$ {, T
  81.                 return 1;
    / U" J" \! }2 L% p

  82. " |/ \6 L5 n/ \' H
  83.         printf("Current parameters: \n");; J1 n# Y* k" J3 S4 I1 W
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. u% g- R6 Y9 W1 V8 L4 a  G( p4 s
  85.         printf("  STBID: %s\n", stbid);# x  r$ ]# U6 D* z$ w* }2 L8 ?5 k
  86.        
    . z0 G9 V+ Q& l' F) l8 f; Q/ ^
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    7 p6 O0 f: j& o5 }
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 P! ?3 K# T& `  `$ s. G( l4 H
  89.                 printf("Input MAC error\n");
    & L$ z3 m* P- H3 R, @  p/ p
  90.                 return 1;
    % x" X# Q* V# i" O" J
  91.         }  @4 H: C) J9 I4 D% z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];' j0 k8 Z* r; ^) Z" K: Y
  93.         printf("\nPlease input new STBID: ");
    6 b, h& I, P  G# W+ C/ J1 ?
  94.         scanf("%s", stbid);$ @& V/ W, Z( M' {( |3 k0 d
  95.         if (strlen(stbid) != 18) {
    4 q' V/ F  n( m4 L3 \! i
  96.                 printf("Invalid stbid\n");
    8 o9 F9 j0 i/ y' M* `
  97.                 return 1;
    0 g1 N& l) K- W
  98.         }
    6 l; b% S% K& u
  99.         printf("\nNew parameters: \n");3 s. z$ ^/ @4 q: ]7 s/ y) a
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # C, q6 ~1 S$ c, j+ d
  101.         printf("  STBID: %s\n", stbid);2 S. E7 t$ W1 {! h, B0 B

  102. & e$ J" ?- V2 \! J* _3 J
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    " F; {( Z* P9 u( E9 ^
  104.         for (;;) {
    , @) Z# c% f) }
  105.                 c = getchar();
    " q" {8 K3 E: g$ u8 ]7 V9 D0 I
  106.                 if (c == 'y' || c == 'Y')
    5 e" c) r5 r1 w/ U3 h- b
  107.                         break;& G' \( E' P9 g) C* O/ x
  108.                 if (c == 'n' || c == 'N') {
    ! ]+ c, s. C- W2 F% x3 z
  109.                         printf("\nAborted.\n");" _* p* W0 M" r; f* h
  110.                         return 1;2 D. }3 w& r# g0 \* K
  111.                 }& x  ?" F$ T2 z. J7 R, X
  112.         }) B: V: W# j1 z, b
  113.         if (writeparam(mac, stbid) == 0)
    5 `; k/ o4 U7 R* p9 k: ~
  114.                 printf("Parameters changed.\n");
    5 f- F! h* L7 m' l: r
  115. & }5 E, a  P2 T! }$ N
  116.         return 0;
    ' A4 W6 d! w. u
  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 ' S7 ?' S4 c) l) E6 C! f' S; _/ r
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

% z; l1 V' w% s) e# F- Q9 d) K  N你用的编译命令行格式是什么?' ~" k: n! Q* c7 @- [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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