查看: 16332|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    0 e! M8 _0 ^. v$ a9 [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig5 J7 l4 I0 \& g2 l, D! A
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:/ L* x) `/ g( [% S; S. w
usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 Y" t& p% O, y0 y/ k. g" y8 R, }) m4 W1 E& e' F* E. O

/ U1 v  G  C' W9 F6 f3 H) Z5 A不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- g( B+ e9 I6 G  L' d7 W5 n8 q+ ^
. e# C. s2 v  ?
补充内容 (2012-3-8 09:42):
) D( V- F* e; {& |0 a( k4 ^+ ]http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数2 J) E9 Q4 ?- R9 m- [" _
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
! G/ A4 C% ^" p5 P& t: ^2 e) m6 J
himr <address> <value>. sample: himr 0x80040000 0x0
+ M$ G" R/ q! b0 ]3 k# d) J# t( o$ T$ y/ v7 T2 G* G* V
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
& g2 O: W$ V* B5 O' k2 _/ C' g8 bhimr 0x80040000 0x005 R- I8 f2 H% ?% A( I5 K& M
himr 0x80040001 0x118 w9 r* E3 N$ h
himr 0x80040002 0x22
; E  u5 f! }" U8 Bhimr 0x80040003 0x33
: E& r) i  @& B, D$ W& x' X. O2 s- chimr 0x80040004 0x44
7 l' B# ?6 T$ f3 |himr 0x80040005 0x553 V; k; k  R- _- Y7 q
3 [! @+ }5 e. `9 B4 m+ i, s
SN也是类似。
4 N4 q' C6 y$ [8 K8 Z
8 t( i( Q! i+ |现在主要是,谁告诉我们MAC和SN的地址?
( R- z6 S7 @8 R  y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37   Y: f% `0 \5 Z7 @* f& `. F# M
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 d7 l. O' Z  Y% C$ A& x# z
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
: s. v7 q( L+ @' z9 a% U! N$ d% K6 y5 W* o0 w& w
修改的代码早有了。到今天不会编译。4 T* y" w8 Y3 V$ ^* f+ s
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>: r7 ~! Z8 \. r4 W; P+ f; D: ~( L
  2. #include <malloc.h>
    7 E5 p4 u* l  Y! i7 y
  3. #include <sys/types.h>& @9 v9 K( l5 X- h6 W0 @' o$ [4 J
  4. #include <sys/stat.h>
    * g8 e! F+ @2 t5 C8 g. {) [
  5. #include <sys/ioctl.h>, F+ F& u+ Z/ D  z+ N1 o! Y
  6. #include <stdio.h>3 V( A% W" u8 k5 C% n/ A
  7. #include <string.h>% w0 L; z# `5 ?
  8. * Z5 P* g  A: n. L! }
  9. typedef struct {  N6 W/ t7 A8 r2 [# |5 r# V/ V1 o
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( ?0 U+ J9 u8 @  U3 {
  11.         unsigned int        sub_addr_count;  }7 K9 u( b2 a; U7 b
  12.         unsigned char*        e2prom_cmd_data;/ @+ Z- ~. {0 H4 p1 B( \
  13.         unsigned int        data_count;$ Y( P. H' K8 @% G
  14. } e2prom_s_cmd;7 ^! u6 c) n* F8 D! T6 @2 D* R& f
  15. ' c$ Y2 b3 v- ^
  16. #define E2PROM_CMD_READ 1
    - L2 Z1 J& ^; y% n: e, N/ w# _
  17. #define E2PROM_CMD_WRITE 2
    4 q9 \1 _( s( n) W
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"& C! ]' g4 ]% l! s% S, m5 o! J" c
  19. # L8 O$ Z6 T% x( A1 i0 m9 ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : \0 W3 |0 S" \. d, _% {
  21. {
    ' L# w; K- \& s' X! M0 \( H2 @/ E
  22.         int fd, ret;( d" ]0 t1 [0 d! d& I
  23.         e2prom_s_cmd arg;
    1 w5 y. N, v* f; w
  24.         unsigned char buf[0x18];: `& p0 M+ F" ?# C3 e6 ?
  25. # t+ M' n/ P9 M8 s4 W: G$ c
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 H/ s' A) R4 b; D8 F
  27.         if (fd  < 0) {- U* I( q' x  }" l, M5 R; K
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);3 B7 I: e1 g  N6 h2 r" Z
  29.                 return -1;
    0 M7 {4 ]3 c2 H& S6 Q
  30.         }
    % O0 T2 N. d9 G' r
  31.         arg.sub_addr_count      = 2;0 G9 `  s- s/ @" F$ j1 O
  32.         arg.data_count          = 0x18;6 T9 i- a' b0 u  J; b% C% E! {! J- q
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ) a! x9 ^/ q9 P2 j) S7 ~
  34.         arg.e2prom_cmd_data     = buf;$ i9 K9 Y6 t& y# X* p% Z
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);  \0 W/ R' I7 k) G" V* W. @
  36.         if (ret != 0) {- V7 P% \, O7 g! E( m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);7 x5 A1 f0 J1 }; Q7 D
  38.                 return -1;; b6 o0 c& }: k% q/ r
  39.         }
    $ [" ~# |( |- K( o
  40.         memcpy(mac, buf, 6);  f. t3 D: L  X7 G7 T+ K3 g
  41.         memcpy(stbid, &buf[6], 18);
    / n4 ]0 G2 n# H" I
  42.         stbid[18] = '\0';6 F+ o+ u( V9 m) M* o9 d

  43. 5 _$ u$ [) |' b6 a$ K/ N
  44.         return 0;
    9 I: C/ Y( A1 o4 K4 j
  45. }
    8 h6 s6 I) T! S4 y9 p3 A; g
  46. 4 ^, {  M1 ~9 ]& m- A/ K, K7 d8 D
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    # i3 m- W; s  R
  48. {
    $ U& S  c. u5 l
  49.         int fd, ret;
    / J" }, L9 P% ^8 g& L3 e/ E
  50.         e2prom_s_cmd arg;
    / b; U; }5 \4 Z  w8 o  {
  51.         unsigned char buf[0x18];
    3 I, g# B. {1 U+ u
  52. " d) q3 w) c: K9 T2 Q. E
  53.         memcpy(buf, mac, 6);
    $ d6 u# g/ ^  m' S6 y6 ]9 `, {
  54.         memcpy(&buf[6], stbid, 18);% O3 Z1 R" R5 k4 {1 z
  55.         fd = open(E2PROM_DEVICE, O_RDWR);" W- G7 s4 h/ \3 @7 Z
  56.         if (fd  < 0) {
    : v# }, c3 L$ w( ]. z
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);* E8 r8 s& G! ^# P1 y
  58.                 return -1;
    . v$ V) u, n. m/ q/ J) T
  59.         }
    ( d) E0 @" }7 q2 Q2 U
  60.         arg.sub_addr_count      = 2;- e6 S/ T6 f1 I0 m0 w! T4 O
  61.         arg.data_count          = 0x18;3 E5 R- w, N9 A$ x3 S& e
  62.         arg.e2prom_cmd_sub_addr = 0x290;* }$ ]. ]! O& Y% E
  63.         arg.e2prom_cmd_data     = buf;* u: r/ G7 m0 ^, N  r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ( Z+ J* F9 J# P  E; P( r1 R
  65.         if (ret != 0) {4 Y% v& Q7 v8 ?8 ~0 ?
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 P! X& P& n' _- N
  67.                 return -1;$ F+ Y* U" c7 w' r3 B
  68.         }
    3 c/ \( M  `% t/ o: [2 h- ~
  69. % Z( z, g: Y5 P4 r! d3 w
  70.         return 0;
    ; ?, X5 Y! b. z3 e6 Z" l& u4 N
  71. }
    & s& n! X+ r/ ]% z$ \' w3 C

  72. ! R0 h8 i) I! }6 n0 v
  73. int main()' S6 j( x; X0 g- J! h
  74. {
    % I/ ~; s5 y& H! C2 a
  75.         char c;
    / }  k: R& }' w
  76.         int i, macs[6];/ S( {! I  V/ U8 S3 x( [  b- x( E
  77.         unsigned char mac[6];' D- I+ Q7 |. l3 q( B/ p9 k
  78.         unsigned char stbid[256];
    / a6 L2 d/ S! w% _* d
  79. $ b$ Z4 q( ^1 n8 Q+ m
  80.         if (readparam(mac, stbid) < 0)# Z% o. b* Y5 A3 ^9 g6 q0 k
  81.                 return 1;
    : m* l- {5 M" t% s% u

  82. ' U& `/ v8 x+ |8 a' ]4 s& J
  83.         printf("Current parameters: \n");
    , d: a; ^8 r* Y! ~3 `8 C  X1 s. U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    5 ~1 ]2 T  Q. ?! t; T" F
  85.         printf("  STBID: %s\n", stbid);
    - h, }. T/ U! p2 z
  86.        
    4 n$ ~4 P- I, E2 _0 @/ H* A
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");( e5 T( v+ L5 P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 U* A! x0 F- \# U" t
  89.                 printf("Input MAC error\n");2 Q/ X2 i2 S( k/ J% T0 U  `
  90.                 return 1;
    0 Z. E+ [6 x! p3 v. J& |
  91.         }1 m. W! x. q% M8 F( i, F; G3 a
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ' a8 D  u" |8 p# v; b7 W
  93.         printf("\nPlease input new STBID: ");  F- y) {$ {- p$ r! `5 f: {
  94.         scanf("%s", stbid);
    7 H& k8 \- B3 |: e2 X( g" M+ ~
  95.         if (strlen(stbid) != 18) {
    + ]) B4 E' k; v# X* M6 b6 P! v( t4 I
  96.                 printf("Invalid stbid\n");/ B- k2 {6 Z9 T/ M
  97.                 return 1;( }9 f; g$ g5 Q- d  g
  98.         }
    2 n2 N# _% [9 _* h8 B' Q0 e
  99.         printf("\nNew parameters: \n");
    . R: L* v1 t. ~) X! J
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    # C# X" h! \, s* F; j
  101.         printf("  STBID: %s\n", stbid);
    & t1 m7 x' \/ b; i8 ~; z7 ]% N( C

  102. 7 J) `6 r) H: c0 o6 c: ^, D
  103.         printf("\nDo you want to change paramemters? (y/N) ");8 k, x% r0 B& F! N7 ?
  104.         for (;;) {
    6 i7 g4 l# k8 e. p2 A2 B0 u: V
  105.                 c = getchar();. |7 k( V) s; k) a& ?
  106.                 if (c == 'y' || c == 'Y'). x$ M" \+ u# L9 Q4 ?
  107.                         break;
      w) q+ W/ U1 W: H+ A6 b
  108.                 if (c == 'n' || c == 'N') {
    ! R% z+ }; I7 {/ }
  109.                         printf("\nAborted.\n");
    9 N6 L2 S4 W6 K8 W, {+ Y1 E
  110.                         return 1;
    7 ?' p' \, X3 ?% N/ d) o( D
  111.                 }& I5 H! _  u$ T% `( v: p  G
  112.         }
    ' Y; j! n& V: p
  113.         if (writeparam(mac, stbid) == 0)
    8 S  E: i5 x+ ^9 T% P8 G
  114.                 printf("Parameters changed.\n");
    4 ^. Z0 r- q  E9 b- M

  115. : M  o9 u  l1 V/ g% o* n
  116.         return 0;. W' P4 }% n* j3 ?
  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
  p/ \: }2 r$ ?5 K" X' @在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
1 I; ]- \" a1 ~' \3 Y3 {& [
你用的编译命令行格式是什么?
. y# D, Z$ C) c6 J9 p
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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