查看: 16836|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    " u; M; W& ~* l2 H( ~& ?" ]$ x. l
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    7 c$ m4 H8 t3 l' [$ P( F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% c0 y$ `0 j' U. |5 I$ {usage: himr <address> <value>. sample: himr 0x80040000 0x0
3 H) W3 n: m" g+ U, `' k, I
: h- ?/ ^5 L0 v1 j9 j; [) T' K2 J* Q
9 h: v" z3 e1 ~+ u1 N9 q不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
! K: o5 B: ^$ A4 a$ [. H. Y) q! d# t' `) I/ z; d2 u
补充内容 (2012-3-8 09:42):. |/ W& m# ^# V* I$ C$ h1 ?' q5 `3 O
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% A2 v1 q8 t* G: Y0 i这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。' [* x4 ^2 r4 X+ \2 h# m
: y9 u8 _4 ^- d& ~! _4 K% Z; d
himr <address> <value>. sample: himr 0x80040000 0x0/ B( j+ E% l" ^  p7 k9 n6 z, L
. ]/ G5 h3 c% ]* n: Z; m; c+ w
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。; e( N% q) I' S, v8 p
himr 0x80040000 0x00
$ O) _9 K9 ]7 [himr 0x80040001 0x11
% a/ L, e: N/ h: W' {himr 0x80040002 0x22- j1 G6 {6 M+ i) h2 k9 c# c" Y
himr 0x80040003 0x33  R# Q" n5 R9 C* {7 [
himr 0x80040004 0x44
: \% v. t4 P( ~7 ^himr 0x80040005 0x55
% J1 E' v3 f: f* B$ V
0 i) p8 X) |- w& j; Z* kSN也是类似。* d9 i8 b( |+ y* n

# d1 r' G* A  k/ t0 Y" H现在主要是,谁告诉我们MAC和SN的地址?& a" i! a" \, G3 ^5 {+ M3 W
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
. a( l% a( O  j0 l( A  z5 _一直想找到运程修改MAC和SN的办法,苦于无解啊

; R9 ~4 F3 N# {& u源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
) Q0 F' M: ~1 N$ O7 Y% F% p' F
( P3 _. ]/ W7 w2 e. A+ R修改的代码早有了。到今天不会编译。
2 A" x8 r1 Z) F8 w+ N! L% m3 I需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 w, y! F. \: _1 l# ]% {
  2. #include <malloc.h>
    ( u& M: u# u% T8 _6 k* W) Z+ H
  3. #include <sys/types.h>' f) x" Y  D/ D% V
  4. #include <sys/stat.h>2 ~$ N0 C! ?0 ]; C
  5. #include <sys/ioctl.h>) j. W: K! l2 D' g( f
  6. #include <stdio.h>
    9 e) o  p6 u9 A
  7. #include <string.h>* y4 I8 u& ]( `! _. n- M

  8. 4 v3 O' D) Z/ W: I3 [( K
  9. typedef struct {
    ; k6 H. b2 x. g1 z
  10.         unsigned int        e2prom_cmd_sub_addr;
    , O6 Z( f) U1 }
  11.         unsigned int        sub_addr_count;/ h+ Z1 r. r: y  s' {1 }, i
  12.         unsigned char*        e2prom_cmd_data;& r) C: Y: e+ v" X6 u# }/ o" K
  13.         unsigned int        data_count;# H) C$ `* b# v8 u) P4 Y: ]
  14. } e2prom_s_cmd;& z# a& h- R& u% J! r

  15. / w+ b- O) @" e4 q: R; Y/ L
  16. #define E2PROM_CMD_READ 1
    : p2 X. I: {8 E3 O+ r0 a
  17. #define E2PROM_CMD_WRITE 2
    / u5 [4 q) f$ Q2 _, _0 ?
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    : I# ^8 U& Y; a- |0 j+ _
  19.   r% C* y# r, X; X/ y3 |3 u
  20. static int readparam(unsigned char *mac, unsigned char *stbid)( L& X5 h( X) c7 B. }0 a. i
  21. {
    2 O8 ~6 y3 i" H" O, r, k, X* P1 v
  22.         int fd, ret;5 M2 ?1 k5 ~5 T1 j, ~. M
  23.         e2prom_s_cmd arg;9 }) ]+ z# A: c: A8 H7 p- o* h1 B
  24.         unsigned char buf[0x18];
    / p# q0 ~3 X# x$ t8 _- C+ v
  25. ) \  H; Q5 @0 x; T* L; j  Y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);; L  y9 z  {7 Y4 j- ~- {2 {7 c
  27.         if (fd  < 0) {
    7 Y% R  F: `4 z3 h" Y* A' P
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    5 g5 A+ {+ Y2 Y' h! o3 l
  29.                 return -1;2 I& l0 J) ~8 Q( T4 e- L. D
  30.         }
    8 W2 }0 b" M, @( Q0 V
  31.         arg.sub_addr_count      = 2;
    % H( |" o# P, L$ j5 y& u
  32.         arg.data_count          = 0x18;
    & c6 l% H" v) g4 w6 P
  33.         arg.e2prom_cmd_sub_addr = 0x290;" Z) K$ v' Z2 L! V4 N) q
  34.         arg.e2prom_cmd_data     = buf;
    9 B; p1 j1 {( C; _6 u( N0 y
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);$ L8 Z: f/ i4 q" A
  36.         if (ret != 0) {: _+ g7 S! t/ U9 c3 ~
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    " u( o. S. B2 D4 ~# N7 f
  38.                 return -1;
    ; v% j/ F0 {( V; c; A  P* L7 R! H) a
  39.         }
    2 f+ O& D% o9 a: m+ ~8 Z& Y6 W
  40.         memcpy(mac, buf, 6);
    3 a! Y/ r( `, h( I( l
  41.         memcpy(stbid, &buf[6], 18);
    - \2 L" u! W% D: I' x# w) d; m
  42.         stbid[18] = '\0';
    & _/ N. S$ {" @1 \$ E5 Y
  43. 1 _8 C) _5 b4 ]
  44.         return 0;
    7 P3 p9 y6 W0 M3 n. f0 s* F3 ~
  45. }, O! v2 n$ m' U6 y2 W* f

  46. ( b9 f) H* A+ Z. r
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ; L: z) r$ n/ t, K' q* z8 S
  48. {
    1 S( k% `3 f: Q; L/ x+ q3 T" A
  49.         int fd, ret;
    5 r$ b+ U; m9 T3 @" L, i6 p
  50.         e2prom_s_cmd arg;
    ! k2 M% h' _* v" A, ]' R
  51.         unsigned char buf[0x18];: |9 n' [* w" {
  52. 4 ?, y  e* f8 [2 E( P0 K
  53.         memcpy(buf, mac, 6);
    ( u2 h* s9 A7 \' I- [) Z
  54.         memcpy(&buf[6], stbid, 18);
    ; T% j+ [$ q6 n  N  f7 x8 \: W  f) A5 I
  55.         fd = open(E2PROM_DEVICE, O_RDWR);! D0 a, E) b3 b0 Z$ n
  56.         if (fd  < 0) {' l, ~( X9 c2 @/ N' y
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 A0 h8 D; e2 V, \6 T$ o; j. @
  58.                 return -1;
    + }. J) V" U3 [
  59.         }1 L0 ~* M0 {$ M: a- J! _: J9 e
  60.         arg.sub_addr_count      = 2;
    - l( o0 f% n6 V* h( \
  61.         arg.data_count          = 0x18;
    ) ?% o9 r* n: o9 c5 N; V3 B
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    + P  g( p, N" C7 I
  63.         arg.e2prom_cmd_data     = buf;
    3 [* z; w2 D7 ?7 ^2 q
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);* u. z. X  C5 _' h3 h8 Y) S/ K- Q
  65.         if (ret != 0) {
    + u- U, X' H" z9 \& Q9 n( Y8 u
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);1 ?& G8 z4 e  Z0 f/ K7 `6 t2 W
  67.                 return -1;
    ) h) O* j9 _9 H1 f3 c, n
  68.         }
    % s: q1 g: h, E/ n1 n
  69. + a8 ]* s6 p% U- D
  70.         return 0;
    $ R9 ~& [: E+ ^) _) q9 W' l
  71. }' |0 k8 i; u5 |! b7 z+ q4 J
  72. % M+ l: R& j# o2 D* M
  73. int main()
    1 J6 l0 d& o' a
  74. {* B: E) ]# {( X8 l, J/ V
  75.         char c;2 U8 D, J2 ?. N# H9 G
  76.         int i, macs[6];0 U  }* v8 j- s& L
  77.         unsigned char mac[6];
    1 J/ D$ A- i) k4 K9 C' m
  78.         unsigned char stbid[256];
    $ b0 ]5 v' X. _3 j( G: s/ Y( c5 i2 R; M

  79. / \. W$ u2 g8 ^( Z& V0 d' f' G
  80.         if (readparam(mac, stbid) < 0)
    ( o8 n. H- }- N8 [
  81.                 return 1;$ ^( J$ u, M9 \

  82. 2 W+ v4 _  z8 C- r2 k+ t$ i! I
  83.         printf("Current parameters: \n");! e- x$ O# R0 w# h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: ~+ Q" z+ H3 U. |! \
  85.         printf("  STBID: %s\n", stbid);. n+ \2 [3 S  M$ |
  86.        
    % x( K$ V5 w8 ]; ~7 _
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    * c) J, y9 j3 z. {5 f
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    ) B/ [) P$ n# u! x% F) b
  89.                 printf("Input MAC error\n");
    1 |# }- V. F2 H. A; U$ X; w; Q
  90.                 return 1;" g5 n* F* b7 Q9 u7 V
  91.         }% D) ?7 z5 z; ]0 K( j" i
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    + Q/ @4 O+ j, K7 I2 D. s, g
  93.         printf("\nPlease input new STBID: ");, D6 K. v5 t6 o: N2 g8 |8 X/ w
  94.         scanf("%s", stbid);, i% h% @. G/ N4 q" I& H- h
  95.         if (strlen(stbid) != 18) {! s* h7 H3 T! E% X2 }
  96.                 printf("Invalid stbid\n");
    - d6 i# d8 E- O3 z
  97.                 return 1;
    : E: `- |9 s  B
  98.         }
    ' x' w0 q* f# |3 |. T3 \/ Y
  99.         printf("\nNew parameters: \n");
    ( I7 y. ^+ \7 r" r3 R
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    3 O" {. I8 ^8 F! R2 ^% C# t. d
  101.         printf("  STBID: %s\n", stbid);: c8 _  }7 Z3 T5 @0 O
  102. 2 \# g( ^! ^' e1 E6 _0 l8 ]  Q
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    / Y3 v: h0 Z" G2 o8 E
  104.         for (;;) {
    6 N* k' [6 i6 }* E6 ?4 k
  105.                 c = getchar();$ w* y0 a8 q) {8 D7 o/ `- P
  106.                 if (c == 'y' || c == 'Y')
    " `* D7 Y# i) f4 s0 H# Z
  107.                         break;
    0 o8 ^, }  C: w+ K9 Z
  108.                 if (c == 'n' || c == 'N') {3 X5 B6 W1 M* R' j# M
  109.                         printf("\nAborted.\n");4 a* A- `. N( g& [* w
  110.                         return 1;$ [/ G# m; Y" i6 C' m
  111.                 }
    9 A& V# f  N% D
  112.         }
    9 d& w* Z# Q1 r6 j* M
  113.         if (writeparam(mac, stbid) == 0)
    ) ]/ H) L9 [# j9 B( Y
  114.                 printf("Parameters changed.\n");" n" y2 i6 |) t* C* g5 Q, p

  115. " W) u+ c4 O* g8 G2 ]% w! b) ]
  116.         return 0;
    4 L, v5 w5 Z, R6 c% H" _
  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
$ Z, d& j- r- p; z在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 e5 }. j6 p) \- g/ y. h你用的编译命令行格式是什么?
7 i8 n& A6 ]& O9 G" G- p
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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