查看: 16474|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    ' k7 X4 \$ K" [, X" s- v. z) X' [7 Z
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig* g7 y- H( V; q$ @
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
4 p9 Z/ y( z" Q3 \, Wusage: himr <address> <value>. sample: himr 0x80040000 0x07 c! Q. t9 m4 ~1 N

/ y1 Y* o( ]3 a2 R# @6 t' W
' I' t" g% w# `' p0 y1 [: ?不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
1 _* d: w0 F) l/ U1 \$ r
# N# I2 G8 [; `5 n3 A6 @* q' ^5 @补充内容 (2012-3-8 09:42):
' i6 u5 P6 v$ F- }http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数% [% _' [2 m: F  {7 u
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。
- N9 |( `: o/ E! L8 }$ j  I) s& _9 z. u8 \. Y4 A* q
himr <address> <value>. sample: himr 0x80040000 0x0
; B: X4 s2 e9 T  ?( a9 X1 i2 }) m
* Q4 s+ Q7 j# v7 {/ R例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
' E+ ]: U" ~1 N+ @, Mhimr 0x80040000 0x009 ~1 A/ J2 f( J
himr 0x80040001 0x11
  f% }* F6 y" rhimr 0x80040002 0x22
; W( [9 P' J! }himr 0x80040003 0x33- l3 O+ [8 O7 |  v' y2 M7 d* h
himr 0x80040004 0x44
. ~6 ?7 T. x8 K) f# T. d7 dhimr 0x80040005 0x55
" @+ E# L) J- o% Q* Q" W) U  j4 K4 k
SN也是类似。
5 K" o0 R% A9 g- S- O9 x, u4 ~, X3 i# c7 v- m! Q
现在主要是,谁告诉我们MAC和SN的地址?9 B+ X$ m' e$ R- d: G7 b
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 # Q, z) G6 G+ r' S
一直想找到运程修改MAC和SN的办法,苦于无解啊

% Y! W% X3 U  Y3 p* V: y* s0 F源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
7 F+ z# |* G6 C8 ~& L6 q: K5 {1 Y) Z4 U( y% W
修改的代码早有了。到今天不会编译。  b7 L0 }- `4 o
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    0 `6 i7 @. a! U9 K
  2. #include <malloc.h>
    ' r; Y3 s  s7 j- k- }& M0 _# c
  3. #include <sys/types.h>
    + B7 H# o" J. k
  4. #include <sys/stat.h>
    7 P- Q" f$ |3 u8 o
  5. #include <sys/ioctl.h>
    4 e  M% p, j# k7 E7 I$ ^  F
  6. #include <stdio.h>9 @7 j' l' F; n0 r- z# w
  7. #include <string.h>: V7 i& k& @0 y9 b: v: K# _2 {
  8. $ J; [0 |( O7 t8 Q9 E/ R
  9. typedef struct {
    ; g, [; E/ j6 ^: w- s+ ~: O: c
  10.         unsigned int        e2prom_cmd_sub_addr;
    9 Z* K9 J/ k, M5 G# f, u+ r2 k
  11.         unsigned int        sub_addr_count;# I* ^/ P; {; y8 b: l, s
  12.         unsigned char*        e2prom_cmd_data;
    - c. y9 v2 a2 q6 u( W9 S: C
  13.         unsigned int        data_count;
    ( y6 s, r$ D# e% u" [
  14. } e2prom_s_cmd;3 S* U1 S& k, L
  15. - A, o: `7 X; v$ d, W
  16. #define E2PROM_CMD_READ 1
    3 p8 P# u6 {8 w# H+ ?. n
  17. #define E2PROM_CMD_WRITE 2! ^6 j5 e( }; G4 ~8 `5 \# r7 \
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"( A, {3 P/ K+ L( y) D! R

  19. : f) Z" q7 t. D2 z  N2 A! R& f: R3 D
  20. static int readparam(unsigned char *mac, unsigned char *stbid)0 k; E# w+ o: x) Z" h+ y2 r4 i
  21. {' U0 @2 E; l) g3 f2 r2 X0 _6 K
  22.         int fd, ret;
    ; J/ k+ f# m7 k
  23.         e2prom_s_cmd arg;! [) Q' v% j  b5 H0 I2 C$ [
  24.         unsigned char buf[0x18];, N; Y3 n2 i( ^7 _; o5 H( X
  25.   G/ y( W  v( j4 n
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    * }) E6 g1 b, C( |5 S% `
  27.         if (fd  < 0) {
    9 k: W5 i( a. Z( T
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    # a* z3 l  a: A$ Z0 ]  A
  29.                 return -1;3 K7 W3 B. g3 R) s1 K' p
  30.         }
    ; K( _3 D% v% }0 b+ ~
  31.         arg.sub_addr_count      = 2;2 i0 n6 `  m2 Q1 ]
  32.         arg.data_count          = 0x18;
    6 t0 g3 ~. ^. D& z, i0 g
  33.         arg.e2prom_cmd_sub_addr = 0x290;' S2 ]! R: F( g* o0 E, J. m
  34.         arg.e2prom_cmd_data     = buf;
    0 Z) ^  i" G8 n, `: G( r, t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);0 f# {: ?# p$ T/ a
  36.         if (ret != 0) {# i0 m2 E/ c$ }: F1 [% u
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    2 `6 w. F: x5 q
  38.                 return -1;* Z; G& n( I& u  t$ N" H
  39.         }
    / G7 W# t& K! |/ g, G
  40.         memcpy(mac, buf, 6);/ w! |( S8 p( M4 S- D  @
  41.         memcpy(stbid, &buf[6], 18);6 P  i/ }$ v8 X. A  C: E1 Z
  42.         stbid[18] = '\0';
    . {2 A9 e! a- ]" i1 T! p( d

  43. , d8 j, [6 u2 H
  44.         return 0;
    ; m5 }8 ]; W0 c/ W3 _1 q
  45. }
    ! M$ d' U* i+ Q- F& C
  46. ) j7 r( @; z5 E5 h3 H
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    - a) B- j  j$ P! e- Q/ I
  48. {
    & `$ i% e* `: v& _" P
  49.         int fd, ret;
    6 o+ R8 S( A1 j3 G9 Z3 Y1 q- L; Y- C
  50.         e2prom_s_cmd arg;) r, `, ~" V) E; n4 z0 Y; s
  51.         unsigned char buf[0x18];2 `4 o! j7 t0 i6 m  r( Y; u0 d
  52. , F( l- r  |  E1 E  ]
  53.         memcpy(buf, mac, 6);; C6 j0 Q0 Q, h4 W. v# c( M' G
  54.         memcpy(&buf[6], stbid, 18);  H: z* |, s5 w1 ]8 D$ t# s  j2 [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    : k. q+ f, Q) v* [" b6 `
  56.         if (fd  < 0) {2 G6 U: Y1 g. t% X* y& s  `
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);7 R$ ]* `  T) n
  58.                 return -1;
    : @' V) d4 ]8 j1 G
  59.         }
    , I, B) }( ^) O* x  L% |
  60.         arg.sub_addr_count      = 2;
    8 t( P: ?# t+ z
  61.         arg.data_count          = 0x18;
    ' v, d* ~3 W! O/ N. g
  62.         arg.e2prom_cmd_sub_addr = 0x290;  W; ]. _* {2 y3 r. x  y: U; o
  63.         arg.e2prom_cmd_data     = buf;) |' F, l2 ?9 E) J
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);( X. H: Y* ?" \1 o' G
  65.         if (ret != 0) {
    6 h- d  u. k" r
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);' J3 ^8 _) F+ m
  67.                 return -1;
    # M' T; r" ^' z2 E5 a0 z+ r
  68.         }
    - |" s2 v  i7 n& d

  69. ) g) }, p4 q# I% T& U
  70.         return 0;# I' }, U* Z, O* g
  71. }
    4 N. F' T+ x+ a: a
  72. * Y. j' e6 m# T# P1 `" Y
  73. int main()
    2 d" d3 ^- H$ N8 F* j
  74. {4 \7 _7 y" t1 T5 B% }
  75.         char c;; U% |# ]3 Y8 s4 @' Y
  76.         int i, macs[6];
    5 i1 S! H$ g6 H) W3 U  x9 X
  77.         unsigned char mac[6];. R$ Z- z6 ~; R* V; x% B
  78.         unsigned char stbid[256];8 N* i/ `" |/ l$ U4 C
  79. * S0 b) Z" Q0 t- G- A: n/ ]
  80.         if (readparam(mac, stbid) < 0): ?. ?* n5 ]9 C( J% |% e* z
  81.                 return 1;
    $ w: i7 g" [3 G: o

  82. ; Y8 j% U, i7 D6 [+ `. Q
  83.         printf("Current parameters: \n");
    $ p9 P% \; Q) K
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    6 g& e* ]( l7 s' _0 z3 j* d/ i
  85.         printf("  STBID: %s\n", stbid);
    + a4 }0 f  a0 X, Q5 [. `
  86.         ' J8 y* o0 R& ~
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 S- c4 \& g0 ]5 t
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
      ?9 @/ |3 P7 b2 O. T. I
  89.                 printf("Input MAC error\n");
    : \6 J  u: U8 f$ ]
  90.                 return 1;
    " O  w" V* p+ H  P, o: q
  91.         }
    8 [5 Q6 `* `+ [: o- B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 Q" g; c' W; y3 K& w) n* Q
  93.         printf("\nPlease input new STBID: ");
    0 j  \6 U; l$ s0 c
  94.         scanf("%s", stbid);' E) C! [( M1 F7 z1 B) @
  95.         if (strlen(stbid) != 18) {
      q. n( K7 K$ }/ S
  96.                 printf("Invalid stbid\n");7 g$ A0 [/ _' c0 o9 Q: V
  97.                 return 1;
    ) J% a. K3 T" U/ f2 f; [" U
  98.         }
    - j! `  b  l/ w% n, Q' L* U3 `9 A
  99.         printf("\nNew parameters: \n");
    , E, z& K) y# I( Z, M2 q4 `
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ' d6 w% v) K  w& w
  101.         printf("  STBID: %s\n", stbid);
    & y( C/ p; L) [7 {' m
  102. + D2 k6 D$ c% P: n  P
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    ; a0 g0 a" }% @3 G! Q
  104.         for (;;) {1 @- f7 k8 E6 Z2 ^0 }' x# `0 g* g+ G/ T
  105.                 c = getchar();
    " J: ]# d7 S, P
  106.                 if (c == 'y' || c == 'Y')
    8 ]. E% O  I- s$ I2 e4 N' |
  107.                         break;, }- I4 ~9 L0 \4 V4 B; j8 E% p
  108.                 if (c == 'n' || c == 'N') {
    ( b0 s1 d7 b, l2 L! E& B9 @
  109.                         printf("\nAborted.\n");3 `8 V+ U1 P8 V3 Y, ]8 ]" U( d
  110.                         return 1;1 w5 z  d4 b0 y
  111.                 }! d5 d2 U1 W5 k( I* |
  112.         }
    ! K; K7 C5 Z0 W4 X  o& F
  113.         if (writeparam(mac, stbid) == 0)
    2 O7 g) n- g! f: I  c& ?' g
  114.                 printf("Parameters changed.\n");7 Y- z; L- T4 {( O6 V  ^/ t

  115. ) r$ D0 a6 @: k' ]
  116.         return 0;
    % z- v7 I# T  `) q
  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 $ F3 w  p- D# n5 s  T, a; S5 F' Q
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

  i$ {( A7 s: o2 U( I% i% G你用的编译命令行格式是什么?
' J; G3 H" n3 k" o" [
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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