查看: 16931|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    9 [3 J' u% Y6 g. Y/ g
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig7 }$ T, V% v. r! G- o$ g, F1 B
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:3 q- Z/ @/ _7 q" z* u. f& q; `5 j
usage: himr <address> <value>. sample: himr 0x80040000 0x0& B  o% C1 P5 d% ^  q) Y( \
' U- j, o, ^1 ~6 n* J% p( k2 i
: I0 a5 i) X' \0 `
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  P; b* F3 M3 C* m  T; N1 _3 R+ M& ]' A8 ^; ?1 x9 _5 ]  i
补充内容 (2012-3-8 09:42):7 R0 P! v# @3 s" F
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 H0 y, W& A. Y8 X- s2 U$ ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
% v  o! y' o: E! ?7 _- B+ d4 w* C. S! j  Q! f
himr <address> <value>. sample: himr 0x80040000 0x0* q) a) ?# O5 X2 d

. J/ F) ~6 G; Z例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。* j" l8 J) t0 o5 C. {& [+ R
himr 0x80040000 0x00
0 s. b" T* W" X+ z$ O' }- ihimr 0x80040001 0x11
1 V' V6 \! p3 {. M1 o4 |himr 0x80040002 0x22
& d9 v# O: m. |4 B$ `4 Bhimr 0x80040003 0x33
0 S3 E5 R5 d/ K8 \+ t/ Whimr 0x80040004 0x44
8 R1 {4 n2 b! t) S9 |: n: i; ehimr 0x80040005 0x55
2 x3 r+ q5 y) Y* Q
7 t! f3 M; k; I& pSN也是类似。, [) G0 U3 g, R5 P

3 J6 N3 r0 ?9 o3 E# g5 A! A现在主要是,谁告诉我们MAC和SN的地址?5 X: g8 W4 }) M1 G9 n
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
* t1 r0 A# H* Z: l: V一直想找到运程修改MAC和SN的办法,苦于无解啊

6 `( h! v: Z: d5 c: {/ o源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
4 s; d6 w, p* z& w3 e0 k& J5 d$ F% x* _/ p" S, \. L
修改的代码早有了。到今天不会编译。
' S# c: z, m# n- X8 \0 Q需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>, J$ H$ F. a) c
  2. #include <malloc.h>
    " t$ s, T* i9 z; P8 s' v
  3. #include <sys/types.h>& g# _3 F0 j! h, s0 {, v, D
  4. #include <sys/stat.h>4 P: E3 v" X* y4 R' D
  5. #include <sys/ioctl.h>3 ?, i* S6 }$ v4 U' `6 w  }
  6. #include <stdio.h>
    6 h) E: Y4 ?$ ~3 M" |: D( G
  7. #include <string.h>9 F) s( ~9 e& Y% `+ l. A* e0 b; b

  8. + l8 [$ ^3 _( i" x' b& U
  9. typedef struct {- f5 q. K5 X, k9 ]0 P/ M1 l- X
  10.         unsigned int        e2prom_cmd_sub_addr;
    8 |9 ?, Q8 C" B: @
  11.         unsigned int        sub_addr_count;
    9 u$ M. m* D  X; T/ G8 q
  12.         unsigned char*        e2prom_cmd_data;
    5 ^7 h7 c& N5 l! Z4 `+ R
  13.         unsigned int        data_count;
      v, b% C1 n: v3 V9 o
  14. } e2prom_s_cmd;
    ' ?# a0 ]. H7 w) p* c$ n

  15. ! }6 q- Z+ M: F- r5 Y5 j
  16. #define E2PROM_CMD_READ 1
    / P  b5 X8 R$ B
  17. #define E2PROM_CMD_WRITE 27 `3 ?2 F( Q; Q) O
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    * f5 v' W1 O; i7 R

  19. ; f" v& G1 \# ?
  20. static int readparam(unsigned char *mac, unsigned char *stbid)& y( @; r: X8 A$ n+ K
  21. {% J7 @6 B! \5 k
  22.         int fd, ret;
    7 g; w2 b' n, V/ d% d
  23.         e2prom_s_cmd arg;
    5 U, p8 @  q9 g; l. ?
  24.         unsigned char buf[0x18];
    - f$ ?/ y  O* q  b% ]) b: M" D
  25. ) y4 c4 r& x' f
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    - Q7 C6 E5 W4 R4 s  q8 |1 \4 G
  27.         if (fd  < 0) {6 R* @) W8 D5 _5 y% M2 ?
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);& v( C- T0 k. f  c
  29.                 return -1;- s& o% u7 e3 f! B* G1 t
  30.         }
    5 q8 R" y8 ?' D& g; F
  31.         arg.sub_addr_count      = 2;
    * E! z/ j. @. g* W0 w: Y
  32.         arg.data_count          = 0x18;
    " f8 K7 D: V! _( J% S+ S5 P
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    : J, \' B% j/ c- l# e- z
  34.         arg.e2prom_cmd_data     = buf;( {( V, y# j! c/ f7 g& {9 [2 P
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    8 y% S  V4 V7 U; H' d
  36.         if (ret != 0) {
    . G2 ?* C- d/ g* t  j
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# Z; m/ I" s. V$ J( L6 h
  38.                 return -1;- g' q+ z" m' `* S( _% }) l' a
  39.         }' ?* t+ t; x: o! S! \% x- x
  40.         memcpy(mac, buf, 6);
    6 c  }8 M' a# E2 \
  41.         memcpy(stbid, &buf[6], 18);; {" a5 S& u1 m+ p
  42.         stbid[18] = '\0';
      P! P8 T/ _% E  v* j3 A6 r
  43. 5 |1 a6 Z: W+ k3 o/ ~2 C  S
  44.         return 0;
    6 j6 O/ I- Z* v4 G. v  [9 x
  45. }; s! S0 O* x9 D
  46. 3 y( @" ?7 n9 `4 Q, v
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)9 A0 o: \( L, |) r; d9 k( O2 L
  48. {/ r9 C( e; L0 E; ~' U# r. c
  49.         int fd, ret;1 }  {  ^% ~# w' N' h! I# B2 p5 c
  50.         e2prom_s_cmd arg;; C6 r( j  `4 O3 q1 \2 _. n. d
  51.         unsigned char buf[0x18];
    , [' k9 {( }- r1 l" ?, ]
  52. 9 O6 ]5 R2 m! P3 o% J; _1 z4 J
  53.         memcpy(buf, mac, 6);
    $ U; R) k, `1 a* m
  54.         memcpy(&buf[6], stbid, 18);
    0 g/ x$ W! F0 _6 g
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / D! x( e( ~/ r
  56.         if (fd  < 0) {
    % @6 W  o) ~  D8 M4 |, Y2 b& a9 X
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);: Y  R$ |+ |/ g: Z) x2 K/ }$ n' w
  58.                 return -1;5 U: v( l$ M; K2 F
  59.         }
    * T8 j) [7 I7 i  B; y
  60.         arg.sub_addr_count      = 2;9 p5 v, S- F0 |$ j* T, m# O- W
  61.         arg.data_count          = 0x18;
    + A) Y5 }3 k- P  D6 W1 d3 x& L
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    ! A$ @. m1 d. u
  63.         arg.e2prom_cmd_data     = buf;
    " j; `" X  V6 `* N. ~: h4 {
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);0 }% r' y5 `* p% |" ~* Z
  65.         if (ret != 0) {; y8 F" [& z& h$ h0 D
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ! V/ E; E( X$ U
  67.                 return -1;  t9 X9 t( z; x$ m( G8 E
  68.         }
    & a' n! x# x# ]( d
  69. 0 V; X( ?, [. u: z
  70.         return 0;
    1 F. \7 x/ R1 _  N
  71. }
    : z2 y! [( ?/ |0 C" u/ S) H

  72. 6 M- ^% }# `; P" A5 [9 H$ o. e
  73. int main()
    5 Y% s7 L7 ~) Z7 Z4 m
  74. {) m% R; Q* c7 y2 L6 i5 I$ B
  75.         char c;
    : [  ^  y4 T( E# _8 y) @. K
  76.         int i, macs[6];
    ; J# b! i7 v) ]1 U9 E- E
  77.         unsigned char mac[6];
    $ ]8 O" E9 H0 c. K
  78.         unsigned char stbid[256];; T: o7 ^' z6 R1 s

  79. 2 R* O5 ], N- m
  80.         if (readparam(mac, stbid) < 0)
    4 Q2 N! v. O' h5 J# C* p
  81.                 return 1;/ I& I) _7 m- y9 B" f: k! L

  82. # a+ n  u: V9 t# Y, S
  83.         printf("Current parameters: \n");
    ; v/ e, h6 u3 T5 ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( b# Y6 x$ Z& Y4 S7 {
  85.         printf("  STBID: %s\n", stbid);5 r" P) i9 \6 ?! u' j6 ^5 B
  86.         $ y& [) j! w9 O, K3 p# v
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");+ R1 [$ Z% p8 d/ f4 Z* H
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {' ?% a- c3 y: C( d
  89.                 printf("Input MAC error\n");0 ^4 R% r# s5 R8 U/ ^
  90.                 return 1;
    # d" N* |  X* x0 a
  91.         }
    & H( @0 A' d7 ?5 W
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    & U& W% l' _0 j" f& V5 a
  93.         printf("\nPlease input new STBID: ");8 K4 r  j2 M9 c# p/ L0 M$ h8 t* Z
  94.         scanf("%s", stbid);1 z2 J# V: n% W) ]" K* P: U. V
  95.         if (strlen(stbid) != 18) {
    0 a: i* |, o, D5 P; b! `
  96.                 printf("Invalid stbid\n");
    ! m$ F7 q* m. S7 a9 ~
  97.                 return 1;
    7 ~) Z, T8 }- S, c
  98.         }
    " G$ [) E+ i* u
  99.         printf("\nNew parameters: \n");8 k  @; A0 X; T8 q; Z' B# S
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);; H* I3 ^9 C5 I! {/ k
  101.         printf("  STBID: %s\n", stbid);, \! @: r1 B7 ?8 ]( F( L

  102. - U8 B1 j6 p' Z6 g2 P1 o  a
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 j' B( Z' j" Y$ y& n
  104.         for (;;) {
    5 V; i1 b2 j# s8 _, ?
  105.                 c = getchar();# Z, j( [$ I! J5 U
  106.                 if (c == 'y' || c == 'Y')
    . P4 |1 q% t& j$ m! u! u
  107.                         break;
    5 O" T" x% t: L5 V+ K/ U
  108.                 if (c == 'n' || c == 'N') {+ K- Z! r3 I! y: l& a  w4 v
  109.                         printf("\nAborted.\n");; d# e- v- ~+ }1 J9 h
  110.                         return 1;9 m: H* a3 b8 l6 s
  111.                 }
    ( @+ {. c! g' B+ ]6 T
  112.         }4 w( n$ [. f3 Z/ Q$ S
  113.         if (writeparam(mac, stbid) == 0)
    % L0 J; A; A" s1 d
  114.                 printf("Parameters changed.\n");
    5 ]' V4 p  T& X. s
  115. , a7 T$ o- Q% ]0 T4 `
  116.         return 0;
    7 T# g5 H" x, d" [$ K# j
  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 2 @4 c& u' ]3 @+ i' r7 |7 [. e% J
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

3 D" h. C8 |+ I5 }! P你用的编译命令行格式是什么?7 Q+ p& d( G) A2 j8 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客服返回顶部