查看: 17900|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr( j; D8 |1 ^, M1 N' N  w9 I% I
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig$ z* r1 T  y! f* W0 t" b( Z! h/ ]
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
- m# i9 ~1 p+ _usage: himr <address> <value>. sample: himr 0x80040000 0x0
4 I/ h) ?7 S- e( J% a, L5 W9 F, e; g; R* t; r$ h4 _+ n

, d$ I; Q2 v  l7 ]7 W$ W- u' c不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
4 H! ^* }. ]# Y( P% p/ }: c
6 {7 y4 D- j; U( b( {补充内容 (2012-3-8 09:42):
, n" e& H, b7 ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数, _. t' o' w5 m4 y9 j8 Q6 t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
/ u" S1 L6 m& C1 g; L9 `- J# ^' y
4 Z# I4 U- k; G5 k& j2 x+ k8 t$ Hhimr <address> <value>. sample: himr 0x80040000 0x07 v# t$ l# J# \+ @- ?. \

* k, x, {9 [# T; @* c1 I: [! W例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
; `' t6 }! c, }, O5 O" c! n6 dhimr 0x80040000 0x00
, [* J9 E* H6 N& Y2 F! Zhimr 0x80040001 0x116 ^$ `1 ?( E0 o  P8 ^5 L/ ^
himr 0x80040002 0x22
% I: G/ L7 z$ M3 s0 Chimr 0x80040003 0x338 L# Z9 R% W+ J5 _8 j$ \  ~+ d
himr 0x80040004 0x44% l5 V! o$ }0 L* E1 E
himr 0x80040005 0x55( S$ i/ j5 ]# L

4 R8 x2 e" |3 r" J, N8 I6 iSN也是类似。. K7 l0 F. s. F2 j
8 u3 q( M& E: s: X/ e# d+ j( ?
现在主要是,谁告诉我们MAC和SN的地址?6 g: L5 D% u! o$ A4 e1 y. ~/ S
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 6 @6 l; D( x- v7 Y$ `$ W, }4 E
一直想找到运程修改MAC和SN的办法,苦于无解啊
( a( D: P7 U  }5 c6 @! W# i4 h& x/ {
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
- S+ M7 `2 [4 P  t8 ^
5 p0 I+ k- w( H. Q修改的代码早有了。到今天不会编译。
! W# C$ s$ A5 B2 I0 ]  M需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    9 ^5 P9 e% j; \) \# O% L
  2. #include <malloc.h>6 Q( m, B" ?( H
  3. #include <sys/types.h>
    - t- Z+ o7 o7 I) f" N7 f
  4. #include <sys/stat.h>1 c, C+ M+ B8 _: [, M
  5. #include <sys/ioctl.h>+ C& _, i" j& E( Q- J+ S8 a8 ^
  6. #include <stdio.h>; p5 n2 O4 \- r$ g
  7. #include <string.h>  D1 o' j- L" R8 h4 {
  8. + a* l) N' `8 S' {8 A
  9. typedef struct {
    $ m9 y8 N/ q! i# r: j2 }
  10.         unsigned int        e2prom_cmd_sub_addr;9 X3 o/ ~. Q$ `0 T9 q; b: a
  11.         unsigned int        sub_addr_count;
    ( e, a# H4 w( f, q
  12.         unsigned char*        e2prom_cmd_data;( `5 A$ d: r7 M) p; G7 o; v. M; p( Y" D
  13.         unsigned int        data_count;; \. d7 h+ {8 g8 {6 N1 b1 W2 R& O& k2 J
  14. } e2prom_s_cmd;) t, t( _# C. F( v
  15. 3 p1 |1 e& G) r; _4 _: b: s
  16. #define E2PROM_CMD_READ 1
    , @2 o& P; g) Y" W& T; S
  17. #define E2PROM_CMD_WRITE 2
    + u" U" d; J: S! k3 |9 C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  e1 a/ f+ X! W; r
  19. ( s, X0 M; j7 }. L+ ^0 b
  20. static int readparam(unsigned char *mac, unsigned char *stbid)6 n6 m/ X% H. M3 x
  21. {- k8 }0 {+ Y$ s& I$ Z, |
  22.         int fd, ret;$ d% n, T* z$ W' j) W
  23.         e2prom_s_cmd arg;
    # L7 {! f+ ~% k. M7 J% p" G
  24.         unsigned char buf[0x18];
    ) }( N9 i: a1 o/ y) O, u1 R+ s. i
  25.   H$ @$ {9 c6 @3 N& _
  26.         fd = open(E2PROM_DEVICE, O_RDWR);) `' _/ y# ^7 H7 V2 w$ M
  27.         if (fd  < 0) {; Q  H$ T, I; q$ @7 m! }* {' p5 c
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 q* A1 e7 s# J
  29.                 return -1;, t3 w, ~) \7 H3 S7 T4 Z$ D
  30.         }
    " j2 [  C- w" B1 k  a; O( k
  31.         arg.sub_addr_count      = 2;
    & T7 j4 l8 T3 h+ x, Q2 K
  32.         arg.data_count          = 0x18;1 U& ^( o' s: `
  33.         arg.e2prom_cmd_sub_addr = 0x290;
      [" W6 O2 q# I- S  H/ r
  34.         arg.e2prom_cmd_data     = buf;/ z* n5 E) Z2 |, m" }( G- b
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    ( n; L; T( b$ d* @1 M0 q% n
  36.         if (ret != 0) {$ I5 A: ~3 k9 s1 d
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    3 S, }/ _% z" z' a8 |4 ~
  38.                 return -1;9 x9 R* h) Q. _6 _
  39.         }! I2 Z2 ^/ l8 n2 h
  40.         memcpy(mac, buf, 6);
    - T1 y; k3 ]  v! {) @7 D- C/ c0 O
  41.         memcpy(stbid, &buf[6], 18);
    . o% g0 e8 m# v! c1 A8 S
  42.         stbid[18] = '\0';
    5 I; R* Q# \/ z- V! H

  43. $ V4 h$ u/ [2 `
  44.         return 0;
    8 c0 n6 u. _3 S; L- `
  45. }
    / D. j6 h" O( U
  46. $ Y  J" R7 V% u; ^- U
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)! l( K8 F9 \! v8 g/ K
  48. {3 @- a+ y3 B6 n+ c& e* ^1 S; t+ E5 g/ T
  49.         int fd, ret;5 e2 D. H. t8 }
  50.         e2prom_s_cmd arg;& @1 y, E. j+ x
  51.         unsigned char buf[0x18];1 p8 S0 L1 b- [1 p% T

  52. 0 E. r9 Q# O1 e3 N# ?+ p
  53.         memcpy(buf, mac, 6);
    5 }2 @& W$ Q) E6 u1 T
  54.         memcpy(&buf[6], stbid, 18);
    ' ^- \4 n# S/ @9 Q3 B
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    # e: T5 M) s! ]
  56.         if (fd  < 0) {
    ) \2 ]0 z+ }; v# G
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 l/ e  F3 e" L( ^; z
  58.                 return -1;
    & R! \/ q3 R) S* u5 P7 x& D, I
  59.         }
      n% |( ]& i  _/ f
  60.         arg.sub_addr_count      = 2;& ]7 L* s8 U. ~7 V
  61.         arg.data_count          = 0x18;* s* x  j; {% a: t
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    $ N& B3 I. m! m! r2 P
  63.         arg.e2prom_cmd_data     = buf;
    : l+ N5 l' s+ T6 ]/ i$ z& i
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);& \+ Y9 j( H, |0 g$ G: W
  65.         if (ret != 0) {
    3 n' i+ C3 A8 J7 B2 V1 X
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    ; ~7 B+ x4 k3 I
  67.                 return -1;. w3 x. Q4 `; C
  68.         }5 @$ @, }% n3 Q. I- ]8 k
  69. 2 E3 h/ \' U2 }( L; H3 a
  70.         return 0;
    6 ]2 Y1 r! S( l# I6 v
  71. }6 Y  _* q( {! u1 z

  72. 7 n  z: V# I2 O/ y; @
  73. int main()
    . n$ ]. E6 X  q% V" `
  74. {$ ?* W6 b' J) G
  75.         char c;
    , |- L/ p! l+ c! `' Z3 Q) J; j
  76.         int i, macs[6];# l2 S( m- o5 D4 s5 y
  77.         unsigned char mac[6];
    6 x1 \5 @, ]; Z
  78.         unsigned char stbid[256];
      N) Y) k& N9 N+ W( e  H- L9 A
  79. + l# b1 u  s2 }
  80.         if (readparam(mac, stbid) < 0)+ j" L# {6 D/ t
  81.                 return 1;
    - r% }2 ^# K( k5 s- X* w9 V1 L

  82. ' q  {; @7 X( D" u: u) T
  83.         printf("Current parameters: \n");& S. X$ U/ x0 I& _
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ! s  O% V0 g9 T* g& a4 e7 f5 M% _
  85.         printf("  STBID: %s\n", stbid);
    : b' V* m0 t% `$ T. A
  86.        
    7 X1 w( J  U1 t6 \6 D
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");- y, W% w4 p! C
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {4 J! z/ l3 n0 R3 {- r# k
  89.                 printf("Input MAC error\n");
    3 g5 h) t% H' i, [+ T9 d' P6 G8 P
  90.                 return 1;
    ! X; G4 ^/ t6 [. @0 @9 }
  91.         }1 k1 K- O- H% \- A) N% e( O; P- q
  92.         for (i=0; i<6; i++)mac[i] = macs[i];9 z& k9 _* y& h! Q5 c# S6 B; v9 C
  93.         printf("\nPlease input new STBID: ");
    ( a' Z6 b+ w0 D6 L/ u2 \
  94.         scanf("%s", stbid);. c8 u5 [/ N1 g6 V0 [
  95.         if (strlen(stbid) != 18) {4 c% Z) H+ i, M( B# v1 {# {0 L: p9 |
  96.                 printf("Invalid stbid\n");4 @. Y" u- t0 V# R
  97.                 return 1;
    ; Q) x: z5 u8 Z) {6 O
  98.         }" {& M# \8 j2 u3 X. C' H
  99.         printf("\nNew parameters: \n");7 y  W( l+ {& Q8 |$ C: d; S" g$ i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    7 B" }& P5 j# s5 a: R' }* l1 L
  101.         printf("  STBID: %s\n", stbid);
    9 u3 u9 `+ g7 l: h

  102.   B  C0 m3 [/ h/ U" i* |! j& O
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 c, b% w: |4 h& E
  104.         for (;;) {5 ~+ W* S5 X7 V6 k$ F6 U
  105.                 c = getchar();
    0 l" E3 X8 o) Y- _2 p! M- U- V
  106.                 if (c == 'y' || c == 'Y')! ]0 d5 w- a6 @9 t  V$ W6 G
  107.                         break;
    * }$ @2 T1 D1 x" L. s" P  W- k; x
  108.                 if (c == 'n' || c == 'N') {7 T0 d) V  B7 g# g( `5 N6 y
  109.                         printf("\nAborted.\n");
    3 o7 M' {+ Z8 L* a- r1 M' g
  110.                         return 1;
    & ~3 C/ ?6 f; l2 M% V
  111.                 }0 D3 v0 [- \* |8 F
  112.         }
    % m! E: i8 Q2 _- }! }0 `# X6 I
  113.         if (writeparam(mac, stbid) == 0) ; }( d& g7 d( C; d: P, {
  114.                 printf("Parameters changed.\n");
    9 J0 G" \8 |* {. U; Z
  115. ( h- I( E6 N" H4 \, [7 C+ s/ Z( x
  116.         return 0;6 c" N1 l& W3 s# b  Q7 _
  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
* H% J4 ^1 ]. _+ V- \8 a在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

7 V8 B( M/ `" u6 ]- O你用的编译命令行格式是什么?
8 a7 D2 }( v% _
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部