查看: 16818|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 n: b, a' i% m$ X7 A; b& h. A
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    6 y2 a: n6 Q$ S. P- P
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
, f& d$ X$ F; c( cusage: himr <address> <value>. sample: himr 0x80040000 0x0; a; S- r1 G' l6 n' D
9 G. E5 E; J7 D9 O% Q* `
/ [. i0 p, S( B( ]0 j$ i8 ^# [" o
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
  c7 `- f8 w; E- R4 `! r9 {0 w$ g( _7 Y( \/ P8 t
补充内容 (2012-3-8 09:42):
: l. n, Q, @3 [4 ihttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
* R  H; n' X- w9 T: s$ `) ^这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
; F6 w! O% |0 U" ?* l. {0 |4 B. U; m. H9 x3 z2 _7 ~- }( z# j& ]
himr <address> <value>. sample: himr 0x80040000 0x0' f7 i1 D$ A( l1 X6 \

5 g. [8 P$ f( E: ?0 ~% L例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。$ J$ v6 G- O! W8 W$ U
himr 0x80040000 0x00
) l1 D; S+ o$ A. j% Khimr 0x80040001 0x11
; E  U6 a/ \$ J. J" ?: L' k2 \! ohimr 0x80040002 0x22$ W/ D2 }2 E# O: _0 J
himr 0x80040003 0x33
6 P6 V$ f' v2 M- @' ]9 zhimr 0x80040004 0x445 S: C$ t. j) u0 ^8 B4 J
himr 0x80040005 0x55
4 j0 q9 I% j; E: _0 Z& y: a! w7 s% r) s
SN也是类似。
8 l2 j1 [! `: y$ Z4 g6 g$ p& R
0 \8 @; t+ O" N; ]" i现在主要是,谁告诉我们MAC和SN的地址?
) a; J8 ~/ Y+ V! r
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 9 i1 X' O2 b5 h2 ?& A9 r
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 F; w. _8 b3 @" D/ V
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 - Q; }) p1 x/ W% Q5 N) U/ {

1 ~! U8 e4 C! x0 M, D  H修改的代码早有了。到今天不会编译。- v8 |! H4 I. @, ?0 T- Q
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    ; [1 O* E* \3 J2 [
  2. #include <malloc.h>
    & A! J3 W% o, k' n. S. x
  3. #include <sys/types.h>6 m8 X5 u  v( g/ a
  4. #include <sys/stat.h>' z# N0 S) ~, x# i4 Z/ q% `, {) e
  5. #include <sys/ioctl.h>. ~  M& p; K. E* a. c+ `  |5 f
  6. #include <stdio.h>
    6 x: d! j3 I! q; z1 b  n  B
  7. #include <string.h>" u5 \$ v, w. x3 K( g8 T6 k

  8. * G8 g$ P1 U( C6 O2 _. f' l
  9. typedef struct {% |7 s+ J3 \5 \  X& }
  10.         unsigned int        e2prom_cmd_sub_addr;% P  s+ s9 H1 N" ?9 o( a. ~$ ]
  11.         unsigned int        sub_addr_count;
    7 N1 B% P& J- i2 J; n1 J
  12.         unsigned char*        e2prom_cmd_data;% m" o/ F: u' F1 n6 Z- \
  13.         unsigned int        data_count;' d0 K, [8 j0 ^. }/ h
  14. } e2prom_s_cmd;
    9 h4 [: F: `9 k1 J
  15. 4 v  B4 a( b/ ~# k) ?1 v3 n" l& I. @
  16. #define E2PROM_CMD_READ 1+ K4 e- N# N; h$ S2 c/ o6 q, R
  17. #define E2PROM_CMD_WRITE 26 C9 [" t1 Z( J+ U$ e5 L
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"9 Y6 w8 v( [. h- j# x( k
  19. $ p: }4 ]4 g4 z2 g8 }( {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    2 T! j+ V. G' e8 g+ a% S- K' P
  21. {
    8 i# G: Q: u1 T; c& X
  22.         int fd, ret;6 D- R; I( I1 ]5 R% J
  23.         e2prom_s_cmd arg;& A- d8 \- [7 J/ {3 l
  24.         unsigned char buf[0x18];
    * s. a5 x3 \0 s- N/ \+ t

  25. 4 G0 ?0 W, C, Y6 ~  k1 F) i* A! X
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    3 g& e6 a. g4 G$ p
  27.         if (fd  < 0) {$ K( J1 @% f1 e- O& K  P* i
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( z. `' E' o! y, T3 j6 B
  29.                 return -1;0 H# s& m( i+ D9 U- d- t
  30.         }
    ' `: F, r7 p, _7 g7 t. K
  31.         arg.sub_addr_count      = 2;
    : K* P2 R4 N' ?% s, N) P' c
  32.         arg.data_count          = 0x18;+ a' u' H9 l' c( w( c! O
  33.         arg.e2prom_cmd_sub_addr = 0x290;9 u2 V. m. _$ _6 c
  34.         arg.e2prom_cmd_data     = buf;0 `: g% v2 F7 s0 R/ c+ c1 o3 B( d
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 u+ Y* J: w" S+ P& _* h. ^% @
  36.         if (ret != 0) {
    0 L0 T" O( a2 I6 r  u) m9 Z
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);3 b% R6 n; @& j7 {! u9 N7 Y+ M
  38.                 return -1;; y* D0 d" P; R% [) |
  39.         }
    9 v8 z4 h% ?4 L; j) N' r
  40.         memcpy(mac, buf, 6);, ?# \( F, T0 ?% H4 f
  41.         memcpy(stbid, &buf[6], 18);
    8 ^  @1 Y& G4 U( z
  42.         stbid[18] = '\0';
    , d  k, q2 h7 }- M

  43. 9 `$ j1 C  ?# |
  44.         return 0;
    " Y. B3 D9 ^, F$ S( E
  45. }
    " z  Q% @3 Z5 o5 Z6 T2 ~! N

  46. + Z# H" \; j( F* S1 g9 {$ m. _
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    , f$ }7 M8 \# I9 [7 g4 g& k
  48. {" x4 _1 b' ], L/ {5 B; _* t0 b! S! E
  49.         int fd, ret;
    $ ?5 T: `8 H: ^  g  f5 s
  50.         e2prom_s_cmd arg;
    & P; R; G0 X3 m7 \
  51.         unsigned char buf[0x18];
    ' G% @8 B' g5 J" K7 z, @

  52. : g) u2 z  Y3 X+ ]5 w+ {. `' g
  53.         memcpy(buf, mac, 6);
    7 M& o# ^7 P6 r( ~2 {: ~
  54.         memcpy(&buf[6], stbid, 18);
    + J: e. H+ r# h- ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);% ~  F+ M/ L8 B  ~, X9 {- a
  56.         if (fd  < 0) {! K  c  ^0 y) G! S9 M1 b2 v
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);8 f) z* a" e! w9 {; K' l. B% @
  58.                 return -1;& l6 F+ D0 _9 a+ C: l$ }. t
  59.         }
    8 `1 d7 [  L+ b! N/ J$ A- T
  60.         arg.sub_addr_count      = 2;, X# s, w0 U3 h% X) w
  61.         arg.data_count          = 0x18;
    + N5 s: o6 z* t3 Y4 F* q$ c9 ^, M  x9 @
  62.         arg.e2prom_cmd_sub_addr = 0x290;& c; g: R# o) g; H+ f# X7 [
  63.         arg.e2prom_cmd_data     = buf;
      I  _8 c. T, v7 u% S& k
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    4 x: ^  P# k! R) x9 x: C
  65.         if (ret != 0) {
    1 I; c6 x( r) ^$ ]) t
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);; E* d* H. B, X6 Z
  67.                 return -1;: t3 [3 z  O: Y' P1 z+ Y8 i
  68.         }
    3 z/ I% i+ D6 A% i. J# G  h
  69. + l! I5 D, A0 W9 J+ {6 C: Z
  70.         return 0;
    . u  G) t/ J7 g  a/ S
  71. }
    : H% k; o& r$ g; D6 S& J+ s$ A8 v

  72. - m# C/ b0 ?9 ]4 w9 K  @- }
  73. int main()
    4 Q$ H# J5 a. C. r
  74. {% A$ D2 R  s% ]8 s$ |. L6 C- t( Z- r
  75.         char c;/ k- c# V8 P  @9 i) {2 C  C. u
  76.         int i, macs[6];
    ! v2 {& n: W: J0 E( {+ R. H  \
  77.         unsigned char mac[6];
    ! ~, n5 f  s  q5 p# l: x
  78.         unsigned char stbid[256];2 v6 q( |! P7 N7 {, z% L

  79. 0 n' Y6 u2 U6 c2 b; c4 w
  80.         if (readparam(mac, stbid) < 0)
    6 W# J% N" T6 ~- X: o
  81.                 return 1;
    ; A: Z, ?) I0 R! c* y! `

  82. ' H4 ]  e; c, |6 s5 R6 G9 _
  83.         printf("Current parameters: \n");5 x0 W; y5 ?5 z/ Y" `
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    + V9 j( k6 e- W4 V: C8 e
  85.         printf("  STBID: %s\n", stbid);/ N3 g5 n( a6 f, e3 G
  86.         5 V9 |/ ?: ^8 R9 H: B" G- V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");0 u: L5 Z: i: P
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {9 K) Y# m! a1 p! P  k
  89.                 printf("Input MAC error\n");, }" j" n7 a$ p: W: ^3 z; f! ]
  90.                 return 1;
    0 ~. G" I- w/ B7 E0 |: W( l
  91.         }5 Z) H8 w- ^1 X/ ]$ ~9 H
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    1 A) U: Y4 S5 u, @3 L  w
  93.         printf("\nPlease input new STBID: ");
    4 y/ Z6 o: g0 e
  94.         scanf("%s", stbid);! g, n. H8 g) ^- ]4 z
  95.         if (strlen(stbid) != 18) {
    , J) e' K8 V7 d) T, R
  96.                 printf("Invalid stbid\n");
    1 R$ }2 d; x: q6 K. A
  97.                 return 1;
    9 @1 g; \' p" d3 a. c5 m
  98.         }9 |4 @7 Q, Y( W) Z4 c
  99.         printf("\nNew parameters: \n");
    / l& l; y# c/ q
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    : k+ t7 H7 I' {) _+ P1 g$ `6 z- U$ ^
  101.         printf("  STBID: %s\n", stbid);1 q& m0 K0 P; V. R( E7 M

  102. : V2 o8 L" w; Y% M
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    5 P9 N- b3 d. l& s! U
  104.         for (;;) {: S% M- N% ]! w" \
  105.                 c = getchar();8 _9 l" }/ a* T! J! J; S
  106.                 if (c == 'y' || c == 'Y')
    & W. ^, O6 l- ~% A, u. B
  107.                         break;) r3 ^5 }/ x8 i2 Q: n4 r
  108.                 if (c == 'n' || c == 'N') {
    & ?; A$ V9 w* a! ?
  109.                         printf("\nAborted.\n");5 _0 W, K  u! C, [
  110.                         return 1;' E7 j$ Q) a1 V7 q1 \( S
  111.                 }
    / s8 m8 G$ j2 q$ A: D- d* q/ o- `
  112.         }2 u0 D$ s4 s8 s' Y9 x
  113.         if (writeparam(mac, stbid) == 0)
    / r5 F5 |8 z) c+ T6 S. [8 C/ i, M
  114.                 printf("Parameters changed.\n");
    5 \: x2 Y5 p) S
  115. / o6 K* q, h8 R, N
  116.         return 0;
    $ A4 z- S% Z( v9 f7 Y% u+ }
  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 . G8 J6 a  `$ d( M3 I
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

: O* ~& D4 T" Q9 A+ C" s你用的编译命令行格式是什么?
  e# K6 @  K7 a8 l6 `2 ?
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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