查看: 17634|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr/ G6 M+ c0 Q0 T5 m+ v. l! [
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* s& V9 i8 T# \4 G
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:1 u; F4 b# J' W, p! q+ m/ B& Z% |
usage: himr <address> <value>. sample: himr 0x80040000 0x0$ e) F& }9 W4 a. |: V  z1 Q

# u- Y: t4 W5 i" e" e" [! x, v3 q. W" u  t
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?- c3 B( \0 I! `* t# x* l# `8 s
8 J9 N- Y% k: Z4 g: q
补充内容 (2012-3-8 09:42):4 v2 h7 c# S; ]: p6 H
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
0 w( u# i2 i9 Y! D# w这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。1 _& Q  M4 F! m5 L
: ?0 B5 u, B  ?) s. K
himr <address> <value>. sample: himr 0x80040000 0x0
. {: _& C! z3 w; y& V
$ M2 w$ s& ?: g6 V例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。% [! N* |7 i. Y- @! O2 j
himr 0x80040000 0x00
( G* n, f/ R" ^' A8 Dhimr 0x80040001 0x11
: ]0 k; |8 v$ ]himr 0x80040002 0x22+ R* L4 t! C- A5 `: T8 C- ^; }
himr 0x80040003 0x336 a0 Z2 p# _% a/ L' |% k
himr 0x80040004 0x44
, ~$ u- c, h1 V& D8 e7 V$ [! ?1 V/ Chimr 0x80040005 0x55
3 o) h4 h: n; T1 [. q# G' e4 J0 ~6 s8 A! U& P
SN也是类似。8 E1 ^$ e" o3 `1 T3 X& D
. F5 Q# V; H3 l
现在主要是,谁告诉我们MAC和SN的地址?# g$ b% L* A4 a+ Y  k5 g) K
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
5 |# m! o+ h1 J" z3 S( `一直想找到运程修改MAC和SN的办法,苦于无解啊

7 P% f: |  S" R- ~3 G源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( q, L& ]7 D3 Z) X) c5 p- k
! S+ p# q. `" I  l3 P: t$ A修改的代码早有了。到今天不会编译。( m6 @9 b) O' e* p
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>3 |; U+ p' ?9 ?3 E4 Z; Q4 \2 e
  2. #include <malloc.h>
    ( \/ J) Q6 ]9 E7 k1 u' _, O
  3. #include <sys/types.h>
    0 C6 g( w2 Q8 X; s) [; `5 s% f4 l
  4. #include <sys/stat.h>
    ; j* C$ D: I2 ^, Y+ C3 T/ q& t! |
  5. #include <sys/ioctl.h>- @. g. b! B7 y" U& T
  6. #include <stdio.h>) c" a. ^- Y& T$ ^
  7. #include <string.h>
      a4 m9 _/ D; }! ]7 w7 z, ^0 `
  8. 8 U. \3 A0 V: y
  9. typedef struct {7 q" ^) V6 g2 s1 H/ i
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 y+ E9 p* ~7 s7 w  Q1 W
  11.         unsigned int        sub_addr_count;
    3 O- \1 `* Q+ w: u' R9 y, n' [; D
  12.         unsigned char*        e2prom_cmd_data;" m$ L  X# o9 y: _1 k
  13.         unsigned int        data_count;
    ' d* V6 v) k" P* F, I9 a
  14. } e2prom_s_cmd;& F+ ?! d! u5 Y+ ?# e

  15. 6 C% \# X1 x) C' e3 W6 _, h
  16. #define E2PROM_CMD_READ 18 O; L- @8 |8 t0 U8 ?% |% n: x
  17. #define E2PROM_CMD_WRITE 2
    " O# s+ D& @) c! H  y' c4 {: t
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16". m3 d9 ~6 \8 F% H! M- A, m% ~! U
  19. 5 q# Y3 X! s) S( _( P, j5 b5 J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ M" }3 P! f! W8 A
  21. {/ d9 r  G% E1 w* Q. ^- k* G' ?
  22.         int fd, ret;# j4 r) d, e) |& @; _. b
  23.         e2prom_s_cmd arg;( t$ T9 r, A: b" B+ K5 }+ S
  24.         unsigned char buf[0x18];% g$ q  Y2 ^% ^1 ]9 s( F  R

  25. , A( _! G- w3 N& w# j5 A0 u
  26.         fd = open(E2PROM_DEVICE, O_RDWR);  F- X9 P. j% m8 s1 J/ c
  27.         if (fd  < 0) {0 y* z# u! V2 A7 A2 }
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 t# \3 t% N" [' ]; O) @
  29.                 return -1;# d5 }) Q7 f8 Y3 s$ z' D% e6 H
  30.         }, ^  s' O. E) K# c( k5 L' N7 M* U2 h2 K
  31.         arg.sub_addr_count      = 2;
    , C' F9 ^  j7 r7 F) \! `
  32.         arg.data_count          = 0x18;3 o$ q- M: `2 ?; f" M& v3 T* |; a5 L
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    / @! Z9 U5 C# M2 s" E' q
  34.         arg.e2prom_cmd_data     = buf;
    ; c4 H& e9 f- r+ p/ r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    % b4 v" e" n9 L% T# P
  36.         if (ret != 0) {
    5 M; `3 w4 c, e- F  a1 N9 q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    / @- R4 c! t2 Q6 c" W3 Z8 ]
  38.                 return -1;
    / i2 }( w1 I* Q1 ~2 @
  39.         }- a) ~$ u+ x# l. }3 f1 E; S% |
  40.         memcpy(mac, buf, 6);+ E) n3 @' O6 @6 G1 |+ a  p( c
  41.         memcpy(stbid, &buf[6], 18);
    . z: W9 w7 J) J$ u( N' ?# f
  42.         stbid[18] = '\0';
    . V# t; Q! J: n
  43. . j+ x8 I- D* e& p
  44.         return 0;9 J& K3 F- i% A- F0 R
  45. }
    " K' `( C' I' i
  46. 3 Y% I6 t/ V6 i0 i4 P, w2 ?
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    9 z( D: x) t( g4 i
  48. {
    ) V9 J, w1 I1 j. B  d  a5 h3 p" q
  49.         int fd, ret;
    0 p/ d3 N, X2 p5 F4 S- u
  50.         e2prom_s_cmd arg;
    + J# L" b6 s8 x1 w% j$ r5 _
  51.         unsigned char buf[0x18];5 @3 X% V, w/ A/ S! \
  52. 2 s. p. p6 D5 S
  53.         memcpy(buf, mac, 6);
    3 q. c  U: E# c0 b" Q; E
  54.         memcpy(&buf[6], stbid, 18);
    , M+ Y% @5 M% D
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- w( g# c9 n2 _
  56.         if (fd  < 0) {9 M" C! O' n% N1 W! ?$ \: g
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);# K. D8 t9 A0 r# x- y
  58.                 return -1;  O* z2 E. P* |
  59.         }2 u+ N3 U+ e2 w, H/ k
  60.         arg.sub_addr_count      = 2;
    # V" s: l( L, U9 d! L6 w+ ^
  61.         arg.data_count          = 0x18;
    " G- y4 v% |+ {
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + m* _$ v4 l. J" ]
  63.         arg.e2prom_cmd_data     = buf;
    & R) q$ X+ {' C1 \+ O, `5 p
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    8 Y8 b, q5 ~- v
  65.         if (ret != 0) {7 b/ T! R2 z. N& G6 i
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 X+ M1 }4 M' ?
  67.                 return -1;* T. m  D9 B8 |% N6 j; t' s' ?
  68.         }/ P3 h6 |; n& C9 \) {/ ^' y

  69. ( W  o: `+ K2 r3 c
  70.         return 0;
    ( w5 u) v7 F- l3 D, q, o1 W: f. ^5 I; y
  71. }& v( }8 x4 [" l5 r# M

  72. 5 i* n/ Y% e) g1 N' `3 d- |
  73. int main(). p1 y; a  x& P% R$ I; a' T* q
  74. {# ?' b* U+ |& c$ v
  75.         char c;
    ) F2 b4 H* D# j
  76.         int i, macs[6];
    ' _% \3 o' c7 C, z/ D8 [( t$ d
  77.         unsigned char mac[6];3 y# @( o' m& Y$ \/ b
  78.         unsigned char stbid[256];
    ( w( O% r( K# Q$ S  X
  79. - k2 I9 _1 j7 m  z  P8 |
  80.         if (readparam(mac, stbid) < 0)
    & |3 w; s! E3 \2 r6 l' T5 f3 I
  81.                 return 1;& n2 r$ I5 y  z" W

  82. ! B& E  F9 Y/ D, d- K
  83.         printf("Current parameters: \n");
    9 F1 x0 v: ^8 D$ N1 j6 h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; t+ t, F- w: X7 Q- N9 u
  85.         printf("  STBID: %s\n", stbid);
    - H3 P! |: E2 l2 R, Z
  86.         , a# `$ g8 l6 u; u3 v$ Z
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    . P% j7 U$ f: ~, Z6 K5 d
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) G+ {% I0 [8 e& x( B" X
  89.                 printf("Input MAC error\n");
    " O3 U* w( K& w# y! ~, z, t
  90.                 return 1;
    4 L9 Z& X2 T+ B7 j9 R. @5 Y! R
  91.         }0 x% Z( F  q# L. E4 D/ Y% N6 @& Z
  92.         for (i=0; i<6; i++)mac[i] = macs[i];. o  W8 W. o  v7 I8 N# b
  93.         printf("\nPlease input new STBID: ");
    0 g3 d3 Z  l; A  b! H
  94.         scanf("%s", stbid);
    # a6 I& W1 A, E3 U' ^0 s
  95.         if (strlen(stbid) != 18) {4 ^3 c; ], S: b7 m( ?/ g/ L" H/ v
  96.                 printf("Invalid stbid\n");
    0 L, m; @1 x7 {4 c3 e% h
  97.                 return 1;$ N" _* T7 D8 G3 l2 Q
  98.         }' P* d2 p$ x( m
  99.         printf("\nNew parameters: \n");7 u: q) q5 V5 S. m# K( \4 y
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 G( s& H6 g2 C& e
  101.         printf("  STBID: %s\n", stbid);( x9 O" o' t5 l3 ]& r

  102. $ |) U& g/ Z5 K
  103.         printf("\nDo you want to change paramemters? (y/N) ");/ R6 {6 Y) }( c* K2 l. s% ]/ B
  104.         for (;;) {' G8 d2 t" _' u" B$ X  e0 ^
  105.                 c = getchar();2 a: F$ a0 r, J2 s  F
  106.                 if (c == 'y' || c == 'Y')
    , m# y2 ^2 U, K- t
  107.                         break;' V3 X+ X7 E: N& U# m
  108.                 if (c == 'n' || c == 'N') {$ ?" E" b  T+ M0 n6 [. h' u  K4 A
  109.                         printf("\nAborted.\n");
    ( R; S% N: G( S
  110.                         return 1;
    % u) V" _- Z+ r$ z/ c2 S
  111.                 }9 h( S! o* Z% b' H* ]
  112.         }" f9 c: G- `6 U* i( {* Y/ }, `2 W
  113.         if (writeparam(mac, stbid) == 0)
    $ u+ E% s8 l4 \' f. N
  114.                 printf("Parameters changed.\n");
    * E: n% r& Q2 }3 H, |9 i

  115. 6 F1 f/ }" l7 Y" h! k, A2 S: ]
  116.         return 0;
    6 W! j. Y9 N; b9 a# o# Z. ~) 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
$ g( v+ w4 B; e( c, l, r! [在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
( x+ r7 q& o: J: i$ X2 z
你用的编译命令行格式是什么?
' a' E0 K& L5 ]: x9 a
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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