查看: 17092|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 p& a$ a( p2 Y7 L
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    ! b2 x" Q  `/ V; A& I
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
' i. n# @" [$ X- uusage: himr <address> <value>. sample: himr 0x80040000 0x0
3 E3 ]- C4 W* T6 ?9 R1 V3 W
. T1 W; z9 O- m3 ?4 n3 W
& l. I; T. i1 N1 l) K, E7 k不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?1 d9 R! p$ f( p4 C" [. g+ |
% ^6 n5 T. X+ s$ x  Q
补充内容 (2012-3-8 09:42):
  @# `* H2 u! G- \4 f, ghttp://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数7 \3 A7 U8 p  q# J) Y0 e% V( p
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 h" J8 U2 ?0 r  D. k, B
3 t, G+ n" I% |6 s! M, E# [himr <address> <value>. sample: himr 0x80040000 0x0: s; i+ G! H$ w  H

8 K9 D; a4 b+ o1 v/ y% a例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。& ]+ k; U% c% o; O; D" D
himr 0x80040000 0x00
5 _( q, s: P7 N: O! Hhimr 0x80040001 0x11
% E, {  ]( g$ n. L8 Xhimr 0x80040002 0x22
5 {7 ~. h/ B3 {3 Jhimr 0x80040003 0x33. l4 F/ d- L. u" Q
himr 0x80040004 0x44
" n! t7 V, j" w7 f, e8 s7 Uhimr 0x80040005 0x55
/ X# D" _! T% P% ^/ ]
) F. u9 [. e1 H; S+ P/ sSN也是类似。8 M0 H; @- c$ l: f" }
' G) G& u% K4 n% U8 J
现在主要是,谁告诉我们MAC和SN的地址?
( Y& A0 G# w- b8 P9 ^
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 1 s1 O; B0 `: r7 K
一直想找到运程修改MAC和SN的办法,苦于无解啊
4 b! I2 _( f- Z' D! }' \
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 3 N6 T7 c8 Q( c& f, }9 u" ~

9 B9 ?/ R, Y. T6 @% T; a修改的代码早有了。到今天不会编译。9 h! N. N& c# d
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + {, u, b, |/ i+ o" \5 U
  2. #include <malloc.h>
    0 U' K9 Z& i% ]
  3. #include <sys/types.h>
    # i8 n4 p7 Y! M! ?0 V' j; x
  4. #include <sys/stat.h>
    % z8 o3 H# y0 _1 V: [
  5. #include <sys/ioctl.h>
    : d  _- H# M* A- Y) L2 X
  6. #include <stdio.h>) G$ n5 l9 E, `
  7. #include <string.h>3 k6 w3 @: V& N) x5 }, \- N! f

  8. 2 b# |1 c4 d  I, C
  9. typedef struct {& u- u" O1 `4 s* F+ H. y& X; m, S- q* `
  10.         unsigned int        e2prom_cmd_sub_addr;
    . _0 r/ A& A+ G* v0 X: p6 y
  11.         unsigned int        sub_addr_count;) [/ x  v8 k' b1 H' S! E6 E9 M
  12.         unsigned char*        e2prom_cmd_data;
    ( q9 y! [; i: o& i
  13.         unsigned int        data_count;4 J/ L4 [2 }2 m) C$ \' M
  14. } e2prom_s_cmd;
    5 X$ L8 z9 q5 X+ t
  15. 2 R- P4 _! ?) ?0 @3 ]1 y# @
  16. #define E2PROM_CMD_READ 1- H- h5 h6 ~8 e$ r1 C4 w) t2 T
  17. #define E2PROM_CMD_WRITE 2+ C- j' h8 U' e7 S2 Z3 P
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 v1 R1 K, O2 I- P

  19. * H  B6 I( C- h" }( n
  20. static int readparam(unsigned char *mac, unsigned char *stbid)  m5 G4 n3 u# R) ^) o
  21. {
    ; ~; [% n8 v- o
  22.         int fd, ret;
    ; X6 K  i  G8 @0 z- j+ C3 s* G
  23.         e2prom_s_cmd arg;
    $ B& `. u' j: b0 J5 Q# c- ^
  24.         unsigned char buf[0x18];- w, B: V$ `: e1 J( N
  25. 7 ^+ i% Z# O& Y: Z
  26.         fd = open(E2PROM_DEVICE, O_RDWR);
    / }: |! r# H1 z9 W: r5 B
  27.         if (fd  < 0) {7 {# l" H" b# ?; D/ ]: a
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);5 O0 F* P0 n# `4 J; u  E
  29.                 return -1;
    % `( d; Z7 H: `  r
  30.         }  D( i/ H' b1 w2 Z
  31.         arg.sub_addr_count      = 2;4 \, _( O% X9 e6 \6 I% `4 S( ^# p$ F
  32.         arg.data_count          = 0x18;
    ) q, e4 u5 E3 w. x) ]2 ^5 ~4 s
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    . D) E, q; D' H. i
  34.         arg.e2prom_cmd_data     = buf;( b1 \6 C* R- _$ I$ l# R
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);8 B) Z$ \$ g0 a( r9 J
  36.         if (ret != 0) {) a% K2 ~, `( t; G3 t3 E
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! @0 ?  t0 T( R" I; W$ S; |9 d
  38.                 return -1;9 l8 n1 u% [8 k4 K* b, G
  39.         }) h$ f* `/ N+ ?4 W, m8 M
  40.         memcpy(mac, buf, 6);9 M0 y7 T# X7 H/ x1 T6 X: a# |
  41.         memcpy(stbid, &buf[6], 18);
    7 P) W8 }3 o3 B8 X9 l
  42.         stbid[18] = '\0';0 W$ u  S- i2 Q3 P# J+ T! R
  43. 2 O9 k7 X' Z; X1 ?
  44.         return 0;
    4 Z. S' U' k$ R  `
  45. }
    4 [& Y' U: C' t/ e: b( |: Y. f
  46.   g# z, |  Y+ T$ Q
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)  n+ P0 O! M4 Z' i
  48. {
    ; A" x1 d% h" u$ Z9 S. F
  49.         int fd, ret;& q: T/ N  |" I8 ^
  50.         e2prom_s_cmd arg;
    ( n5 p4 N# O- |! ^7 v. I: R
  51.         unsigned char buf[0x18];
    ( z: |0 }* Q5 p5 g; a' Q* Z

  52. ! ]8 U2 j- X. b% j/ A/ J% V. {8 i
  53.         memcpy(buf, mac, 6);
    + v% k: m: S, i& r# q$ [/ F! S
  54.         memcpy(&buf[6], stbid, 18);
    % a; m, T# i$ P$ z+ q. L
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    9 K1 M2 l0 j5 ~$ |9 T4 R
  56.         if (fd  < 0) {; E! ^/ l  D% M5 o, Y' _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    7 P( h5 R+ r* Q, b) `
  58.                 return -1;
    0 t5 P4 L: G' f* w/ Z, D. Z6 p: Y
  59.         }! W" Y  d1 z) M% J4 l# G. V
  60.         arg.sub_addr_count      = 2;& i' j! V& E% L$ j/ m5 t
  61.         arg.data_count          = 0x18;
    7 _, ~0 F, c/ J& j
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 v! c' C1 }+ {( k4 C6 m
  63.         arg.e2prom_cmd_data     = buf;
    4 ?: X# A$ |$ ]! ]# T
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    + M) |1 o% g3 c' y& d
  65.         if (ret != 0) {
      U4 ^! `0 i$ _0 L( w# h# _9 `9 b1 J$ C8 ~
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    * Q' x6 j$ v$ {3 Y6 H
  67.                 return -1;+ W4 a/ o; C9 W" I2 R( a; Z4 e, H
  68.         }
      [5 o7 N8 _& K( A0 q

  69. # S. A: i" v, r
  70.         return 0;6 j' d# w: o0 \% d9 |
  71. }
    % O# N* \3 w7 C

  72. - `" N' ]: P7 @) I
  73. int main()
    : f- I. m" S* Z, g8 i, v9 k
  74. {" A4 D, B7 s8 P9 s
  75.         char c;
    2 O6 Y  m1 b" N( ^* j7 L
  76.         int i, macs[6];  @4 ^% G$ F' F# c, m' A
  77.         unsigned char mac[6];6 ?* y- H% K- ?# ^1 d0 e
  78.         unsigned char stbid[256];" H, U0 `% Q2 X( Q& I2 K
  79. ( q$ K/ [: s$ Z/ H+ ^4 e+ I0 R: [
  80.         if (readparam(mac, stbid) < 0)( s* p# V9 z6 q/ i2 \
  81.                 return 1;
    : L- p/ z  E) w; a

  82. $ ?$ `& X4 h* f6 S( E0 O
  83.         printf("Current parameters: \n");, |( z. Z: U9 s$ C1 d, Z) |: c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);: g- C, G1 r) e
  85.         printf("  STBID: %s\n", stbid);
    ! _, X! t3 c7 U9 u! G3 ?
  86.        
    / h; c; C3 l/ ~+ R
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    " s/ _& r) r1 z! l
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {
    * x& K% `5 m! q5 }* B6 S
  89.                 printf("Input MAC error\n");7 Z: h/ I; _% t8 o
  90.                 return 1;: Q; [8 K2 D& \4 ^* n
  91.         }: ~- c; O- O; k- x+ h  d
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    ! |9 ^1 i5 |  O) j
  93.         printf("\nPlease input new STBID: ");+ U3 I7 @# Y, W9 n! \( r! }( t
  94.         scanf("%s", stbid);
    ; ~+ x; P- \2 Q7 o
  95.         if (strlen(stbid) != 18) {
    % A  U0 E6 `" N* d
  96.                 printf("Invalid stbid\n");6 d2 E# U; [$ x: x
  97.                 return 1;0 m, G' _, s& ~- e. k) o- j1 f
  98.         }, M1 W4 Q6 E. H
  99.         printf("\nNew parameters: \n");  o4 O7 R6 q! t! w& x, t
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);3 A  w" \+ _7 z# l
  101.         printf("  STBID: %s\n", stbid);
    - ]2 i1 M- e7 X& G

  102. 8 d0 o, {6 X" a9 }3 o( j; K4 ]
  103.         printf("\nDo you want to change paramemters? (y/N) ");! ]- G7 C' i6 g1 `* z3 _
  104.         for (;;) {2 ^- P! d: b. h+ R
  105.                 c = getchar();* X! V. h) H2 `" r6 |
  106.                 if (c == 'y' || c == 'Y')
    ) U/ k" s3 C1 K- M% N) g. V- _
  107.                         break;/ ]- ?% `' c, V% ^
  108.                 if (c == 'n' || c == 'N') {, k0 y. d0 u* v' ?4 ^+ T9 A
  109.                         printf("\nAborted.\n");5 t# B" Q5 c3 _
  110.                         return 1;
    2 u# X# B2 F/ |& v
  111.                 }
    4 t" r3 m" L3 O' f, M; E
  112.         }
    7 M6 r# X0 U$ X9 g4 s  L
  113.         if (writeparam(mac, stbid) == 0) " C. X; H( v$ F8 ~  `
  114.                 printf("Parameters changed.\n");/ U6 M) v( c0 l( y, O& y
  115. 1 p* X( d7 i( t* K: s! a9 T0 K( O) {
  116.         return 0;( U1 x5 T! V0 |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
) c$ S% m* V) D* O* v* {在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

/ M' H& B! }) C你用的编译命令行格式是什么?$ {: k: r+ A4 d% Z! v
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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