找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15143|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    % ~) `$ N# ?' L9 M& ?9 i% u* ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : f: I; k0 I& T  j
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 |7 p- U8 w8 ]+ W; b; F4 l
usage: himr <address> <value>. sample: himr 0x80040000 0x0
: j. R" B7 ?, a# d3 S) }- _1 V, y
' J; |9 Y% I' |8 U/ n$ k
% f# f+ h7 K. ]. E3 G$ q% v+ O6 Z不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
/ g6 K0 S) V: y: V7 f+ _
/ W5 x, D) E; U: k* O& ]( N, i9 m补充内容 (2012-3-8 09:42):8 Q, O# Y" }) {0 }
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* H4 r: J% \( E4 e% W" N这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。3 X0 }: U  u% A; R9 J
) C  Y3 E. I3 p1 C, X
himr <address> <value>. sample: himr 0x80040000 0x0' T5 {+ S  L$ L0 L/ {1 f1 ^' k
2 T) T, ~8 p; {3 [" [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
, |8 Y; F) ~! ]2 a8 {6 Bhimr 0x80040000 0x005 E% @: k4 q: d4 |
himr 0x80040001 0x113 ~' Q' Z' Z$ u2 B9 c
himr 0x80040002 0x22
% U6 z6 b! K/ v) z, ]. Zhimr 0x80040003 0x337 U1 G5 V; f3 r+ ^; a5 H" u( q
himr 0x80040004 0x44; _+ A: \) d! M# `3 j
himr 0x80040005 0x55  F& {! e, |9 D3 g3 M- K4 i* Y

' A4 W) z; r% A4 _; LSN也是类似。/ k' n! d- x4 B7 E; \! e& N, }
, [2 K/ Q; g, t6 S% B
现在主要是,谁告诉我们MAC和SN的地址?
: W! t5 O5 A1 I
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 : e. A! L1 Y' z8 C. z
一直想找到运程修改MAC和SN的办法,苦于无解啊
6 n, P, Q; k0 F  c: E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
, U* H: o' o* F* b% d* }4 O! U$ V  L8 u8 C- U* f# P
修改的代码早有了。到今天不会编译。
- C% I- A( l& o: S需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>/ [7 u5 h2 I' G2 q8 a
  2. #include <malloc.h>
    1 o! a9 x; H, T  m, Q
  3. #include <sys/types.h>
    ( \5 l7 P1 @5 I/ Q3 B: g5 g
  4. #include <sys/stat.h>, U# c# R" m2 n' \) S6 h) X4 r$ W
  5. #include <sys/ioctl.h>
    ! X3 m) N3 J7 v
  6. #include <stdio.h>" @  F+ v: F- ~9 @
  7. #include <string.h>
      i4 A; w* E( x. v& j% ]
  8. * [3 B' x3 P: u; K, ]
  9. typedef struct {0 s- u& c8 w* ]( @
  10.         unsigned int        e2prom_cmd_sub_addr;* p) o: T5 A  I
  11.         unsigned int        sub_addr_count;$ d: `, X; V! ~1 A- ^0 k
  12.         unsigned char*        e2prom_cmd_data;
    - B5 S& j2 t9 M+ p
  13.         unsigned int        data_count;. q  P) C! c. R0 L( q
  14. } e2prom_s_cmd;
    ' t( B. z& @2 Z! X4 u- Y! C$ K

  15. 0 `* S& @3 {: `5 q1 f4 |
  16. #define E2PROM_CMD_READ 1
      Q" K2 O4 S% {, d" f, K& I; J9 z
  17. #define E2PROM_CMD_WRITE 2# ^% V/ ^7 e; o5 R1 I  I! [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% |! q- t/ {' d
  19.   F! u8 g: O$ j, @: d  C, p& Y1 X
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ) J# H2 l: a$ V# H# `" B' \
  21. {8 n, K6 f2 J, I
  22.         int fd, ret;. s8 t8 R& f# i3 O: i, C
  23.         e2prom_s_cmd arg;3 j0 J  }7 t' @
  24.         unsigned char buf[0x18];
    ; I+ j! l: n  w1 J) ?
  25. ( n- f) x' \# l  Q0 S
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    ' n2 ^1 ^9 X, A6 ~) S5 ~
  27.         if (fd  < 0) {
    # ], Q. U& N: M9 J5 ^, Y
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);# f1 p7 v6 b+ G/ E& h
  29.                 return -1;
    ! o, P" m" b, R9 H& l
  30.         }' r; |" M2 H! r
  31.         arg.sub_addr_count      = 2;
    7 ?) Y% \" ?& d2 p% m8 c+ x2 l
  32.         arg.data_count          = 0x18;
    : ~% |, z( g+ Y2 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    0 A4 j( g; M5 V3 E+ s- c" i+ q
  34.         arg.e2prom_cmd_data     = buf;* @# a; F: A* k" l8 _
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);6 O& X6 `- X6 H2 d/ U9 t3 w
  36.         if (ret != 0) {
    4 ^, Q  b0 D! T; {
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . j7 j; O1 e, F$ j  K! b
  38.                 return -1;+ @+ D" j4 G7 N( A% Q/ V
  39.         }
    0 E! v. p  L" S0 W& C4 }) z
  40.         memcpy(mac, buf, 6);! E. J2 P8 D+ T
  41.         memcpy(stbid, &buf[6], 18);
    9 O$ m: u% A  J  h( X( z) m% O! _
  42.         stbid[18] = '\0';0 T0 R+ ?7 d/ O4 c# Y& ], i
  43.   s  j. ^3 ]" ~! |. q, _! x% z& B
  44.         return 0;
    6 w# J  m2 q% P$ W
  45. }! {0 o2 q' H2 J4 O/ g2 h
  46. - P2 e  A2 k1 `; I7 `  A! [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 S' r" d, L" K& C1 B
  48. {
    % `, J' D3 C2 a  p% H* \
  49.         int fd, ret;
    7 g# K* e3 u2 H/ i3 e- V; O
  50.         e2prom_s_cmd arg;0 l+ E* B9 n. p9 Y7 S/ S& M  ]- V9 N
  51.         unsigned char buf[0x18];% k; `5 j# y/ D, b' T5 k

  52. / J% Y% f2 P3 L; e2 U+ m- R( s
  53.         memcpy(buf, mac, 6);
    2 E5 V0 L4 z4 M) s4 P7 W
  54.         memcpy(&buf[6], stbid, 18);
    7 R! d1 {. B2 h, c- S% O2 f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / N" d% m0 L) A( w
  56.         if (fd  < 0) {1 q3 x: K+ H% Q# }
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 i8 c0 j8 w8 e
  58.                 return -1;
    * }' X5 {) G0 |. F+ @8 z
  59.         }/ t' c# G' K+ r3 y- v( t  H
  60.         arg.sub_addr_count      = 2;6 B# X9 T9 {* I' g2 ]/ R
  61.         arg.data_count          = 0x18;
    - l6 d* Q" ?5 E7 O' R. Y: O
  62.         arg.e2prom_cmd_sub_addr = 0x290;  D0 ?' d# C9 j3 X, Y
  63.         arg.e2prom_cmd_data     = buf;
    : B! i/ S9 B7 t; r4 x1 s3 S3 y! ~( _
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);6 `6 t8 H1 u; x1 @
  65.         if (ret != 0) {# b' Y4 d7 o! K% B9 I5 J8 I1 V
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);  b1 N: o/ h1 h/ o6 l5 O6 Z
  67.                 return -1;
    - Z+ {! I" ~) P9 o) K
  68.         }# q, K/ t& q- v% }3 m' m, H( Z' ]
  69. ( F6 W) ?- c; {( q! g
  70.         return 0;$ v! Y* G$ G9 ^* V/ a1 V3 V
  71. }; t# n# [/ p6 \- W6 d

  72. 3 x6 E# [4 y9 G: N) r- k$ w' ~3 K
  73. int main()
    ) \$ z+ `0 e# U% c) M  p8 A# g
  74. {* ]0 e6 H; h7 ~* b$ O
  75.         char c;
    - Y6 ~* B$ {% {1 i
  76.         int i, macs[6];
      t. w8 K2 E* T: E$ S# C
  77.         unsigned char mac[6];7 n+ `7 j4 Q9 C2 V$ O
  78.         unsigned char stbid[256];, n$ y- k6 I% c" b  S* f' i) g
  79. " t) k( h# q3 i& l4 L* J8 X
  80.         if (readparam(mac, stbid) < 0)
    , ?6 v. w1 ?/ c0 x9 k, w6 x
  81.                 return 1;
    , M2 R6 f6 o6 W5 y, b0 G  j
  82. 4 F) C$ Q! m7 a8 s. S
  83.         printf("Current parameters: \n");
    ! T" I$ J/ C& ?! L" _' `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : h0 h0 e3 q/ n: `. j" H3 w# [
  85.         printf("  STBID: %s\n", stbid);$ l6 a: u% j7 @( Y6 ?) Q0 D0 C
  86.        
    % R% _  x/ N# u5 h7 }9 C2 X3 c' L1 s
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");7 d- c3 T4 z% b# p# e
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    $ b8 k1 W1 Y& K* {6 _  f
  89.                 printf("Input MAC error\n");
    9 u+ ~# B/ U9 |! |# K9 ^
  90.                 return 1;  \3 B) l: {5 v; z; @7 J8 |
  91.         }& Q) `5 F6 _4 M! s/ Z, q" _
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    % u7 s' p) j# j& x: W
  93.         printf("\nPlease input new STBID: ");
    ) I2 s  d$ ~& i1 G" U
  94.         scanf("%s", stbid);5 ~6 C: S7 I0 [9 g, j3 v8 C! E
  95.         if (strlen(stbid) != 18) {
    / c% U# J, k* @+ ~+ K2 N  q
  96.                 printf("Invalid stbid\n");
    + m* {! Q2 y0 `( s) q2 m
  97.                 return 1;' ~  |& K' ^% ?/ `" z0 z
  98.         }; V1 Q" P' n' Y' k+ E5 w( J
  99.         printf("\nNew parameters: \n");
    7 U. c; ^' b$ X' F
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);8 \! [2 u' ?# V6 V
  101.         printf("  STBID: %s\n", stbid);1 `* @$ N) G: Z3 i3 H0 _8 e
  102. , m# K0 S3 n2 F/ u, {- ~1 C
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    0 v* n+ f' P8 g7 U7 K/ V7 e: l' ~
  104.         for (;;) {
    + o! @9 m2 P. k) Y, T
  105.                 c = getchar();
    , p& |, ?/ `6 X( y  `7 f( K
  106.                 if (c == 'y' || c == 'Y')
    7 y2 E! K" Q7 G
  107.                         break;; I3 ?: e% t7 \" h. w; D$ p1 ^
  108.                 if (c == 'n' || c == 'N') {# i% F2 m- ?- ]' @  b$ h- O
  109.                         printf("\nAborted.\n");
    + W8 |2 O, d, l8 Y' Q6 }# s
  110.                         return 1;+ d3 b0 Z; z' k7 G
  111.                 }
    4 q# m# u8 K$ b" _
  112.         }
    6 w& b8 u, y; y& H
  113.         if (writeparam(mac, stbid) == 0)   s) v$ h7 S9 ~+ c( E7 |6 C8 J
  114.                 printf("Parameters changed.\n");
    $ B5 f6 c, L" e

  115. 9 I& U9 V5 B1 r+ t  C4 J
  116.         return 0;
    & _* x* Z$ \2 |1 s/ P. e+ {. |
  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
+ @. q) E, _# h在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
8 m, _8 ~4 R4 I. M/ c: S! C
你用的编译命令行格式是什么?
  T8 A/ M0 d, `& s: K) i3 F
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-28 00:12 , Processed in 0.032309 second(s), 4 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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