查看: 16214|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
      }2 d5 X0 H9 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    * l& T. m0 u! W; v/ o& d' M  d2 w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:2 A- f0 A6 _/ _& C6 G4 Y7 Z
usage: himr <address> <value>. sample: himr 0x80040000 0x0* J6 a& E  x& C3 O$ e9 x* C5 o6 _
- T5 d" `7 }% Q: h0 B
7 J9 G$ ~3 J6 j/ T" L
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
; N/ V! |& S) ~6 Z. ?9 I$ T9 s" G; O3 [  @8 }
补充内容 (2012-3-8 09:42):
! ?5 ~7 i* G" D' |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
5 P) ~" y% G8 J" V$ B( v这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。) o8 o7 ^2 s/ I, X

) g2 G3 F3 r/ m0 y2 U& v* Ohimr <address> <value>. sample: himr 0x80040000 0x06 i4 @2 D- P, B4 [: ~% r; }

$ I& O9 i) ]0 O, E' A4 S例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。, Z2 b5 G. ~/ Z% l% b- T
himr 0x80040000 0x00( z/ M/ k4 q0 k& m6 m
himr 0x80040001 0x11/ H3 {5 M" R. G0 ]: q& n! D
himr 0x80040002 0x22
) q' W( m  ^; b. z# r' @himr 0x80040003 0x33
: k6 g, C4 R5 M6 J  z# C* Rhimr 0x80040004 0x44* l. T, L! D8 V- o4 Q3 l
himr 0x80040005 0x55/ J( A  _  T$ X6 e: G* ^6 \
  L+ _' r2 \" k7 |% ]
SN也是类似。# ]) W) [1 g3 Q

) Q: H- Y& p. m现在主要是,谁告诉我们MAC和SN的地址?
; T- u. a' Z" {
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37
' ^5 ~6 |8 w1 l: F一直想找到运程修改MAC和SN的办法,苦于无解啊

+ C$ C" k* P0 p! R4 M; O源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( G, r- f8 ]- H7 w2 `- s7 }
0 {8 p) o2 g5 ?. I, B" @修改的代码早有了。到今天不会编译。
% g. K5 T+ |1 b/ T- v需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    7 ~& x; b% i9 q1 t1 E( P
  2. #include <malloc.h>
    5 p0 K9 \6 `. O: @% J% A( M( r; o
  3. #include <sys/types.h>2 _. H+ [" J0 v1 K/ g/ o/ g, `' g
  4. #include <sys/stat.h>; g  X- O4 f2 q% D# F" K
  5. #include <sys/ioctl.h>
    3 r: q) }7 e# V
  6. #include <stdio.h>
    7 U: O/ ~7 Y: W+ h5 U# |1 w
  7. #include <string.h>! |' ]% I5 y" x( x* \( m

  8. 9 \4 [  ]3 p0 O- }2 y6 H8 S
  9. typedef struct {
    ) T' j2 W: x  ~
  10.         unsigned int        e2prom_cmd_sub_addr;/ T, Y" f; T: ?# K, `. r& U
  11.         unsigned int        sub_addr_count;9 \; b* Z/ H, g- N" {& R
  12.         unsigned char*        e2prom_cmd_data;% ~& V. s6 c. s
  13.         unsigned int        data_count;, K" M7 O2 W9 I
  14. } e2prom_s_cmd;8 |" u, P% _8 G+ m/ j- r4 C1 u* o
  15. . P1 E, t0 V3 \% v
  16. #define E2PROM_CMD_READ 19 a' m* B/ Q3 W9 E( ]2 Y9 ~
  17. #define E2PROM_CMD_WRITE 2
    $ d' b/ G+ q# p0 C9 }- b
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"% L* m' ^- y  L

  19. 2 l8 f/ @; [/ x  A
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    9 C  d7 y6 @- Q( o* R
  21. {+ J9 B. |. d( S5 T. W* s
  22.         int fd, ret;) Y% E1 ]0 O! h# V
  23.         e2prom_s_cmd arg;
    7 \4 v. u+ b% C% U7 v
  24.         unsigned char buf[0x18];: Q0 A0 K5 M! R# X2 b$ z9 M. x& w! I
  25. ' {5 M0 W) F7 _& Y+ f$ m
  26.         fd = open(E2PROM_DEVICE, O_RDWR);. H( C7 C# I% `
  27.         if (fd  < 0) {2 p. K; c# n/ U4 u, z9 a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    / w% Y, w; @2 |) _% o+ V
  29.                 return -1;" t/ ]/ o/ i8 p
  30.         }% V8 I5 @% ?! a0 u% X% h
  31.         arg.sub_addr_count      = 2;
    6 G% G" _# o% i5 D) H
  32.         arg.data_count          = 0x18;
    ( c4 @$ n  Q- n$ z4 A. |6 e3 j
  33.         arg.e2prom_cmd_sub_addr = 0x290;; b7 A4 y; h4 n3 E
  34.         arg.e2prom_cmd_data     = buf;
    ) @( r5 Q! ]( \  p- f2 l
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    $ M; m! \: @( B5 m9 |( N5 m
  36.         if (ret != 0) {
    3 Y& U) k, c* o0 B6 f0 z& q
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);' U( {& G& W/ r
  38.                 return -1;
    7 D; D; _  R( e1 Z3 J2 ]( w7 h" O
  39.         }
    : V8 ~! S# q. b7 m9 e3 i% a
  40.         memcpy(mac, buf, 6);3 b* g7 c1 h8 e, s# G" f) g9 d
  41.         memcpy(stbid, &buf[6], 18);; D  I" i1 v/ t. E: v
  42.         stbid[18] = '\0';3 I2 M1 H. ~1 ^6 \/ Q4 N
  43. 9 F$ {" F6 T6 [, ~! ~7 t
  44.         return 0;
    8 ~( f0 J1 m" o& D! f" u
  45. }
    4 d7 b  ~+ K2 _, l5 o# b) W

  46. ; E3 n, s7 p8 X( K
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    + {$ x7 ?+ Q8 O5 L" i1 s; z: W
  48. {6 X6 e( f; `. |- K2 s
  49.         int fd, ret;& T& I5 n  L6 U) T5 D
  50.         e2prom_s_cmd arg;& u% ?- W# q9 S: M0 b
  51.         unsigned char buf[0x18];; _! Z6 L8 J1 p* b5 f* m; K
  52. ; Z# R) k$ ]+ W' s$ o
  53.         memcpy(buf, mac, 6);: Y$ `- O. ]2 m9 D$ u/ ^( K: |
  54.         memcpy(&buf[6], stbid, 18);, x' n. u2 G" i4 b$ \) v9 F  C$ l
  55.         fd = open(E2PROM_DEVICE, O_RDWR);- Z- ]' q6 [) h7 e# `# R5 X; F/ x
  56.         if (fd  < 0) {
    / W( ~* t* H/ s9 B5 p4 l
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ! C7 i4 ~* N/ e  ?, I* k4 Z
  58.                 return -1;
    % S- D1 e6 F3 e5 t$ M) K
  59.         }' Q2 k0 ]0 {1 F. J" p' S
  60.         arg.sub_addr_count      = 2;
    0 e( Q9 T! ^: a" v2 ^' v9 L
  61.         arg.data_count          = 0x18;5 L1 Y5 ~/ e/ B
  62.         arg.e2prom_cmd_sub_addr = 0x290;& K  |+ @! f. q5 N. i
  63.         arg.e2prom_cmd_data     = buf;7 ~1 ]- J2 |) u, f
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);' i; ^. s4 [5 M" T5 f0 `# \6 F% X  f
  65.         if (ret != 0) {0 v: \% F/ c' m2 H" ~+ f
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
      {$ l! A& E( n0 T( l- B8 k
  67.                 return -1;3 k; S9 @$ i2 M2 a7 a4 w+ m
  68.         }9 _5 t5 @5 j5 V+ H* Y
  69. 4 Y( L$ J& ~! s2 J; s
  70.         return 0;
    . E# o: }3 P) A. Q7 q
  71. }3 b0 j$ V. h! S9 a
  72. 6 Z+ x. }, H+ T  O$ i
  73. int main()1 G1 ]$ u  {8 f9 a
  74. {$ H, S, C$ {/ P9 m* Y; j5 N6 A: P- I. ]3 G
  75.         char c;2 u0 y9 y7 |0 y  G+ h2 l$ r
  76.         int i, macs[6];
    9 W: I$ S' L- r
  77.         unsigned char mac[6];# k) R( G) V- ^0 R
  78.         unsigned char stbid[256];, ^( T" V: K5 Z. ~0 S8 G) ?7 E. N1 V

  79. : Q  @6 L* K. g; |1 t6 Z. D
  80.         if (readparam(mac, stbid) < 0)+ ^: D* k# F! f* [
  81.                 return 1;
    8 R" W6 y+ Y/ A
  82.   N4 Q" C3 I4 p! D5 @( N
  83.         printf("Current parameters: \n");$ l9 k% C; Z( ?4 X
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);) S5 Z6 F& z3 {: l8 Y
  85.         printf("  STBID: %s\n", stbid);
    2 c) p1 a' K3 q
  86.         . i- z5 V" T' j1 @/ P; @/ [
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    3 s) `5 B- R# o% O( [; L$ Y" E+ I
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {3 w# \* M. h' H+ a: s! G% I9 X
  89.                 printf("Input MAC error\n");
    0 F& g& o6 S3 Y5 Z9 @' A0 j: w6 `
  90.                 return 1;
      P" m" h5 Q8 O3 W! v
  91.         }
    * B5 P1 @8 \' `$ E0 Q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];/ C3 M9 y# A( u
  93.         printf("\nPlease input new STBID: ");
    # I2 Y% m) R% D" q9 P8 ~4 K
  94.         scanf("%s", stbid);" z1 b4 h4 T6 X% W5 H  g
  95.         if (strlen(stbid) != 18) {* e* P5 A/ x$ Z) o- J1 w
  96.                 printf("Invalid stbid\n");
    $ e) x  r- Y: g+ K- h! j+ ^$ k
  97.                 return 1;1 ?& ?; ~7 L1 O; d: K; u
  98.         }
    $ ?0 z5 j# w, _. d+ F
  99.         printf("\nNew parameters: \n");# n7 C. x6 L& r
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" ?7 \5 |' \8 y' R# a$ D3 }
  101.         printf("  STBID: %s\n", stbid);
    9 a, f$ H1 X- I& V9 C

  102. 5 S& X9 O) {( Q! S2 _: W  }
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ h! Z2 [! r9 V0 o8 L+ z2 T
  104.         for (;;) {
    % e3 v' Z) c' N5 i5 y; B
  105.                 c = getchar();+ a1 M0 ^: B: [; B9 [+ X7 J
  106.                 if (c == 'y' || c == 'Y')
    4 W2 A8 t9 i9 d/ ]2 ?0 W
  107.                         break;
    * q6 Q% n0 B/ e  B! U+ D
  108.                 if (c == 'n' || c == 'N') {
    " `! `- Z+ h$ d/ G. G: S# c
  109.                         printf("\nAborted.\n");6 t- O5 z# d) x% y- p! Q
  110.                         return 1;
    1 j# F% _; t& k, N8 F
  111.                 }
    7 Y& k! P! Y8 D, J# S& v8 J( B
  112.         }
    8 J8 ~5 F( j6 r
  113.         if (writeparam(mac, stbid) == 0)
    7 w6 a8 |: I. L1 z5 }
  114.                 printf("Parameters changed.\n");
    " i6 M7 |& w. f/ i: D
  115. 6 [  I' F' F. X& y! G
  116.         return 0;2 k, S2 O2 K9 b2 k) f/ V
  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 / K* O- O) \) G& {; Q  @) r- L+ B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
& t, d+ @/ ~- o5 S4 D
你用的编译命令行格式是什么?- q) w! U; f  \4 W% |* ]: 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客服返回顶部