查看: 16677|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 | 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr3 ]8 }4 i5 h, }; f7 n' r6 |
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig. G2 Q. U' Y" P9 i6 W$ {
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
& {5 d2 b4 w: b' w& z; z3 Z) n: {usage: himr <address> <value>. sample: himr 0x80040000 0x0" ^4 m5 F' s1 @+ ?3 ]
2 X8 c6 M) ?; B/ n# [8 k# G! r

, q$ g6 c5 Q2 U# F5 q& i不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
6 I- G" Z+ H4 Y- l* R
# F  A9 I" s8 k# t+ M4 P, k) o补充内容 (2012-3-8 09:42):% a4 R' m! f1 E" b( E& z
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% Z" N, O  K8 U) g; V, S( r, H& ~这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 | 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 | 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 | 显示全部楼层
估计就是执行这个命令。5 R+ [. h; a' ^# H& E* S, R$ ?
" N" r1 @+ }# X7 J4 \6 R3 x
himr <address> <value>. sample: himr 0x80040000 0x0
9 _( E* m% P/ R4 H+ J! h+ e" e
: ^& R1 n) X3 O, y; F/ \( G6 S) _例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
4 C7 ]) C+ d! {/ E$ {: q% B+ Q( nhimr 0x80040000 0x00
& Q  h+ A8 v; l: ?himr 0x80040001 0x11; i( l' j6 b) T" }
himr 0x80040002 0x22
: G2 l: ~7 ~$ r2 U* _: ]" Khimr 0x80040003 0x33
5 H4 \: o3 ]' H" Chimr 0x80040004 0x44
; b! Y. l$ w0 }, f6 Lhimr 0x80040005 0x55
7 ~& R  v  K8 g( `4 b
* `8 r# {! u3 S" y+ q" H8 @6 YSN也是类似。% Q' S1 `: s; @# e6 O5 E. U0 k7 ], a3 \
6 M) y: d( X+ A3 `+ _4 M" d
现在主要是,谁告诉我们MAC和SN的地址?9 ]2 l. R( I  p  Z, K
发表于 2012-3-10 11:37:46 | 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 | 显示全部楼层
wowocom 发表于 2012-3-10 11:37 ) H$ R# C# h6 J$ x+ A0 ]/ ]9 N- Z
一直想找到运程修改MAC和SN的办法,苦于无解啊
% W9 L8 q9 a6 E# I6 E
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 | 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! D) j( K4 ]/ p2 m
1 k$ p9 k  }, b! q/ w: m
修改的代码早有了。到今天不会编译。
! x9 C: V# |2 t( d" a" F需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    : x$ i" l+ v$ x2 G8 v
  2. #include <malloc.h>
    7 u7 P3 W& c% i0 J
  3. #include <sys/types.h>
    & L# u/ z2 X$ q, J1 }' Z8 f
  4. #include <sys/stat.h>
    1 @" S+ \" E; Q; i5 w9 |$ Z/ H
  5. #include <sys/ioctl.h>" I6 A6 a) p: V8 a* r
  6. #include <stdio.h>9 R9 t* z# D( O: K* B
  7. #include <string.h>
    . J4 _, ^5 P3 O$ _  j2 c4 P
  8. ' V& I# s( V( H1 K6 G
  9. typedef struct {
    3 K( m, C$ q0 o2 J/ J/ J( Y
  10.         unsigned int        e2prom_cmd_sub_addr;
    ( Y, ?# P. ~, ~% N; ~; x( ]. D5 Y
  11.         unsigned int        sub_addr_count;; \, ~. {& Z; q+ L
  12.         unsigned char*        e2prom_cmd_data;) c( w  v. ?$ ^, v1 z+ L
  13.         unsigned int        data_count;, f% l0 u" M" y, r: X, M+ Y
  14. } e2prom_s_cmd;' `( w% k3 |: p
  15. - \( Q! }8 n8 \' P! R
  16. #define E2PROM_CMD_READ 1
      Q2 m6 g  f7 `+ X# {
  17. #define E2PROM_CMD_WRITE 2
    6 w. f) m3 A% H+ Q: V0 B5 h
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    3 I* [( H0 l3 _" i
  19. 8 y: w* n5 r8 k( d: o
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    : a$ Z/ K4 @0 S6 a3 y. ^" ?
  21. {$ [5 S7 ~& I8 I- m9 N) R- @
  22.         int fd, ret;5 y, z; A2 {0 _: y# B2 l4 t
  23.         e2prom_s_cmd arg;
    , n) ?+ |* ~4 y$ |
  24.         unsigned char buf[0x18];
    # Q1 f2 x/ N: c; Y5 }! L- X2 ^6 {

  25. + T% a4 E/ ^$ ?. W9 a; i! C- j7 j
  26.         fd = open(E2PROM_DEVICE, O_RDWR);$ r- C4 g& V; }2 b" K  `
  27.         if (fd  < 0) {+ }) @' M1 _  u
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    $ S9 c8 o/ M( O
  29.                 return -1;* e. b. @/ J, s/ V
  30.         }; @" Q9 s) Y% l# Z
  31.         arg.sub_addr_count      = 2;
    4 P, {. l3 N6 x9 {+ a( Y: I
  32.         arg.data_count          = 0x18;% r9 p# _( P" `/ _4 \$ P2 x% Y5 c( `& b
  33.         arg.e2prom_cmd_sub_addr = 0x290;" g- v& }) [. J
  34.         arg.e2prom_cmd_data     = buf;
    ( f8 Y' M6 d" h# y" A" c
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    & [" Q+ e' c+ Y) A; h) T3 O% p9 `
  36.         if (ret != 0) {5 T1 ?" y& k2 i  R" B
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    * a! }$ d% x; x5 i
  38.                 return -1;' W* I: V1 M  ^8 o* B( N4 }9 @
  39.         }: C! R( f/ T! c
  40.         memcpy(mac, buf, 6);
    4 l  {7 F: ~. q: I7 G' l! f
  41.         memcpy(stbid, &buf[6], 18);0 M) `8 n# l' g! D% ~
  42.         stbid[18] = '\0';# B- k: w- e  K5 Y$ Q& X# D
  43. + P9 E7 I% Q8 d+ T! d- {! U3 J
  44.         return 0;" s4 ?# L9 N/ R% v) i! a
  45. }1 g$ k2 i6 T/ G" d) w5 t
  46. $ L" q- Q. S; M! o' `/ x
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    ' ~" O8 V: V! U/ z9 w5 L
  48. {
    8 ?: g& {) ^7 U. K; k0 r
  49.         int fd, ret;
    , q; _, y1 i! @/ N0 n$ h" h9 H
  50.         e2prom_s_cmd arg;
    : D% _- I% ~/ K/ I5 t0 R' f' ?
  51.         unsigned char buf[0x18];- Q8 Y9 V5 @: M; \
  52. , G* p7 n0 w3 c* |/ ]6 x* p: F; Z# d
  53.         memcpy(buf, mac, 6);
    + W, _1 E9 @6 N4 ~8 M8 L- N. n. T
  54.         memcpy(&buf[6], stbid, 18);
    " q7 V2 V$ E4 @" T4 ?
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) E/ H/ P! T# M% N# k9 D
  56.         if (fd  < 0) {
    2 G3 l0 z3 r* r0 v8 ^
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ) C7 E  k! {3 S# N6 G
  58.                 return -1;
    ( d4 V. e& R/ s# N2 U
  59.         }/ S. G& d; ]% I9 x
  60.         arg.sub_addr_count      = 2;: R2 I+ ~8 [1 n8 N0 H3 J
  61.         arg.data_count          = 0x18;
    7 i) t' ~" w$ o$ v
  62.         arg.e2prom_cmd_sub_addr = 0x290;6 w: i8 D' ~/ Y, B# V) X
  63.         arg.e2prom_cmd_data     = buf;1 t% N$ [4 h/ E/ Y" Y8 c1 A+ C6 h
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);" D. g' C1 j  }2 u, b3 @+ w$ ?
  65.         if (ret != 0) {: p7 i! A- G) m6 |
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    2 [* |( s3 z, Z- y0 r
  67.                 return -1;( J6 ^; w: V6 O, ^* ^
  68.         }  z+ y- l( R8 O" m4 K: y& v7 j
  69. 5 i* ^6 X. B# E8 F" ?9 ]
  70.         return 0;
    / e. l( l% Y6 g
  71. }4 l1 D- r4 Z; F

  72. , C1 l2 N  j$ p- ^+ f( L, k4 e/ |' R
  73. int main()
    ( d3 O1 f0 X! P
  74. {8 ?5 p) l3 M! R. m1 B
  75.         char c;8 m! J& f. j* C4 W3 D
  76.         int i, macs[6];
    5 `4 W6 R+ `" b9 P
  77.         unsigned char mac[6];; ]* {% F% D& |$ T7 R
  78.         unsigned char stbid[256];
      U  Y, F, d. d& `" }- t$ ]$ e- m5 Y9 I
  79. 8 l2 x1 g! L. v1 H: R; t
  80.         if (readparam(mac, stbid) < 0)
    ) V0 ], k& B6 t* B. s! c
  81.                 return 1;
    ; W4 i' L: O0 e) `" p( _) a
  82. ( o$ ~0 x2 ^4 D* y1 w2 k
  83.         printf("Current parameters: \n");/ S8 O. C* |" Q( e. ]
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - F( E% `8 v3 y- K& l
  85.         printf("  STBID: %s\n", stbid);" o3 m# K* w7 N& P3 i
  86.        
    4 N- e. J9 z# Y1 V
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    ! X1 ]6 \2 r& ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {7 D0 g1 D! I# [+ y& x+ M* U, ]
  89.                 printf("Input MAC error\n");
    8 I9 d5 S% A0 B5 [  }
  90.                 return 1;  i! v9 O. w2 t! u8 ?
  91.         }
    ! [1 T/ H2 h, P/ S; T
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ L/ A3 M% z  B. T8 V
  93.         printf("\nPlease input new STBID: ");* R8 a6 u2 ?$ D5 w* o; G0 Z2 _! T$ W
  94.         scanf("%s", stbid);- M' p- k$ U' C& b$ @
  95.         if (strlen(stbid) != 18) {
    ! h  Q% i! q/ J! q. B; t- n
  96.                 printf("Invalid stbid\n");
    - I! e- W( q% P
  97.                 return 1;6 g5 U1 m7 a. t3 p4 K# \* Q
  98.         }( A) k. e! g0 b
  99.         printf("\nNew parameters: \n");
    * n" V, J+ m* [5 O  D' W
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# }6 s: R/ M- q$ H7 F" u7 P
  101.         printf("  STBID: %s\n", stbid);
    % A1 U8 u! ?+ q; e. `) x+ ?

  102. ' I5 D" k8 P" T/ G5 a; |& B
  103.         printf("\nDo you want to change paramemters? (y/N) ");  H7 ~7 \2 Q0 L3 M
  104.         for (;;) {8 J  o- k9 d  L3 g8 W
  105.                 c = getchar();
    1 d8 H" a7 J" K1 }: N7 z! i1 ]
  106.                 if (c == 'y' || c == 'Y')
    0 t+ A$ B1 L0 E2 f0 C: z
  107.                         break;* X1 q5 K0 I! A/ U8 F0 {; U+ G
  108.                 if (c == 'n' || c == 'N') {& o0 C& ^  g* ]: i( b
  109.                         printf("\nAborted.\n");
    0 R& I' `; M7 Y, W0 R" F8 I- R
  110.                         return 1;
    7 }2 r4 N) [* d( T3 r0 ]
  111.                 }9 p7 L" I% X* P! C  E$ ]- g
  112.         }. ~  a/ ?1 d' N$ k3 W
  113.         if (writeparam(mac, stbid) == 0)
    . i% T/ X; u+ |( L) {' V2 s
  114.                 printf("Parameters changed.\n");, D9 n4 M! \$ ?% M; a- o

  115. 5 c, t- n- [* H  A& m
  116.         return 0;
    ! V  Y% N# b8 k8 n' S! ?' d& w
  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
& b5 R, H; s8 l3 J% ^! p9 h3 @在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
# n7 f0 q# a1 p2 ~) c
你用的编译命令行格式是什么?
; `8 c- P2 C; Y. B
发表于 2012-5-26 19:45:12 | 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

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

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

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