查看: 16955|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr$ C% Q9 n1 t- l9 M# v4 m3 y7 _0 U
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    9 ?3 I- i. b+ i
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
  _/ k' Y; ^0 n  D+ jusage: himr <address> <value>. sample: himr 0x80040000 0x05 |# g# b, Q+ i$ H* V' r' ?

2 d# k  m+ _! V1 P& v: f- X0 i& o2 k  S
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 y. T9 b$ p5 [/ B+ b1 |; O# \, L+ c* n) S+ V
补充内容 (2012-3-8 09:42):' o- V% g$ c8 |6 e( {
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% w& m  P4 m9 v# d这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。+ O1 {* @% S' Q( x. s8 \0 P

: S! y1 O! W/ Chimr <address> <value>. sample: himr 0x80040000 0x0
0 \" Q( [( D0 T8 U  |( g  W2 G9 t$ W& d: V. y9 y! f" {
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
! r, ^% E, K/ Q7 \$ Z# m0 P( L) B5 nhimr 0x80040000 0x00; I9 k+ b; C, S$ b. A$ x
himr 0x80040001 0x11: i# z* t  q0 a; E
himr 0x80040002 0x22
2 _+ j8 R: p& M6 l( C5 o2 q) T5 ehimr 0x80040003 0x33
, v6 g/ o, r  m& y5 \/ ihimr 0x80040004 0x44
7 n, ]1 T! r) Ohimr 0x80040005 0x55: P' y0 O7 O# n: w1 m7 C( c* D0 y

) _% T2 ^, _: k) d! N2 m# {2 \SN也是类似。
% V! ^" b# |0 s0 M: W( d0 U1 s3 h" w7 d( ~6 f
现在主要是,谁告诉我们MAC和SN的地址?( N5 U2 z% ~5 f! P& t+ m
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
3 a! T7 H+ J8 ?/ [6 G3 v一直想找到运程修改MAC和SN的办法,苦于无解啊

& F8 K% F' P! R5 {$ b4 j源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
. x& `6 w6 |: K; j2 ~3 J/ o5 A, V' T& f! {) u+ R. V- U( J5 d9 x
修改的代码早有了。到今天不会编译。  Z! k  u4 j8 v) b5 q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    / p: o& P! b' y5 X) Y
  2. #include <malloc.h>
    & U% ^! P# S( q3 P
  3. #include <sys/types.h>3 @2 r) G, m, C. v. p, i
  4. #include <sys/stat.h>
    $ |+ z0 j1 j3 h6 i. r- `4 `
  5. #include <sys/ioctl.h>- J& B" j+ ]7 v* \
  6. #include <stdio.h>0 Q' r9 G/ i% U' ]
  7. #include <string.h>% a3 E* O* W6 L5 H: m* W# }. c1 f: h' c
  8. - f" t4 Y1 o; ?6 z+ Q$ W' @
  9. typedef struct {
    / Z$ @& q8 E/ o% Y. n
  10.         unsigned int        e2prom_cmd_sub_addr;
      x+ A1 w5 B( B9 G% Q7 j3 ?
  11.         unsigned int        sub_addr_count;9 w  L5 r) V8 [9 `( V* G2 X3 L
  12.         unsigned char*        e2prom_cmd_data;: [9 W9 S1 Y# q: z
  13.         unsigned int        data_count;: h/ h% d4 Y5 c' i$ e5 w% k" c
  14. } e2prom_s_cmd;0 ^. y" v3 B8 A% o$ G0 j; |
  15. , a& b) s' Y8 B
  16. #define E2PROM_CMD_READ 1
    1 {1 k$ F  ~0 M7 e9 B/ a  r
  17. #define E2PROM_CMD_WRITE 22 }+ [/ T- O& x1 w4 N# l) A
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    # ?; j6 g0 w0 G# {+ @( ~
  19. ( K5 L1 u; w. u; R  y
  20. static int readparam(unsigned char *mac, unsigned char *stbid)3 O0 x1 A7 q0 w5 R4 F
  21. {2 i9 r8 o3 D6 ~0 `+ ~- ?  t" r( L
  22.         int fd, ret;
    . L: U& b1 A$ |7 Q; b! O, d! ]
  23.         e2prom_s_cmd arg;
    : n1 f- x) X( r2 o. U
  24.         unsigned char buf[0x18];
    . `2 I0 P6 S' W
  25. " O' o& a( M' \; J
  26.         fd = open(E2PROM_DEVICE, O_RDWR);% B# Z7 A) Y6 o% N
  27.         if (fd  < 0) {# W+ @$ K7 K* u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);) n- U$ o$ N2 q% x- L! T& }! ~1 n
  29.                 return -1;
    1 f) x" }) `: E, X
  30.         }
    & o6 H+ A/ p# V
  31.         arg.sub_addr_count      = 2;
      |# Z1 q4 K4 f0 D# W3 |
  32.         arg.data_count          = 0x18;) r' K' ~* [4 w
  33.         arg.e2prom_cmd_sub_addr = 0x290;  v- H0 X) R% u# |
  34.         arg.e2prom_cmd_data     = buf;+ H9 r9 D; A4 k0 G! O
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
      B  U( H# K- J3 u0 J3 q
  36.         if (ret != 0) {
    " D% b, o1 u0 V3 e1 y4 a. R
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    , X5 ]- J& f4 o' A+ Y
  38.                 return -1;
    . c$ \4 H  t& c
  39.         }
      d7 \! U1 _# G
  40.         memcpy(mac, buf, 6);* G$ E8 f3 O4 C5 E( z+ Q1 Y. b
  41.         memcpy(stbid, &buf[6], 18);
    ( v, R* M& L2 `
  42.         stbid[18] = '\0';
    / X; T- E& m" X8 ^9 e; c' F7 }

  43. ' \0 o5 v) n- u# h5 x% @
  44.         return 0;
    # q6 h( v' R5 s$ Y
  45. }. M. n1 e( P& o' S0 H# _3 A
  46. & a) Z5 w/ t9 Z- y( @' n
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)" @# O) Z  v! z( B/ w2 f; x9 S
  48. {( R* p2 i8 X9 L6 N& K" ]
  49.         int fd, ret;
    & Q: I* y/ B" T, I0 _9 |
  50.         e2prom_s_cmd arg;' e; _: K  |) I1 P2 u  Q
  51.         unsigned char buf[0x18];& d$ j/ u% P# `2 [3 J! ?3 c9 V7 p+ p

  52. & M5 L9 S, U3 U( B6 F9 z8 z1 F
  53.         memcpy(buf, mac, 6);" \- N, t2 y0 G: E1 O
  54.         memcpy(&buf[6], stbid, 18);2 h* S5 x' {9 P" H+ L# l. ~% L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    * _. n  m8 M8 |8 b: \+ S# G$ v9 `
  56.         if (fd  < 0) {* A2 m  D* }7 H- O$ N  X& l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! T( d+ W" F) [! u' l  H) {+ }
  58.                 return -1;
    ! R: O1 {0 _7 ^: z+ n! x( F* G3 Q
  59.         }
    ! y% e# m6 j; T6 C- M
  60.         arg.sub_addr_count      = 2;
    . b( y; i, e/ h/ `. g* I
  61.         arg.data_count          = 0x18;) X/ S) U3 n' m
  62.         arg.e2prom_cmd_sub_addr = 0x290;1 V+ n. o; i# z
  63.         arg.e2prom_cmd_data     = buf;4 d2 P) l$ y% L( z
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    7 y5 O2 J8 p; {2 t! y
  65.         if (ret != 0) {0 Z9 O" x8 m- i6 t: L/ p
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 p* i& i- B9 z! m
  67.                 return -1;
    " q% f: l0 {0 i5 R$ b+ ?
  68.         }3 a; ?, g5 M4 y& S9 {, Y! l( x8 \

  69. : r( ?/ d7 F. m1 O
  70.         return 0;
    7 m; {$ x4 a% ?, ?, t
  71. }
    5 d6 p& D5 v& F/ P
  72. 9 ?4 p1 H$ o) h4 c& Q- l
  73. int main()
    . L3 [: B8 G) J% ~
  74. {
    ! U1 Y( a0 D5 M  k1 E
  75.         char c;3 A% z8 E. d2 t3 n! a9 {* n6 Z% w
  76.         int i, macs[6];$ B8 `/ [# v" W7 i) i; \7 b
  77.         unsigned char mac[6];! i) @. Y5 b! p! T7 }; D
  78.         unsigned char stbid[256];
    & B" @9 C4 E4 ~6 A
  79. 5 n$ |# R4 q1 h& ^
  80.         if (readparam(mac, stbid) < 0)
    + L7 x6 E, {& X; L
  81.                 return 1;
    . t' K( R5 k% o
  82. ) t, E' h' R# F
  83.         printf("Current parameters: \n");" B+ W) A0 F" c2 N) n+ G* x. H
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);& J" v' k$ }. q4 ~+ ~( J
  85.         printf("  STBID: %s\n", stbid);( C  G5 n  ]' B! D/ a1 i* b
  86.         ; w( J2 C% J% T! h
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");  ?) x$ L# ^0 m/ G) _
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 `4 I& y2 B% O+ W+ J
  89.                 printf("Input MAC error\n");3 n8 K" F; I$ ^" v) w/ T3 N# {
  90.                 return 1;; a  l3 Q1 S; D' H
  91.         }! j' {3 F2 ]5 m% T$ x' ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    9 n1 g6 D# k! O
  93.         printf("\nPlease input new STBID: ");' f- p$ b- e8 a5 L" O5 e
  94.         scanf("%s", stbid);
    1 N3 m/ L& Q+ m; I0 B% m! f2 H
  95.         if (strlen(stbid) != 18) {- N; f9 }! L5 v0 `8 q5 |5 ?  B
  96.                 printf("Invalid stbid\n");' s& Z' k' ^3 m2 f" ~
  97.                 return 1;# M; r4 A1 {( q
  98.         }4 C6 d/ g# {# a
  99.         printf("\nNew parameters: \n");& n" S( z; I' u4 B4 s1 B- B! P
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) K8 g* [. D" x: x' }! \5 M) V
  101.         printf("  STBID: %s\n", stbid);
    * \) r, q  I- t. T% h
  102. 8 A2 h! f* n4 D+ {9 {, Y
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ v" j/ d. h5 X
  104.         for (;;) {
    / o4 T( H0 U1 Q) ~
  105.                 c = getchar();4 z4 \4 M% m! p# Q8 q$ o7 h8 ^
  106.                 if (c == 'y' || c == 'Y')
    ( h! ?  M, l: k) W. ^7 Y
  107.                         break;% H& m/ \  R! ~; Y3 t
  108.                 if (c == 'n' || c == 'N') {4 n; f9 o5 U- n7 r
  109.                         printf("\nAborted.\n");8 B$ f8 w9 \* B8 M) q( t
  110.                         return 1;3 H5 F" J" O% z
  111.                 }
    0 L; F& _" g) j+ X2 c- S! b
  112.         }9 \( B$ [2 N4 f' N* |& H6 {
  113.         if (writeparam(mac, stbid) == 0)
    # j2 ^4 G6 w& H% `
  114.                 printf("Parameters changed.\n");; x, m6 F2 Z: x" T
  115. * T' e% W" M1 m2 R& n
  116.         return 0;
    6 _% U8 d* R& k- i+ K. J1 y$ q
  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
3 k# ~  V; [* j1 K2 u+ H在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( q% B0 s! n' {. S你用的编译命令行格式是什么?3 k5 |: P% V- r0 t9 ~/ Q
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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