查看: 15976|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 W$ s! \9 X: R) N0 @
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    , B( H4 T6 K- W2 K$ G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 H# N, C) _0 {5 `" Q* v$ _
usage: himr <address> <value>. sample: himr 0x80040000 0x0$ z4 j$ D' D: r

& O3 V; V" o. Z5 E4 }, B# l2 ]5 V& Y2 s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
$ x( m9 [; q5 G7 J7 F/ v* k7 E3 G6 W; `6 M1 n- `7 d
补充内容 (2012-3-8 09:42):
. x5 ^0 r8 R# y6 u* A. K/ }; v( khttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
4 Y) M$ X2 H6 F( C7 }9 j这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。! Y. P. B' r! W7 O# n

, m) T) ]5 F/ x; A1 G. q* G( f. Shimr <address> <value>. sample: himr 0x80040000 0x04 k/ ~8 |8 e$ u8 ~# e% U0 s

; l  H9 g6 a$ ]7 f例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
  k8 J" n& B" o+ J  A. E* Khimr 0x80040000 0x00
( G0 ^$ t- p( ]! Y* x- D1 ~himr 0x80040001 0x11
  ]; G# _3 a7 c8 a* X4 _himr 0x80040002 0x22* J0 F/ {1 Q) j7 o7 |0 M6 I
himr 0x80040003 0x33
0 b; F# q# Z( D( X- n0 b; B4 chimr 0x80040004 0x442 P( j* _' j9 D4 e. V: v& {
himr 0x80040005 0x55! F7 E, B+ ]; a; b
% t6 W0 P2 b2 R; f$ l
SN也是类似。! t+ g( K( [- ~) N: `, @; e1 b

  z! N0 \/ Y, U现在主要是,谁告诉我们MAC和SN的地址?. {2 _8 r3 e# U" {& E7 s4 G4 y
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ' s* w' Y: ^) D' g3 O
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ f8 t3 v4 D0 j* |* ?1 P0 D& i' X源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 # p5 I6 L1 ?& E6 t
! L; i3 X  K6 A; O. u  I/ E+ L4 q
修改的代码早有了。到今天不会编译。
/ m( H0 r- i# W0 A需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    4 ?$ I3 ~) _$ h! S' y
  2. #include <malloc.h>: F1 T$ k. S4 Q
  3. #include <sys/types.h>8 t: c  M. k( H. m+ g6 H
  4. #include <sys/stat.h>
    # ]$ k) t1 a/ S% [
  5. #include <sys/ioctl.h>
    ) k5 E) H3 B1 u! c6 c* I( e
  6. #include <stdio.h>! o" x% H  S$ K/ p) B% L
  7. #include <string.h>
    . z" i8 @. ]4 H

  8. * @/ @" C, X) @: ^. w
  9. typedef struct {
    - d' V7 O0 ?& Q3 j& `8 _4 U
  10.         unsigned int        e2prom_cmd_sub_addr;
    0 o' f; @; S! T6 `2 A- l
  11.         unsigned int        sub_addr_count;
    * v+ v( N: r9 L! S7 i5 K& K7 B
  12.         unsigned char*        e2prom_cmd_data;
    0 P& U+ F) l) K8 \% k; @( F! P
  13.         unsigned int        data_count;
    : _* m/ Y/ U, g; c7 p
  14. } e2prom_s_cmd;
    6 ]5 F# z, g. w- Z# B* s5 [
  15. ( \% u1 l( _6 i" A1 Q# t
  16. #define E2PROM_CMD_READ 1! D$ }! A3 N* l4 h- C1 Z0 @
  17. #define E2PROM_CMD_WRITE 2' }; m- X1 I# K' d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16", t2 D8 ^# j+ U; r; f  @

  19.   q3 _! V7 z4 }4 p+ {8 y6 d
  20. static int readparam(unsigned char *mac, unsigned char *stbid)2 n% D" C/ A; Q" @9 f
  21. {2 w+ |4 c! k( L: C! y
  22.         int fd, ret;/ S+ c2 j5 K) {# C; B- L
  23.         e2prom_s_cmd arg;
    & ^8 _) ?) w# f3 R/ }
  24.         unsigned char buf[0x18];
    ! v9 T5 `  E& Y$ T! E1 O8 v
  25. ' Y; i: p* g  f/ Y4 X- }8 i
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 M) k( d; f+ `2 Z/ S2 H& I
  27.         if (fd  < 0) {3 i( X8 Q$ J! f2 f
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& h+ E0 u) [$ d3 F; d
  29.                 return -1;9 u. A+ p# @: T* I* s5 W+ U
  30.         }+ @) T1 g8 T# a* l+ J8 |
  31.         arg.sub_addr_count      = 2;
    : b9 ~6 h' }. F' R( t4 R4 U9 A
  32.         arg.data_count          = 0x18;
    # [3 c( E, f8 c
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    % Z% y' j. V: Y" `
  34.         arg.e2prom_cmd_data     = buf;# |- l* K# N7 q9 U+ U0 A3 G9 ~$ D
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    # O, e$ e' e* W
  36.         if (ret != 0) {
    ! C5 W( E- j& Q5 j& d: z3 S
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . F0 J# E7 O3 x* Q, I
  38.                 return -1;/ |4 U0 y2 L1 \% a, S$ C
  39.         }
    ) j# Z! ~: [) x3 w4 A1 Z
  40.         memcpy(mac, buf, 6);" c6 y( N& X% \, i
  41.         memcpy(stbid, &buf[6], 18);
    ) G9 }* y' i8 p7 [* [& C0 w
  42.         stbid[18] = '\0';$ g: {% G6 L9 l3 x

  43. / N* B% D$ ]) }' a: b
  44.         return 0;
    , Q. Q+ K6 @  ^0 |; C
  45. }* ]6 q" n+ r2 E) L! `* \* Z+ f
  46. ) V$ Z. X* c- p# W
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ v( W* _  F* r* d9 n
  48. {
    # x/ U% ~; |. S
  49.         int fd, ret;
    , B( k3 K( c: \1 L6 D
  50.         e2prom_s_cmd arg;
    3 G0 K, t3 A1 D- b3 L
  51.         unsigned char buf[0x18];
      u7 ~6 [1 W; [5 l  D# x3 o; `; l* J
  52. % H& |3 V* y5 \; D9 I
  53.         memcpy(buf, mac, 6);
    2 @# c+ ?. L6 t
  54.         memcpy(&buf[6], stbid, 18);' s* T6 ^+ f! g% i5 a8 [$ x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 g* B  @! z$ A  ?2 c0 d
  56.         if (fd  < 0) {& Q$ p: [: x# |  M9 w+ s
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 e: b, L/ S* O7 D9 z  t
  58.                 return -1;+ n$ Z$ y0 L* C9 y! c4 n. B3 C
  59.         }' ]5 |5 l0 C# M1 D& y8 A. O# t, l1 u
  60.         arg.sub_addr_count      = 2;
    9 O9 k! Y9 A7 t' C' R& t
  61.         arg.data_count          = 0x18;
    . v9 B, t; h: r% |  p
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    # O& n! R3 g& w, f% U
  63.         arg.e2prom_cmd_data     = buf;
    * h% D( C- M5 l2 }5 W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);$ X+ F' G% i! }
  65.         if (ret != 0) {
    2 J6 s$ \( c$ n
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    8 n. W9 v/ y% ~5 e- z3 K
  67.                 return -1;1 ?# K/ Z2 x  ?  D4 a! f6 X
  68.         }
    1 _. s2 s; s2 C  E
  69. ; V% Y1 e/ N. R8 c
  70.         return 0;
    5 l# ]& y- W% w$ ]) q6 m0 m
  71. }/ |7 O- N- z8 D5 S6 C+ t; }

  72. 5 A4 F' _: U" `" k1 k8 v2 ^+ L$ l
  73. int main()
    3 _3 u4 y/ `" K2 y9 b
  74. {
    4 `- a% a0 S$ {9 [' }3 n6 m
  75.         char c;+ _! h& }4 A6 b1 g5 v# l) v
  76.         int i, macs[6];
    / y* |; W& n* \7 U" B: }
  77.         unsigned char mac[6];: J/ t" \4 v0 Z! y( f" s5 ^% j
  78.         unsigned char stbid[256];: \& a& _1 B: V( l* `/ K" \( D% Q
  79. 2 n1 i1 T; [/ O2 y% l! s
  80.         if (readparam(mac, stbid) < 0)+ F1 ?4 N) W6 ], {8 x3 l# D
  81.                 return 1;
    6 y. m. Y2 j* \& A! D* O' D

  82. 1 B- o% p, j4 Z7 z1 \  S
  83.         printf("Current parameters: \n");
    8 I7 b: u" |! D4 f& ^' C* r
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" [1 N8 r' a9 b- U8 a$ T' m
  85.         printf("  STBID: %s\n", stbid);
    3 b0 y6 h+ A" N
  86.         ! Z, y; [- v' |$ k" D% P3 t- N
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ' a4 t4 \+ R  O( x0 h+ k. k1 M) n
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {8 i" c2 f2 `# R$ s, y. f
  89.                 printf("Input MAC error\n");
    7 D. g  M9 @; ^8 v( D
  90.                 return 1;. C" K  w$ t: L+ e$ _# U5 A. E
  91.         }
    ) a) z/ z: K# [9 C2 K+ u- A7 r, [
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    4 k' Z" w% a0 B+ |2 S1 j
  93.         printf("\nPlease input new STBID: ");$ q+ U% l( B0 Q8 W" w3 |! l
  94.         scanf("%s", stbid);6 E2 g: h2 |' {
  95.         if (strlen(stbid) != 18) {
    + C; k/ Q7 v- k6 h
  96.                 printf("Invalid stbid\n");( q% [' T/ n# y* u: d
  97.                 return 1;; ~. r9 |7 t' e5 z# h9 f
  98.         }
    9 y7 ~' x3 v; y  j
  99.         printf("\nNew parameters: \n");
    & N+ b: q# r: a6 O
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);! h5 {/ N5 j, h: w) B$ A/ R
  101.         printf("  STBID: %s\n", stbid);
    ' i+ p7 X0 _4 s
  102. & y2 l* g( f+ N' E1 h* q6 f
  103.         printf("\nDo you want to change paramemters? (y/N) ");9 E) |1 l$ p% A  V0 L- K7 \' g3 ]! c8 ?& ^
  104.         for (;;) {
    4 C" K) L& y4 ?3 m& u0 `2 B
  105.                 c = getchar();4 [  B  r8 d" N6 z
  106.                 if (c == 'y' || c == 'Y')
    4 ~6 k0 z; Q+ F# ~5 j. J) y
  107.                         break;
    $ Z8 P. V- O# S. c% I, j
  108.                 if (c == 'n' || c == 'N') {
    0 F4 S  X9 G4 e$ U1 Y
  109.                         printf("\nAborted.\n");8 z% P- N/ V( R6 k3 b  i/ G  ~3 |: A
  110.                         return 1;& c- Z* K7 L: [+ c
  111.                 }. ~  Q* o2 U: I
  112.         }; R: x. E0 W8 e8 O9 X! v4 N3 a
  113.         if (writeparam(mac, stbid) == 0) - j5 i$ H+ k8 q1 x8 o
  114.                 printf("Parameters changed.\n");
    6 }# n2 `  O& ~/ Q) t5 t

  115. ; M$ m" ^. {+ F
  116.         return 0;
    6 R- _' n. H  B5 D8 h
  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 $ J& P2 H8 N& Q4 U2 g$ B  W' n8 }/ N
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
* n2 A5 `! d1 v2 r2 R
你用的编译命令行格式是什么?
" D% d( [8 L3 \9 o3 ?$ Z
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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