找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15135|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr0 V6 W7 Q* n. K6 J: j& A) X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    : |! U4 i8 U% e) ~( B2 @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:* G! `7 `9 w0 N: V9 J. f, D& i
usage: himr <address> <value>. sample: himr 0x80040000 0x0
  ?! q  q- Q# x4 [& X' s# m6 S$ A3 k6 T. D6 V0 E: @4 ]7 Z
/ M8 m' b/ Z% R) m. `' B
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 y6 o4 F7 G( K: l9 x9 [6 v" }: `4 A' F
补充内容 (2012-3-8 09:42):+ y1 `% Y$ K. v1 e" e3 ^" J; v! M% J
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数3 X$ e+ f+ `2 n: o& v4 \$ G( D
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。/ L* E4 T5 N# e( k

' P8 \7 e! v" {: f0 x$ K  L- shimr <address> <value>. sample: himr 0x80040000 0x08 x/ @6 C" T# U8 F' y- ^

+ F  G8 a* \$ H) s$ N$ Q例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。5 {0 X' L, z# i2 T1 \; E5 p
himr 0x80040000 0x00
; z6 q2 ]) H* j6 X, I6 F: [! X' \himr 0x80040001 0x11
5 j1 i* I# D/ O# s0 a- c& O4 r/ chimr 0x80040002 0x22; x; N8 ^$ k. O( P
himr 0x80040003 0x33+ {; h; u( y  o, H
himr 0x80040004 0x44
' U9 D+ _; {" ]% z8 Zhimr 0x80040005 0x55
" l7 J( A( j7 H8 Q
3 |3 R$ A1 C' w( c3 O7 QSN也是类似。4 u. l0 X$ A6 g9 K% l
$ X4 i( t- ~3 n8 H$ x2 M
现在主要是,谁告诉我们MAC和SN的地址?" b. C# h% w, I4 x6 @$ q3 Q
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* T6 S5 N9 X# y" e) X6 d2 [一直想找到运程修改MAC和SN的办法,苦于无解啊

9 a# y( [; U8 t/ N2 v源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
% h0 i* H& s, @0 m* a$ f, W* x2 w1 t: R9 k
修改的代码早有了。到今天不会编译。! |& C( w! }1 s5 Z
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 d( _# i  P6 ]4 u
  2. #include <malloc.h>
    # F1 O  }' M/ b7 z
  3. #include <sys/types.h>
    ) g( @5 P9 L3 q  ?+ h
  4. #include <sys/stat.h>) d& P" Y6 x' V) A5 k6 A7 v! Q0 X
  5. #include <sys/ioctl.h>
    ; u) t0 v* U/ R+ p7 G* ^% Y
  6. #include <stdio.h>
      W, J& I0 r& }+ r
  7. #include <string.h>
    ! }# Q7 i, _4 {! w2 l1 h2 _
  8. ! G' h8 k1 H: E
  9. typedef struct {' m# r" g9 y& i) I% [2 Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    2 u8 n* E7 e" Y$ O
  11.         unsigned int        sub_addr_count;
    + N. q7 v3 P: |4 k& M! T5 y
  12.         unsigned char*        e2prom_cmd_data;  s1 p/ }. @! ~: N. X9 A. r, R
  13.         unsigned int        data_count;2 ?& y6 q2 {7 j" w
  14. } e2prom_s_cmd;
    4 K9 b1 m& Z# ?* u
  15. " D! W( n3 T5 v
  16. #define E2PROM_CMD_READ 1
    8 k2 ^! K' z+ p2 l
  17. #define E2PROM_CMD_WRITE 2
    1 p$ ]5 g5 L) e3 t- H
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"# g& z3 L: B1 c
  19. 9 n$ g/ }- O  ?7 D, t& d7 Z7 J9 ]
  20. static int readparam(unsigned char *mac, unsigned char *stbid)$ B7 G1 j2 q7 P
  21. {
    8 k4 G% J4 \: N% B7 l
  22.         int fd, ret;& N& ]% C5 V( I6 @' |
  23.         e2prom_s_cmd arg;
    7 W' r; z5 |# U% @* Q- e
  24.         unsigned char buf[0x18];6 G' x/ A+ g1 ]0 i( O6 ?

  25. , y# ]* p1 t' p' ~8 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);0 n* s0 S6 s# p/ c
  27.         if (fd  < 0) {! \8 K. h  R! H. l& s  y6 y3 A$ u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + D) W5 J% C, y% a) \
  29.                 return -1;
    . ~5 j+ e0 ?/ `' a1 B
  30.         }2 j8 \  {# g  N$ I; I
  31.         arg.sub_addr_count      = 2;* ^# _* S* F# {( k( S0 M- i
  32.         arg.data_count          = 0x18;2 P5 ^9 M  J5 n! a# f" J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 _3 N/ I7 b! B& n/ y; t6 _* }
  34.         arg.e2prom_cmd_data     = buf;% Q' X% G* I8 y# ?( f
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ _2 z( l& |6 ^# a
  36.         if (ret != 0) {/ X) [& Q! ~/ d/ a. c- i5 m
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    . C3 b. w6 v5 f4 O" ^
  38.                 return -1;8 ]( t) C; M$ U0 e( x; t
  39.         }+ s9 l+ D8 y2 z: b3 i
  40.         memcpy(mac, buf, 6);& [5 z% N+ W$ s( R' i7 s; ?- k
  41.         memcpy(stbid, &buf[6], 18);! Q# f+ m( ^. D- Q
  42.         stbid[18] = '\0';
      `1 R5 v6 a3 T  Y6 V4 m. H8 X
  43. 6 Y6 A! C( i9 @' t3 J) v$ n, D
  44.         return 0;8 N4 o, I. G! `& @. p6 j, B; f' D
  45. }
    9 D; D6 z. e- ~0 r9 q
  46. ) M0 X4 J/ t( I+ |1 e7 o
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    : s' w% c3 ?9 E) \& Y& w
  48. {
    ! f2 e% Y; t; u$ h" s9 ~
  49.         int fd, ret;
    4 `& L+ p! _; `/ f1 a( J
  50.         e2prom_s_cmd arg;
    / d( {: d! S0 U- q
  51.         unsigned char buf[0x18];5 f4 j' @' W1 ^9 j- [( P

  52. 3 }: d$ C( Z7 S2 L- U
  53.         memcpy(buf, mac, 6);) h" w( P& s! v6 }0 b
  54.         memcpy(&buf[6], stbid, 18);
    ! O$ e' l5 o0 y& q% i3 }' x
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    + ~' G0 d/ w# Y; O. c
  56.         if (fd  < 0) {
    * u! a6 o$ K, m+ h2 q$ R6 `1 ?
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    6 }4 `# l  x: j/ [: o- Y
  58.                 return -1;
    & B7 ~; h/ A: {! n6 Y, y. ]
  59.         }
    0 M! ?1 m# w0 q5 i$ \. P
  60.         arg.sub_addr_count      = 2;, `! i! r( e# n* K7 r7 o1 g9 |
  61.         arg.data_count          = 0x18;9 {- R+ R* a- H
  62.         arg.e2prom_cmd_sub_addr = 0x290;4 X6 d* P8 t1 e) j# \% z4 M& E# x- C4 A
  63.         arg.e2prom_cmd_data     = buf;
    ( }6 X: D/ x) @) G, T8 F$ M
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    2 l2 m! Z: T0 O3 |* M& Z
  65.         if (ret != 0) {
    % P! T0 S" I0 r- U9 Q- E" \
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);# [2 k" z, R- G' J( M7 N$ H$ o
  67.                 return -1;# t, r8 c5 D1 L
  68.         }
    6 S: F) O/ I9 L7 I5 \% O" k
  69. 3 [2 [8 H! i. t9 y: |7 z
  70.         return 0;6 \; o! g; V  y" V* X9 h* h6 L
  71. }
    / f9 K$ Y/ K4 g

  72. 6 |8 e5 O7 Q$ z# ?
  73. int main(); c' z* |1 z) z
  74. {# X- f2 S- T: ^$ y
  75.         char c;
    & u! D) o6 o2 n5 h7 O( O$ Y
  76.         int i, macs[6];
    ) \0 [1 C/ m2 }3 j  d2 V1 F; j
  77.         unsigned char mac[6];
    ; D, e8 R0 K* k2 z
  78.         unsigned char stbid[256];
    ) ?2 \. c: p0 f/ |8 \! E. u

  79. + e2 P, J) L; h, p5 o
  80.         if (readparam(mac, stbid) < 0)
    , y/ n: _' H9 `$ p; r3 D1 m
  81.                 return 1;. z# p: M  q& E, K. l! U% v

  82. 7 R' O% {1 W4 ]
  83.         printf("Current parameters: \n");( ~1 b. S/ j3 ^3 [  M7 X6 M
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 Q, E& Y  ?- u) k8 ?, }" W
  85.         printf("  STBID: %s\n", stbid);
    1 c, {4 A) s% E7 |2 p
  86.         ) y4 H' l- C) F$ l
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");% x9 X2 ^' e' B, _* s7 ]
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * ^6 v9 s* K1 O) ]
  89.                 printf("Input MAC error\n");% f. I2 ]7 i; N* d0 S8 D$ Q( e. |5 e
  90.                 return 1;7 |. g9 ]0 r! p* a& i
  91.         }
    $ }$ [* f; P1 p8 A
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 {/ \3 Z8 @9 ~
  93.         printf("\nPlease input new STBID: ");" [9 M; l3 R4 }1 J; }4 ~3 G; ~
  94.         scanf("%s", stbid);
    : |- V, p0 l. f- G' O" E' l
  95.         if (strlen(stbid) != 18) {0 Y! c7 c$ [2 Q8 ]7 G: G
  96.                 printf("Invalid stbid\n");
    6 i0 q" ?& N1 Z1 C9 c! \' f& \
  97.                 return 1;
    + f7 x' M# K5 t. X  C  P# `
  98.         }
    " S% ?8 s  r+ k. m
  99.         printf("\nNew parameters: \n");
    ' e1 t: h5 Y+ {/ ^$ i* G
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);4 G) C. N. Q' B; L
  101.         printf("  STBID: %s\n", stbid);* T3 N* t; ~  V7 `# r
  102. $ V) f* b  l. q& V% n; L
  103.         printf("\nDo you want to change paramemters? (y/N) ");0 }' ~; w8 \- ^- x! P
  104.         for (;;) {
    2 Q1 n" f2 @& @9 z( w- Y* e' Q
  105.                 c = getchar();( @# M% c' {. r! w* j
  106.                 if (c == 'y' || c == 'Y')
    0 _! s2 c% x8 L( |5 f0 {
  107.                         break;
    2 {# j. f! b' m! F
  108.                 if (c == 'n' || c == 'N') {
    * u& P5 W/ d; i% \* @: K/ w
  109.                         printf("\nAborted.\n");
    . B1 K( ?, T9 h. B8 M  p& f
  110.                         return 1;
    9 D; z. R/ m; Q# h( W+ n, ]9 N/ l
  111.                 }  v4 T0 I, k1 M; A
  112.         }* l5 V' Z1 E; ?+ u
  113.         if (writeparam(mac, stbid) == 0)
    / M4 B' N2 v1 R( g8 J7 v# K
  114.                 printf("Parameters changed.\n");5 e" ?0 X2 o6 m: Z5 r

  115. ; ?3 `$ ~: M" b5 w# Z$ u, S  Y- |
  116.         return 0;: P& H) Q2 h( U( ?( m
  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 % K9 b8 D* J5 J9 \! o1 G
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

# \4 Y! n/ q0 D你用的编译命令行格式是什么?
: |  }0 S! G4 u+ y% p" x0 L
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-26 22:35 , Processed in 0.078980 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5 Licensed

Copyright © 2001-2020, Tencent Cloud.

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