查看: 16634|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 O6 e" J( m+ M4 u
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig2 M" e# r3 B4 i+ ^
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
! }. ~7 P+ c9 P0 }) R% t4 Tusage: himr <address> <value>. sample: himr 0x80040000 0x04 E  Q; J! S" N* o3 d

  |! K$ S- }9 o$ e+ @: |0 k# b$ p. z, [* d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?6 u$ M3 B5 l  D+ p) ^8 d( A

  y& J2 c/ q' \4 F9 e# T( B" ~9 ]补充内容 (2012-3-8 09:42):
. E2 C# y2 `) w1 b! m. z7 Y  phttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
( x+ m+ V% ~; X$ v% @+ g' r这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- \, _$ d2 U8 M) o  g& o7 k, G- ?+ J3 g. m
himr <address> <value>. sample: himr 0x80040000 0x0
. l, f9 ~/ G+ q" j4 u. G9 f' n* X
5 k! s( I' q% G$ K# Q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。! g0 Z# c8 m4 {1 Q' P
himr 0x80040000 0x00# n: c  P7 E# [# O" t- O
himr 0x80040001 0x11
" m8 Z' S' D- l: f( F7 {" W4 p( T) Khimr 0x80040002 0x22% ?! v6 t  y5 _$ h8 K& z
himr 0x80040003 0x33
0 c0 Z/ i1 j5 t3 H, }. khimr 0x80040004 0x44- }. w2 E8 u3 C
himr 0x80040005 0x55- U( A; d8 L* v" D- B1 ~( f+ ^
% d4 d* f: E4 i7 t' c
SN也是类似。
: Z% [3 ~/ s6 E# P2 ], _& T$ l, h! P  q  _
现在主要是,谁告诉我们MAC和SN的地址?, D3 a3 }) c9 O7 r6 N* U. H. J8 t3 W
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
- S; b" ~: y& j/ O9 H6 n' R一直想找到运程修改MAC和SN的办法,苦于无解啊

" T' P) J$ i; m' w, J源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: r6 V3 H( P4 [, D) O  s( d
: ~& p( P2 Q6 L6 M4 l7 \! ^, j修改的代码早有了。到今天不会编译。
) f6 x$ j; h6 p1 T& [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>; ?5 J4 M; q0 w' D
  2. #include <malloc.h>, \' y0 i5 W2 r1 d7 `0 k
  3. #include <sys/types.h>8 O; o% i7 }, q$ j# K/ K8 y8 q
  4. #include <sys/stat.h>
    $ J1 h$ U/ }9 q
  5. #include <sys/ioctl.h>
    3 h+ ]- P4 V, H5 D% M
  6. #include <stdio.h>
    7 h+ A, M3 u" M( i
  7. #include <string.h>
    / ?  n/ x4 H! h
  8. 4 o) }0 l9 K" ?0 v& S4 m
  9. typedef struct {
    4 O8 ^+ L' J! \5 J( h- m0 H
  10.         unsigned int        e2prom_cmd_sub_addr;
    + v& s5 W4 z9 d8 ?2 G7 |
  11.         unsigned int        sub_addr_count;
    ) \3 f, M5 [! O8 B+ Y' c) {9 y
  12.         unsigned char*        e2prom_cmd_data;) `9 S+ P( K$ [$ U3 _5 t
  13.         unsigned int        data_count;" c" p6 {1 [9 E" J
  14. } e2prom_s_cmd;
    6 B7 ~# R9 ]" r! O7 k. \

  15. 4 d' ]8 f4 r- F# Z  e( q
  16. #define E2PROM_CMD_READ 10 R1 u" h: g8 {% L
  17. #define E2PROM_CMD_WRITE 2% D$ Y+ A) L- D1 H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ; H( q. x' a5 D' I' R
  19. ! l+ m7 j1 g4 p( f& U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)8 B) a) r. |' \4 Z; |5 y' d; g
  21. {7 N) I" X# O6 j4 S' P+ j$ G" U# n7 l. a
  22.         int fd, ret;4 Y( t5 |8 |! m: b7 k1 B  }( M& p
  23.         e2prom_s_cmd arg;
    3 c9 a/ S; L) m6 ?8 x- o1 P
  24.         unsigned char buf[0x18];
    ' K* T' U. v3 Y; N
  25. / X) U1 H8 s! Z" Q
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    , n7 c) Q1 U8 {  q
  27.         if (fd  < 0) {
    & Y: f! E( I4 S/ S7 a0 R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) U7 n' I5 O" [, ^: o# M0 K
  29.                 return -1;
    ' c! W4 N9 B, I! t4 A3 @0 j; ^
  30.         }
    4 x+ X; ?# `0 _) u% B- n, J" Q5 p, @
  31.         arg.sub_addr_count      = 2;: b2 C( K" }3 d; W
  32.         arg.data_count          = 0x18;
    : G" {, i5 ^3 ?
  33.         arg.e2prom_cmd_sub_addr = 0x290;" c8 W* F& S' X* u6 Y  I0 @" G
  34.         arg.e2prom_cmd_data     = buf;
    3 L, y; k0 R2 f% E
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);: N+ a0 w( o' R4 V# G2 d, F1 ]/ b
  36.         if (ret != 0) {% R3 p" n" V( m/ P
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    - ?0 h  }0 X8 ^
  38.                 return -1;
    - W0 ]. o6 {+ }. B
  39.         }1 l( A) S& |. R( ~
  40.         memcpy(mac, buf, 6);$ Z( J) M! _, ]3 \6 z$ N
  41.         memcpy(stbid, &buf[6], 18);5 X2 {, t# o$ u' v: _1 T4 [
  42.         stbid[18] = '\0';
    1 \6 D! w& M! ]* |& @. l2 K% M
  43. * c2 n  o; R3 K, R% C; r
  44.         return 0;
    + P! T! w8 c+ t
  45. }- Q$ C4 I2 g0 M' q- t
  46. 9 E$ Q! u1 r0 G7 Q6 E1 e
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ! I9 S/ Q0 r, N( O& G5 Q! A& a; K
  48. {: W: V! n" N- C& s& R% {+ m
  49.         int fd, ret;& e9 s2 M) H, c5 g- ]( f( @
  50.         e2prom_s_cmd arg;
      q( J/ {( @) J( I, }
  51.         unsigned char buf[0x18];
    6 o9 Z; Y2 O' V& |' ^- `% i2 I- |

  52. / d+ l+ D1 g' t
  53.         memcpy(buf, mac, 6);
      R) Q" T# v- I" i2 o/ u
  54.         memcpy(&buf[6], stbid, 18);( l' q% ?7 w* w9 P$ j) {% E, y
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 I' I: j+ I% F1 d9 t
  56.         if (fd  < 0) {
    9 F6 w# b. W1 ?% \1 O
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ' p9 g; s+ l6 b
  58.                 return -1;
    , O5 e: U$ {8 x/ S
  59.         }# ^2 g" o+ G9 W( U
  60.         arg.sub_addr_count      = 2;# u* M$ d7 Y( |! v& f
  61.         arg.data_count          = 0x18;( M) @8 P% j/ c7 x* a- c
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    5 |9 h0 @# E/ j( H
  63.         arg.e2prom_cmd_data     = buf;7 e, |% d( A3 W, o; a" s+ U6 [, s2 u
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    # E1 p1 ^% b9 U) S" ]
  65.         if (ret != 0) {
    : U& v) k: _6 C5 C" Z# S
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      O! A4 W( R5 J! q- x. K. H8 F
  67.                 return -1;
    0 S# k" N( r  H8 Y# @
  68.         }, g" r" r3 k# _. a$ q8 B6 M! c

  69. + x5 }- }9 L: o
  70.         return 0;
    0 |  \. I& p: o* T" x
  71. }
    1 t* M/ L# u% ~; Y8 n5 m

  72. : m0 I' P" A3 r/ x& Z8 M' S1 ^- v! b
  73. int main()& h! h2 S! A3 r( b. E, _
  74. {
    ; _+ ]% \* e* l1 a  ?: H) q
  75.         char c;" o! r! b( L0 k( s$ Q
  76.         int i, macs[6];
    : ]1 m0 P9 c  i" ^4 l1 h( \
  77.         unsigned char mac[6];
    0 e4 n$ p+ l$ d* U0 \1 D6 V% x& l
  78.         unsigned char stbid[256];" _. b: w' X0 s# a: L; c

  79. % I& y4 k  }- l/ Q* b# X* F
  80.         if (readparam(mac, stbid) < 0)
    2 p2 V6 ]0 k+ ^- v& B! ]" U
  81.                 return 1;
    0 e+ A# @% H; p3 O# x& j

  82. 9 X6 ~# T- G9 F& M8 X* B
  83.         printf("Current parameters: \n");
    % q3 Y3 @0 k2 ?; N2 T' r, ?9 ^5 F3 F
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
      r3 f3 M7 H/ x  `+ T9 H
  85.         printf("  STBID: %s\n", stbid);" P& ?' c. M2 }4 Y5 S
  86.        
    & D0 n4 z% x& k/ F( y+ z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");$ V' x: @% p9 l. [) x
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * g5 ?, e/ \& ^6 I
  89.                 printf("Input MAC error\n");
    ( E3 Z6 T2 v9 g7 k$ L" o/ J: @: }# n
  90.                 return 1;
    / i! A9 L% j! `/ I1 i, b. A8 ^
  91.         }
    2 T  R6 ], r0 @. Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 s4 L5 Y( N' F* J6 }7 `. j
  93.         printf("\nPlease input new STBID: ");
    7 }4 l! F2 W7 Y
  94.         scanf("%s", stbid);6 s7 V5 `$ z/ y' a
  95.         if (strlen(stbid) != 18) {
    2 K/ i, g1 l/ D; f
  96.                 printf("Invalid stbid\n");5 m3 y6 _# Q" q
  97.                 return 1;
    + ^2 d/ @8 |* A' m2 S
  98.         }1 m/ B" r; n0 p9 S& @
  99.         printf("\nNew parameters: \n");
    + r! L+ L" J  l# C/ Y  a( Q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    % {1 n' v- u2 P6 ^1 T$ a( S* N$ a
  101.         printf("  STBID: %s\n", stbid);: v6 U6 N2 V+ r7 b/ c( \4 G
  102. 7 L& s' o* m; I- M9 ~8 q& d
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 q1 D, Z& u8 G8 Y# O2 A
  104.         for (;;) {
    ; n: _' E# p! ~( b( M8 j
  105.                 c = getchar();
      W+ {! n1 j! x
  106.                 if (c == 'y' || c == 'Y')9 t7 \' o4 d6 G9 r. X0 b* z- j5 ?
  107.                         break;
    7 A$ s: x1 r+ L6 R/ @( C5 P
  108.                 if (c == 'n' || c == 'N') {
    - P) X: I* z" l7 U4 W
  109.                         printf("\nAborted.\n");2 B6 @/ U( X+ g6 E6 O5 ~# r
  110.                         return 1;( d" ~4 n: b$ K$ w; W" d
  111.                 }
    " l: n& m; |; L% F8 g: F, h
  112.         }
    / H  i- m' T% I( J& d4 e0 f9 {& a
  113.         if (writeparam(mac, stbid) == 0) . k* i/ u1 S* R$ I  J6 @3 A! k
  114.                 printf("Parameters changed.\n");
    " ~2 m- ]; h; G; a% P
  115. & ^! o5 @5 c: g) o0 @- V
  116.         return 0;/ z8 e* z; K- G  b- S+ A
  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 % |) @$ W5 o7 g
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ T2 z; v1 h' a5 X" X你用的编译命令行格式是什么?7 f2 D* F' O# T  y& x* j5 o. @9 Q3 {
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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