查看: 17701|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 ^* Q! E! Z9 @- S1 D+ f' o1 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ; r/ a3 ~" M6 k* @: K$ T& Y
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
% C1 e& p8 {+ v! p+ Dusage: himr <address> <value>. sample: himr 0x80040000 0x0. m/ K+ s8 h2 K5 N0 o

4 A0 }; `9 X* n1 x/ O+ t# d2 O) V- e7 `* v' c
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
' J* ^4 i7 q/ O' }) a3 @1 T3 H5 Z
! s1 Z# H# e; e. n* o补充内容 (2012-3-8 09:42):
9 f2 ~, c+ t- e; M! O" S2 L- w/ F' xhttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数  M* i1 @8 V# N. q( [( u" n/ J
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
+ n* S8 W* o% Z2 Z
5 x7 Q: C; w3 M! J- {8 @himr <address> <value>. sample: himr 0x80040000 0x0
" c! [1 v6 O- E0 m( b. \4 m/ t7 o4 S5 r
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。' B8 Q2 G6 w" H  z" W1 G+ d
himr 0x80040000 0x006 q/ S% y& o* e+ H% p( @+ P
himr 0x80040001 0x11
6 ?5 A9 v- w# Q: B4 ?% T% A+ vhimr 0x80040002 0x22, K- B2 h  _# D+ J# t- ^* C
himr 0x80040003 0x33
4 q5 x+ `2 ~# k/ u. Yhimr 0x80040004 0x44
# W, e- s3 ~4 f; r) ~7 U! vhimr 0x80040005 0x55$ }9 a6 R- L& P( E9 n8 n" b! a
8 X& ?+ U& d. c6 K8 Q
SN也是类似。! @" S( p/ M+ ~5 K( [
* S( C6 y* O8 C. z% S8 p: e4 J
现在主要是,谁告诉我们MAC和SN的地址?) k& Y- {9 E# H3 y
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 D- ~* n5 B7 D2 [, r8 V7 @7 v2 {
一直想找到运程修改MAC和SN的办法,苦于无解啊

/ w1 A) u% }* |4 G7 l* r: X% ^* Q源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 1 |1 e3 @$ j% H( \
& R9 f! h$ Y$ }' [
修改的代码早有了。到今天不会编译。1 ~  u$ {" t2 [  x  ^4 g+ A
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>7 C8 K4 d' T4 @: E- D1 w
  2. #include <malloc.h>- o' k' C; \: \6 C
  3. #include <sys/types.h>9 ^, e! |* @/ _! p$ C( j6 r' m2 P
  4. #include <sys/stat.h>7 x( @/ u7 r: ]: }
  5. #include <sys/ioctl.h>
    3 a" K0 i+ }; f* v- ^
  6. #include <stdio.h>' m2 ^8 C/ j: [
  7. #include <string.h>* r% g' E6 x/ ^) [( j1 k

  8. : m4 Q& Q  D- ]9 D
  9. typedef struct {9 f$ f' x3 q" H( ^1 j  i% u
  10.         unsigned int        e2prom_cmd_sub_addr;
    # R2 V9 ~: }. V) i7 i
  11.         unsigned int        sub_addr_count;& o; J/ i& v  A- W% Q4 {8 o9 @' Y, E
  12.         unsigned char*        e2prom_cmd_data;
    % M# r8 t" I9 m, X! x) B, A
  13.         unsigned int        data_count;0 J) A  A& I9 J' X& A
  14. } e2prom_s_cmd;9 l+ u; J# V5 l/ m. f

  15. ' U) d6 z7 ?. y' J8 J
  16. #define E2PROM_CMD_READ 1" ?: ~" ], U* S; S% _4 L
  17. #define E2PROM_CMD_WRITE 2
    & G; w4 H6 r' z1 ~6 q6 n+ u( c$ g& q
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 T: n; u& z% M; s. w4 N
  19. # l$ S; W& P: G  I. m4 Z: J
  20. static int readparam(unsigned char *mac, unsigned char *stbid)# G: P- ~2 m# ?( Y9 p$ ^( u8 o
  21. {
    2 B- r9 T; V% I. }
  22.         int fd, ret;( o7 e$ C, L& c7 \
  23.         e2prom_s_cmd arg;
    8 T1 U0 T6 }" N9 h
  24.         unsigned char buf[0x18];. s* |, i8 g/ y. G1 S

  25. + ^% X: V2 i  y6 S. U
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    & g- u, c& s0 G. u- J+ W
  27.         if (fd  < 0) {; b' u7 f$ M7 R8 X
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    + Y4 q/ e8 Y" u6 m# ^8 @& r
  29.                 return -1;
    & w! Z. n- k+ O, t0 z3 v% F" I7 O5 e
  30.         }
    1 j+ x" K% s! U
  31.         arg.sub_addr_count      = 2;: k! _% L: ~2 r/ b
  32.         arg.data_count          = 0x18;( r  M& d. W$ k% K# J
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    7 x( C; m# c2 s; U& n0 L6 P
  34.         arg.e2prom_cmd_data     = buf;
    ( k: ?- J( y/ i) B: K
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    - R! A# y+ d* |6 f
  36.         if (ret != 0) {2 O7 k# C" _2 p5 g; M4 p
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * P3 j  g3 U1 [& X9 c% w5 M7 g
  38.                 return -1;
    / B) |- R: |! I1 {$ a* F
  39.         }. _% b( Q# K1 f" i0 _! Y0 F
  40.         memcpy(mac, buf, 6);: D0 |5 i: r- e1 r" \
  41.         memcpy(stbid, &buf[6], 18);: C& o1 j  K% i# C- m
  42.         stbid[18] = '\0';
    ! A* |# ]8 A2 Z; N! t1 y/ C

  43. ) |! O* C) j( B
  44.         return 0;2 ]( ^1 E5 g6 S7 x8 |
  45. }& D4 t9 v$ t- O0 l4 A

  46. 6 Y3 T2 n% |. a& E: g
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)$ y. @, f9 s" z! e1 J
  48. {
    : @/ a2 j: o8 _( d$ d) l# x5 g
  49.         int fd, ret;
    . i- L* |* V+ p8 l
  50.         e2prom_s_cmd arg;
    # T% |( M9 @' J3 _' m; D* o# o8 E/ a
  51.         unsigned char buf[0x18];" p& a3 Q: d* S! U4 M# Z- i8 M

  52.   r7 X, R% m8 c: ?# k. V
  53.         memcpy(buf, mac, 6);
    : {5 H! t( }: ]  c) C; {  t
  54.         memcpy(&buf[6], stbid, 18);
    ( ~% S/ r* u4 j: @% Y1 A
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    " o2 j( o' w7 U7 C* y: D2 Z. B
  56.         if (fd  < 0) {- `1 v0 G( C7 f& v& q
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);1 ]7 @+ R5 R3 h7 z) t7 w9 Q5 o/ N3 Z
  58.                 return -1;+ J! i- Z: @9 v
  59.         }
    / q& V; u. o3 L" I5 a
  60.         arg.sub_addr_count      = 2;, g, ]3 R) `( {
  61.         arg.data_count          = 0x18;2 A2 K/ @' ?  p; Y& L  Q
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    & y- `* H' l* \6 C. J' |4 h) |
  63.         arg.e2prom_cmd_data     = buf;$ i) {7 K: h* t3 W9 ^6 P' v
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    3 u5 f& O4 T  t! A
  65.         if (ret != 0) {" Q8 C2 t; J; W8 n7 d) l5 I
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    & Q7 b) N! F# _/ _% N8 f7 [* S8 N( h
  67.                 return -1;% D8 e% `+ ~9 F* B/ N. a7 s
  68.         }
    ; O( k& q/ f/ j! I5 q5 \
  69.   Z) C% F5 P4 h1 o* V
  70.         return 0;+ g$ H2 ^3 i, g6 G+ f+ r7 j: }5 I
  71. }
    ) d; t2 ~" i* U, X1 R
  72. ! S  l, M% j9 z3 m3 u( S
  73. int main()
    # l0 F: x2 h* K2 N" ]: ~4 A
  74. {2 }5 p0 F" e  o3 U
  75.         char c;: l8 b' e- _7 P
  76.         int i, macs[6];/ ?9 V! d0 C) i* M
  77.         unsigned char mac[6];' S3 ^# E- d- w% m6 S  c& M
  78.         unsigned char stbid[256];
    4 I# {4 v2 R4 [2 T
  79. : K5 h! R: v7 H" `) ?: z
  80.         if (readparam(mac, stbid) < 0)( K1 {' Q5 _. H! Y. W& ]; [& [
  81.                 return 1;% \' V) S  G# _  `# P* s+ I
  82. / T# x9 R0 k/ _, o8 I3 ]
  83.         printf("Current parameters: \n");
    $ k0 c+ V6 T- s6 x) a
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ; {$ U" u$ i3 ?# M* H9 M  p
  85.         printf("  STBID: %s\n", stbid);! n) q- N6 b! t: A  O  b5 r1 ?
  86.        
      D- h$ I0 Q% |3 T$ C7 @
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    + [" g; d. [- s
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    1 q; e( ?- r. ~
  89.                 printf("Input MAC error\n");
    6 w  @, a5 M+ h! A. R- h1 y$ ]
  90.                 return 1;6 p* }4 K8 |2 k4 n$ w+ x& s7 o
  91.         }5 P/ N- F" O7 d9 q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    3 X/ E" u8 p6 U, B7 @
  93.         printf("\nPlease input new STBID: ");& ?7 i9 f1 S/ Z+ I' [9 a2 k
  94.         scanf("%s", stbid);' |& ^0 ]) _* b6 H, [
  95.         if (strlen(stbid) != 18) {
    . |  u! E" S' u$ A# H
  96.                 printf("Invalid stbid\n");8 x6 L9 N0 E0 b
  97.                 return 1;! _! g# w/ e+ }2 q( `3 @' r2 R
  98.         }
    " _) ^2 a& ]' }* u6 P8 j$ |4 o
  99.         printf("\nNew parameters: \n");+ D1 A( }# `0 _4 F. ?
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. S) _' y1 _) v( Z; G
  101.         printf("  STBID: %s\n", stbid);4 I9 \# a  k& f9 Y

  102. 7 S! f/ s! |% C3 L6 Q/ I( z+ L
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 P% \; `1 p$ ?* U8 \
  104.         for (;;) {
    ; Y8 o& S  f+ _4 n  |+ v; d; j
  105.                 c = getchar();
      p4 D; r0 ]3 v) ]( d9 M) ~  e# T% w
  106.                 if (c == 'y' || c == 'Y')
    2 _6 r; f" `% H9 k; I8 |6 ~$ s
  107.                         break;4 k5 m6 P9 b, D" a# J6 _; M
  108.                 if (c == 'n' || c == 'N') {. B  ^6 ?5 P. H4 W
  109.                         printf("\nAborted.\n");3 _5 H  h8 t' A& S- ^' k/ O
  110.                         return 1;; q, _$ S% X3 Z0 n6 l: u* k& Z
  111.                 }
    % ~7 R1 @" ^  D% j0 e
  112.         }
    , e' m" a3 S7 [  g; S
  113.         if (writeparam(mac, stbid) == 0)
    0 Z# d6 Q8 q4 ~5 ]! Y0 b7 {
  114.                 printf("Parameters changed.\n");: j$ t9 ^7 H, I  d: k3 @+ }
  115.   E+ F# P+ C: o; v
  116.         return 0;
    ) Q" V  C; W% d2 E
  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
- M; i$ V0 w0 a$ x* W# W在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

2 V" Z: D* U- H8 z: o0 \5 j/ Q你用的编译命令行格式是什么?
- \! _# z' _; I& u7 k5 G
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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