查看: 16643|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr% z0 Y8 n" f2 }+ b
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig: A1 p( P4 T# n1 E
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
+ Z1 }& a$ B, w+ `1 E* j& Y" B1 N# Busage: himr <address> <value>. sample: himr 0x80040000 0x0
# B- T, ~6 ^1 ^0 g
0 G- B& K3 }( I- Q* ]9 i( G' |% A
) n3 ~+ U, |8 C0 S+ X8 R: S/ \1 V1 l不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?$ U: q5 z) f9 \5 P/ S
' P" K! |; z- d
补充内容 (2012-3-8 09:42):
# y  Y; U0 E! q* ]5 k% shttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
1 R' T8 n+ [; J* ?& q# 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 _0 N' E- S8 w/ B
, G8 I8 d: ^' g3 n5 G; e6 m4 N
himr <address> <value>. sample: himr 0x80040000 0x0
0 I7 z3 ]" `  [( |6 I& u! u
" @8 o% m% e6 C& n0 \1 z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) G4 I$ v) A/ E4 }- S/ f/ U
himr 0x80040000 0x00
# z8 I5 I( ^1 y+ Mhimr 0x80040001 0x113 o5 S$ J& J- `
himr 0x80040002 0x223 k3 O( e9 Y4 s- _+ C! b) g+ f( N6 z
himr 0x80040003 0x33, `5 X3 N/ o" C- h, W; s  k& @7 E
himr 0x80040004 0x44
, ~+ I- L1 m! j& x! b0 Q4 T6 j( Xhimr 0x80040005 0x558 N: f0 }3 B# h6 J3 C
7 i" {5 B  T+ Q' c$ E6 `$ |
SN也是类似。
$ t& [/ A& X! P
) E  f4 t0 T, }现在主要是,谁告诉我们MAC和SN的地址?
$ L( z- t) j# g" v) y9 F
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
/ T4 l5 H* ?1 A/ \& s% e一直想找到运程修改MAC和SN的办法,苦于无解啊
$ ?# c8 E; g- b: m
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ) v( G3 G0 ^: Y, S7 d2 ^* u, I

7 E. _: v* D7 ^/ q) F8 b修改的代码早有了。到今天不会编译。
4 _  L0 \0 g& j, g9 [需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    % l! B( c* X/ v
  2. #include <malloc.h>
    # X, N+ v4 B: ^# f0 {- G, {  A
  3. #include <sys/types.h>
    ' y5 P/ B- x) g# P, |0 D! }( c
  4. #include <sys/stat.h>
    / Y0 |! E% j: T% \5 P( @5 B
  5. #include <sys/ioctl.h>- I" g( K$ g4 f" s
  6. #include <stdio.h>* ]9 U: H) G: h5 C
  7. #include <string.h>
    # _4 ]3 g) z, M: C. v  {; q" \! b
  8.   O0 J( A% u( s( o+ {/ s
  9. typedef struct {" E0 I% t" p* V0 a0 d
  10.         unsigned int        e2prom_cmd_sub_addr;& ]3 t" x3 f; I4 f7 q
  11.         unsigned int        sub_addr_count;8 h+ q5 p2 w& h& @9 i0 h  E% l' J
  12.         unsigned char*        e2prom_cmd_data;3 ~0 n+ l! p+ }$ i/ y% ?/ K
  13.         unsigned int        data_count;7 e% Y3 r0 [& g0 `  i
  14. } e2prom_s_cmd;
    ( _5 |' J6 R) A  s
  15. 5 j1 x. i9 v  l. w3 i
  16. #define E2PROM_CMD_READ 1
    " X4 N1 G& {$ C6 U3 d
  17. #define E2PROM_CMD_WRITE 2: I7 [4 z' R4 D" Q  m9 x% A1 d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    - a% M8 V% H" \4 X6 X

  19. : w4 l9 m8 [* A$ n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , `- s  f& P! v5 P9 B: \2 V; M/ k
  21. {7 J: L2 l" }) v& @3 t
  22.         int fd, ret;' P  \% z7 [5 _- Z1 m( r
  23.         e2prom_s_cmd arg;' C2 i8 d" ~; }2 p
  24.         unsigned char buf[0x18];
    5 p3 H) |% F- M

  25. 6 c& h% D+ w/ B8 P- V! x, H: W
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# ]# L5 W3 E6 G8 ~
  27.         if (fd  < 0) {
    0 H, h4 y) Q* l
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 \3 t# B0 O4 c
  29.                 return -1;
    7 y5 B  {" `) |; }9 P
  30.         }
    * ]- k1 K! O/ W+ \+ b
  31.         arg.sub_addr_count      = 2;
    5 \1 }# ~) o% g& k+ S! G, G( \
  32.         arg.data_count          = 0x18;
    0 o  c5 R# N5 {! [
  33.         arg.e2prom_cmd_sub_addr = 0x290;2 y; Q3 T  t5 f% O: B
  34.         arg.e2prom_cmd_data     = buf;  z; C% @: V) f+ r4 U
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    / g8 f# s" F9 M- u% a0 j
  36.         if (ret != 0) {8 x2 I( |4 P4 }; S; [
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 N# A' r9 t2 q) Q7 |- W
  38.                 return -1;3 ^3 i- s7 e8 N3 a! U# f' z
  39.         }
    " r! \( b' M( W" N- l, L3 U$ l' d
  40.         memcpy(mac, buf, 6);9 s# ?0 L8 w* D0 z# g- g
  41.         memcpy(stbid, &buf[6], 18);4 S- Z6 Z, _3 V% o7 l
  42.         stbid[18] = '\0';/ j! `9 d" s4 R6 |
  43. & |) j; u" m0 R( a* P& [2 T9 D: w- o8 f& w
  44.         return 0;2 t! f+ ^0 p( j5 f9 t+ G
  45. }
    ' _% O: J8 y: T2 r8 k; w
  46. 8 u. ]2 {8 h5 O( r7 `  [
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)& C0 Y- ?5 A7 C" g; ?
  48. {
    6 c! E: M& X! [# ^7 T9 Q
  49.         int fd, ret;/ k9 n, D# W# m& ~1 M6 o
  50.         e2prom_s_cmd arg;- M9 N1 `6 c% l8 [' x! b
  51.         unsigned char buf[0x18];0 m4 K$ {7 d, f5 W

  52. ' i, d- I; N/ H+ Q3 f
  53.         memcpy(buf, mac, 6);
    & F0 {. D5 z% L% Z& q* V7 n% F
  54.         memcpy(&buf[6], stbid, 18);! }3 N  n' K! K' Q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    1 p1 K, t8 T( A- r  n( R8 {2 X8 V
  56.         if (fd  < 0) {' G3 ^& g+ P/ S+ e3 `' ]
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    1 ^( ]' w9 n3 B1 p( q" I/ p% r9 E& @
  58.                 return -1;+ t; E$ A0 u: Z
  59.         }8 d2 e) `6 c) G" p  ~/ ~2 c! g
  60.         arg.sub_addr_count      = 2;
    & z  c( T. D' w9 g3 G2 y/ d2 @
  61.         arg.data_count          = 0x18;7 `' l4 I# H* |6 B, |( A. d; O
  62.         arg.e2prom_cmd_sub_addr = 0x290;
      Z: K; y1 T  l; u4 S! C+ J
  63.         arg.e2prom_cmd_data     = buf;+ C2 a2 k3 K7 \/ ^
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);, _) C- _5 |% e
  65.         if (ret != 0) {
    % f& ?  S) w: D3 h* I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    3 X; y( z9 _$ u" h% b
  67.                 return -1;
    1 R& w( O  {+ B8 D& R* F" A
  68.         }
    % \4 F5 p: j0 S4 h3 s+ Y
  69. ) c6 v8 E0 f1 W- b6 D% b
  70.         return 0;
    9 Z; a) [; w. b  ?# C  W7 f: x6 D
  71. }
    ; A9 ?0 V1 s1 i! j/ I! [

  72. : o$ f4 P  T$ o; V, l+ c
  73. int main()# W$ J6 A- ?2 \; j2 ~/ j
  74. {
    8 ~! P* S, ?7 l) {% j! M
  75.         char c;
    ; b& G- f/ c/ I& a" {% o) S
  76.         int i, macs[6];) F" i5 E: y4 Q
  77.         unsigned char mac[6];; G" r; U2 f7 v  y9 q" U7 b/ `' y6 r* k
  78.         unsigned char stbid[256];6 h" W- @+ |. O+ b: ?- s
  79. 4 G, \4 t, y  a' D! r
  80.         if (readparam(mac, stbid) < 0)
    ; _) D, N) O' z( Q( r" @. t
  81.                 return 1;1 I% A' D  m1 t  U( u$ {4 v

  82. 1 D  M0 |' T; ]* V, ^# I
  83.         printf("Current parameters: \n");) ?( {7 y  E4 t! z5 J& i* h. Y
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ) V( W1 H0 ?5 l. u& j+ P
  85.         printf("  STBID: %s\n", stbid);
      H7 b% n& R* Q. ^7 k" ~
  86.         $ B, R& `2 B$ \0 c" X4 g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 V/ `# M8 m8 l9 _* ?5 u
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    0 ?0 c/ ?( I0 U- T' f( ~) p
  89.                 printf("Input MAC error\n");
    1 n3 V0 u0 H/ G7 Q2 c% y; _  J  l
  90.                 return 1;
    9 y) L0 N% t! ?/ l% u* F% K3 ?  N
  91.         }) ]+ a8 A+ m( x$ x, V& o6 h9 U
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- J- \1 Q  Y: d; h0 ^; B. d
  93.         printf("\nPlease input new STBID: ");5 @# K" U$ k, l
  94.         scanf("%s", stbid);: K5 I' z% [* j% T: r* d* P
  95.         if (strlen(stbid) != 18) {8 U! B, e# a  F% P# E: }& J5 E
  96.                 printf("Invalid stbid\n");
    . r8 Z1 |" I4 O
  97.                 return 1;
    3 \9 z: ]' ~4 D7 e
  98.         }
    " N. P8 X  ]2 E- V& j- a2 u5 \
  99.         printf("\nNew parameters: \n");) l, ]& T# Q1 b3 N" ]3 N
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);7 v5 }$ ?  A' P7 O7 @
  101.         printf("  STBID: %s\n", stbid);+ M% m2 B. [* H

  102. % O" C( k7 ?! Z  O4 ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");6 F- _) y! z; |. K- f
  104.         for (;;) {
    " g" F7 D) v, H  ]9 L2 v
  105.                 c = getchar();, ^( K4 j& C4 T8 n$ ?; S5 d
  106.                 if (c == 'y' || c == 'Y')
    ; C3 H1 g0 G+ h- Z
  107.                         break;8 l" ]: U# s9 [& z* u- }% I2 E
  108.                 if (c == 'n' || c == 'N') {
    : j8 {" _+ A9 A6 Z9 t# L
  109.                         printf("\nAborted.\n");
    * }, j; s* t, S# K* l( S2 {
  110.                         return 1;
    / o- d( Z' J( Y! m* i" h# B( y
  111.                 }3 [1 q" B4 t, t! ^6 R
  112.         }
    ! X7 ]% S9 C) P. r
  113.         if (writeparam(mac, stbid) == 0)
    9 B  d2 C1 b. }; b, u9 w% c
  114.                 printf("Parameters changed.\n");4 {9 x3 k- b/ J: i
  115. 9 [) L9 a% @  I9 m# S
  116.         return 0;) U2 |, n5 l+ T: `2 S* R% ~
  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
6 o* T* h5 ]% J! Q* [3 ~" p在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& h$ G% o4 D* U; \2 n: F! j
你用的编译命令行格式是什么?
2 L( n" Q& Z  F% ?
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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