查看: 16784|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr6 g7 ]' Z% v8 {' X
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) @- o  C8 Z9 Y2 o$ b7 h' O
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
. F( q+ T/ q7 Fusage: himr <address> <value>. sample: himr 0x80040000 0x0
; D; x! F8 h: C* j' g& Q5 b% g) _9 I: z" |5 ?

+ D: ?; X* x% {不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?' }6 l1 ]6 [% L+ @% f- P; M* Q

; K' e3 r: u; W& t补充内容 (2012-3-8 09:42):+ H7 e* f3 M4 t- R
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
$ `5 l: w* v$ M* M这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。  l: Q8 \1 K# S4 a% H, \# O" P# a4 r
8 G" `* ^! e, N0 `4 d
himr <address> <value>. sample: himr 0x80040000 0x0+ o# J( p4 |6 b6 l( T
+ |9 n8 W" }& P- A" v4 ]7 X
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
% X1 Z. n' }9 d* I0 Ghimr 0x80040000 0x00* b4 q4 S: q0 I
himr 0x80040001 0x11
+ J% R2 L* V6 T2 C0 [' yhimr 0x80040002 0x22
! Q% ?  Y5 A$ V: O$ ghimr 0x80040003 0x33
  R/ J, A# O/ s6 q; t1 nhimr 0x80040004 0x44  l4 |3 O1 j1 Y2 _+ Q
himr 0x80040005 0x55
: y& E4 z4 U) p, N3 s3 f
: K" Q3 t- z' \' x$ p( A4 ^, @6 xSN也是类似。
0 D9 R  z% w% M8 T0 T2 B
: I) ]- q$ a6 W现在主要是,谁告诉我们MAC和SN的地址?1 s3 {$ \% c8 |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ; Z8 I+ W# w* y. x5 T6 [
一直想找到运程修改MAC和SN的办法,苦于无解啊

9 q# _% O7 R- P# l& A  w源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 5 t$ ]9 h$ p7 z7 ^
) i/ s2 j8 I- M3 g
修改的代码早有了。到今天不会编译。3 l0 u" y$ ]! _* k, Q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    $ l' h, j+ s+ T8 _, ], t  }3 ^
  2. #include <malloc.h>4 Y) z" \/ [* J) t9 q* p0 I* P& T
  3. #include <sys/types.h>- F1 j' s, ]: H  G. N& j
  4. #include <sys/stat.h>0 H5 _: M1 P! \
  5. #include <sys/ioctl.h>
    / T9 T# z0 l+ n, n- y0 B8 e" D
  6. #include <stdio.h>; O, e6 y; f1 C0 A6 R
  7. #include <string.h>3 O8 w/ f+ H' @1 F* C
  8. $ w  F' O: `% T8 G. r  w1 N
  9. typedef struct {
    1 a+ ^" ?$ D) A0 ^  [$ p5 @
  10.         unsigned int        e2prom_cmd_sub_addr;
    ) P, z) F+ K5 ]
  11.         unsigned int        sub_addr_count;$ n: H4 S1 J1 s7 R! l# @8 W) c4 i
  12.         unsigned char*        e2prom_cmd_data;; N8 ^6 M. r: z
  13.         unsigned int        data_count;
    ) I+ a% e( }9 C" f
  14. } e2prom_s_cmd;( |4 G; b* z) v) Q( I2 }

  15. 3 Y$ C# m$ O9 O/ h3 ^1 o
  16. #define E2PROM_CMD_READ 1
    7 h3 c4 l) c- E2 M" {: k
  17. #define E2PROM_CMD_WRITE 27 O! ^7 n2 t5 S; R5 j
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"0 L) I2 k4 q, D5 i0 `2 j5 ]. ?0 z

  19. " K6 ]1 G4 E' S1 T: m( x0 U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)! [+ R+ c8 H% L  r0 ?
  21. {9 y1 J0 B( Q# t) ^6 ^$ l
  22.         int fd, ret;2 O& b- v* I2 ^" U- e
  23.         e2prom_s_cmd arg;
    0 a4 c! @, Q4 g7 s; U
  24.         unsigned char buf[0x18];
    4 X7 v  Q  @; \

  25. 7 {" V+ Z2 d$ `8 _, C) o2 y
  26.         fd = open(E2PROM_DEVICE, O_RDWR);+ |1 j5 d. F. `2 M
  27.         if (fd  < 0) {! d4 J5 X! o- k, s% T3 R
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);( O* w* u" N6 X; N  R
  29.                 return -1;
    ; B# D% f3 H7 e8 x
  30.         }! [, u: c0 c$ |+ n
  31.         arg.sub_addr_count      = 2;3 p' c% _7 X& }& M. a* W( @
  32.         arg.data_count          = 0x18;) r; x8 @; {$ e  X4 \
  33.         arg.e2prom_cmd_sub_addr = 0x290;6 W) ~) K9 C- U# k
  34.         arg.e2prom_cmd_data     = buf;5 f2 v$ a8 _+ |: r; \1 S
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);! l! ^; T3 v+ _# Z  s
  36.         if (ret != 0) {
    - c6 a! g4 M: p- ~% n
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 o$ ]. w' Z( \2 |
  38.                 return -1;1 _, s. B: U: r5 w
  39.         }7 m+ {. `8 C' ~% @+ ?
  40.         memcpy(mac, buf, 6);
    # l) A% t: K, [. E+ @: I0 n
  41.         memcpy(stbid, &buf[6], 18);/ }# P* d" }' g+ g
  42.         stbid[18] = '\0';' o3 O, n6 M' z4 J& c+ w! K0 v0 h
  43. 5 g* p2 ~' G  f" A1 a1 g" Q. n" s" @
  44.         return 0;& G# p! s* O! z9 F
  45. }
    - z1 `) e/ F( h

  46. : {6 w( Q: Z3 O2 e+ X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    & v+ h9 u$ P( L
  48. {
    & S& L# u& x8 s, c
  49.         int fd, ret;' k/ d! H1 y# L. e% L& I7 _' o
  50.         e2prom_s_cmd arg;* C2 Z, p9 I% S7 R; [( P- O
  51.         unsigned char buf[0x18];
    & Z0 M2 Y& V: A+ ?8 K/ Z! m) q

  52. $ M% S1 \6 @, c) ]2 x1 O9 n
  53.         memcpy(buf, mac, 6);
    % F* `+ @4 X5 |7 [1 x
  54.         memcpy(&buf[6], stbid, 18);( t3 V/ G: K  W
  55.         fd = open(E2PROM_DEVICE, O_RDWR);+ ]/ H/ }% P! y1 F( Y( T; U
  56.         if (fd  < 0) {
    6 I6 l- A$ f* a9 H- y' @
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);  A! @: A: f$ _' M
  58.                 return -1;
    $ x5 ]9 t8 g& [7 ^! q) u
  59.         }+ p: n% f& h; R
  60.         arg.sub_addr_count      = 2;8 w& u" r. a9 _
  61.         arg.data_count          = 0x18;/ N- t% Q# _) n5 k
  62.         arg.e2prom_cmd_sub_addr = 0x290;# Z4 n8 w  \, y3 ^2 h
  63.         arg.e2prom_cmd_data     = buf;
    # u) F; ~: }/ B$ P9 Z" |
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);4 ]4 l' K2 D" z0 }# R+ k
  65.         if (ret != 0) {
    2 T$ h% M6 t$ Z. H
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: o; K/ c+ F& E8 h5 O5 j( {
  67.                 return -1;" Q6 u" W% ]% }1 s- [, V, e8 Z; C
  68.         }
      @/ v& m1 ~4 Q9 O; x* [
  69. ) b; H' i7 g' ~& j& y
  70.         return 0;1 @% M3 L4 E+ v4 O. x
  71. }( b5 e, n4 A4 t/ y0 D

  72. 4 P: q7 E' Z1 S0 n$ f$ J
  73. int main()
    + S9 {" d" m8 r; G
  74. {
    6 g( g- ^; b$ b9 T
  75.         char c;& M' o# ?2 |" v- |& h
  76.         int i, macs[6];
    & a1 r4 ~' q4 I4 A+ z0 _
  77.         unsigned char mac[6];8 r' l( |) R8 C. q8 ~
  78.         unsigned char stbid[256];( S7 |+ i  f( A5 [

  79. . ~9 ?. s6 e, g$ X: @8 r: z
  80.         if (readparam(mac, stbid) < 0)
    * C2 u) y/ U$ z6 T/ X5 B
  81.                 return 1;
    - v& P8 F* X; _- J( u1 v2 a1 [( Y

  82. 5 C* E7 q8 u1 x! X
  83.         printf("Current parameters: \n");: c, S' ~1 D& q8 U; V$ T+ e9 ^9 x
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);" \# v( _! C; p. v% n) b9 ~9 B
  85.         printf("  STBID: %s\n", stbid);
    5 m  ?. T, _" F5 Y
  86.         9 q$ z- C4 R, l' W% D6 I) X
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 k$ v6 k  `+ N7 ~' |8 e) d9 T
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {) g& P  ?: R$ X; E. |( [/ ?
  89.                 printf("Input MAC error\n");3 _4 ~. y  Y: n: b/ C: ]; |5 ?
  90.                 return 1;& ]: y/ v7 v4 {
  91.         }
    0 b: |5 N1 i& i. \7 T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ) b# |5 T0 t! R! z: {/ T- p
  93.         printf("\nPlease input new STBID: ");+ T1 X$ B. C2 M! C, B, @* w# R
  94.         scanf("%s", stbid);
    & O! s& c  b2 W3 G% D$ |- c7 p" w+ ^6 [
  95.         if (strlen(stbid) != 18) {
    # e4 C2 R- d% c7 b
  96.                 printf("Invalid stbid\n");" z: W; J$ D, h! I
  97.                 return 1;7 e+ u: o) b7 l4 O7 p" \; D% L
  98.         }& B. W% Y  e7 e5 b0 {2 [
  99.         printf("\nNew parameters: \n");
    - R/ w( Z+ k' |
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    8 J8 q& k" Y, A& p8 r) y( w
  101.         printf("  STBID: %s\n", stbid);
    : p$ O5 o% ~+ ?* O5 Z

  102. + V: e8 y7 y4 u) L4 g/ q, p
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 a5 m+ k" p7 B2 r5 T5 e
  104.         for (;;) {( ^8 _, I' x) i& M  ~2 Y. ^$ S% z
  105.                 c = getchar();
    / z$ ?' d  p# Q* G4 V* N
  106.                 if (c == 'y' || c == 'Y')9 M, z5 W. X. C/ e3 u
  107.                         break;
    7 R, \( Y# Q. d  L1 b; }3 a
  108.                 if (c == 'n' || c == 'N') {
    / j- M) o, p1 z- q2 a# O
  109.                         printf("\nAborted.\n");
    2 F6 s7 P1 t! V3 J9 e
  110.                         return 1;
    # z5 B0 l- D5 s/ m* l3 V' I* O4 M' r
  111.                 }
    - z& w* S" B$ l0 z, Q1 W. c$ y
  112.         }; ?  M, l3 q, U9 S* a, @" a
  113.         if (writeparam(mac, stbid) == 0)
    ! L9 y0 b5 s( s" _! k! l
  114.                 printf("Parameters changed.\n");
    $ }+ C! l) i! F8 Y) j( ?( K/ v( T
  115. 8 c/ Z8 e, ^) l& i; |' N
  116.         return 0;1 X' s5 z7 t6 J  ?0 }
  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
; ^, N# K5 A& c9 P8 d在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

8 i6 ]8 b+ o6 {) e- x$ Z你用的编译命令行格式是什么?
& M% O, J  ^/ r* y6 y' e
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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