- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
/ {/ n5 |$ S! l: x+ F) Y( k( Kimport socket/ w) f, ?/ k# F, Z% e% i
from myutil import *
; v% D y+ k& [2 ~2 n$ g5 A* [# Dfrom binascii import unhexlify as unhex9 W8 W# r4 V0 I' c% f
from ctypes import *
2 y5 X k1 ?( {# Z% `, P. X" adll = cdll.LoadLibrary('mydll.dll')8 o6 c: W) b1 H
print 'begin load mydll..'
7 Z0 W% e, ?9 _3 n0 j7 q#key
3 z E3 t! X0 S" o1 E. k& S9 [7 rkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
. p7 t$ e- ]4 d- _3 [: b& n#output MAC
1 H. a* l& R+ i0 _$ Pmac='\x00'*8& E9 i+ m- C$ v
data='\x00'*8& }2 p7 n8 E; n
pkey=c_char_p()
" G8 n- c1 U7 e) Apdata=c_char_p()
& q; X* |9 F+ hpmac=c_char_p()
2 r& x& }- z3 |" i" ^9 I: ]pkey.value=key) S. P& e4 u4 F5 y7 a( Q) U' j6 k
pdata.value=data
+ s: @1 l# v" C$ F& [pmac.value=mac- A" a& t0 g# i
#pack1% \+ K& M R& \ w# P1 S- H7 s
class pack:
6 i' _+ p z1 ] p. a pass
6 f4 i& H/ i C9 r) g9 ` Epk=pack()
6 A4 e, y6 r3 u0 r, [pk.len='00000032'0 ?! P' d& o- c7 t& Z
pk.ID='0001'
% u3 }) Q- T6 o& A" e hpk.slnum='00000004'( O# b4 v2 x* h
pk.poscode='123456781234'
, G3 l6 Q& a+ w( p. Ipk.rand='1122334455667788'2 I! [8 R8 [- ^% B, B7 K
pk.psam='313233343536'' k) t+ z$ { w, f9 P
pk.kind='0000'
7 G/ K1 @0 n. z: l7 Dpk.ver='000001'
i( P3 k& Y, e! R- Apk.time='20140805135601'8 C" |( M) s7 L
pk.mac='06cc571e6d96e12d'
% x; L5 R0 [8 p' T. F5 B1 t
$ L% ?" R3 M, D v, M+ Fdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)" j- ] g0 i$ K% c6 Y% X2 Q
#print_hex(data)! Q+ R" p4 E% E2 c% K) k+ e3 m
pdata.value=data' C6 `. Q' @& s* f( D2 i# M$ v
#cacl MAC# o8 w$ ~+ O) ?- R. ~) I, m
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
2 Z" t9 a6 X7 x, a: Gstro= pmac.value
8 ^ C! X! h# Z; _5 T% w- u ystrtemp=''/ T$ d% p$ L* {) o! L v+ l+ \$ y
for c in stro:* y* s5 T7 T j9 n: ]7 \
strtemp+="{0:02x}".format(ord(c))) q$ D/ S6 {- {3 y
#print strtemp
8 @* m- o2 s: O; Opk.mac=strtemp
+ |+ S6 o/ d, E, q/ F#data to send; ]2 Q0 N1 R" Z+ b8 M
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
3 ^1 Q3 B7 _' ~$ \1 D( aprint 'send1 len is 0x%02x' %(len(sd)/2)
1 m' o9 @6 c! {3 Cprint sd: A. J0 q' w% ~0 V
#pack2
/ i1 k( U- c5 K+ @8 S# ~+ Lclass pack2:
6 s' ]- R& F/ q X$ g/ }2 U pass# o6 t3 n; @# Q8 Q {" s
pk2=pack2()
+ x3 A; ]% S$ ^# vpk2.len='0000006E', {8 Q/ M. a. u- u1 W
pk2.ID='0012'6 P) q3 ^0 O* I- ?2 |/ j7 M
pk2.slnum='00000005'
$ W7 |0 o6 F. Q: A, Jpk2.fatCode='00'4 f c1 ~. o/ [1 `+ n
pk2.cardASN='0000000000000000'/ y2 R' v3 ~9 G2 }- e
pk2.cardType='00'
6 T, A0 [8 W9 H: y6 Apk2.userNO= '0000000000000000'
& }5 b, O7 L% r
2 s% S# n7 ~" J4 R$ I, a% D' @pk2.fileName1='00000000000000000000000000000015'
* ^( S; v/ e2 |' u- C' Rpk2.dataLen1='00'( |1 d2 z. v8 D6 M2 H
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'1 K4 R& |0 V& Z, k
pk2.fileName2='00000000000000000000000000000016'
+ T7 V i( m* ]7 d0 V" X! x6 Ipk2.dataLen2='00'# d: ^/ v; \% J: r
pk2.dataArea2='000003E800FFFF16'* L& r- `, E% w& z) c6 w/ M: b
pk2.mac='06cc571e6d96e12d'3 k0 S9 }+ e$ E; z0 n5 B1 F: X
: l! n- o- G' R& k4 T9 a& O0 Ndata2=unhex(pk2.len+pk2.ID+pk2.slnum+pk2.fatCode+pk2.cardASN+pk2.cardType+pk2.userNO+pk2.fileName1+pk2.dataLen1+pk2.dataArea1+pk2.fileName2+pk2.dataLen2+pk2.dataArea2)
/ G, m( T3 p. ^, R, P$ C8 P6 |; m R& T, w
pdata.value=data2
9 Y! C- ?" t) _3 d#cacl MAC7 A" `( W/ q; W3 U% X
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)3 _3 [8 j* e7 l% h( D8 F6 j
stro= pmac.value F9 Z8 n( e$ l0 S
strtemp=''
( Y2 g4 v( d6 N* T& Dfor c in stro:( i7 \5 a5 d% R. O+ e R3 X
strtemp+="{0:02x}".format(ord(c)). h S3 P2 ^* G. A
#print strtemp
, {7 Y5 x. J/ e) d) T/ O3 Ypk2.mac=strtemp1 N0 ]* l: D4 s9 K, w
#data to send7 r, o( ~% Q7 v3 r
sd2=pk2.len+pk2.ID+pk2.slnum+pk2.fatCode+pk2.cardASN+pk2.cardType+pk2.userNO+pk2.fileName1+pk2.dataLen1+pk2.dataArea1+pk2.fileName2+pk2.dataLen2+pk2.dataArea2+pk2.mac7 X) l! |4 E7 q8 H6 {) Y. l
; n; F8 Q4 r9 o* m& U% R. ]/ v8 S$ ]
print 'send2 len is 0x%02x' %(len(sd2)/2)
- f) j6 J) D+ J7 z' Oprint sd2& Y, O# h9 Y M' P6 M7 \* c! u
' `7 _8 h7 @0 _& H6 ?
6 w+ E7 D R7 o, V ?% x e#PORT="192.168.60.37"
* ?: s8 \2 W" z. u U" \4 R#PORT="localhost", C$ y0 ~9 B7 c- j0 S9 n
HOST, PORT = "192.168.51.28", 5800' Q( \% j8 B0 s' g
# Create a socket (SOCK_STREAM means a TCP socket)* G9 G# c- U$ s2 {, E" n& Q
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)4 Y7 ?" i8 v/ b
try:
5 z6 W) H/ `$ N( B: G1 H" J2 s # Connect to server and send data6 ^% R# G9 D. C# h
sock.connect((HOST, int(PORT))
1 k+ `. Q9 b9 D5 f& r# q% Z2 {8 R #data= "123456789"/ f5 d Z% f, s- I# Q, q0 i4 o$ P
#s = struct.pack('bbb',1,2,3)
5 Y( D) b* x- A2 _$ n sock.send(sd.decode('hex')). V# D f. u5 q
print "Sent1 OK:"$ [5 L* `* x9 W {4 e, K* @
print sd# u- h1 H- ]! |1 ~& r0 K$ }
# Receive data from the server and shut down, c/ A4 y: u' s
received = sock.recv(1024)
8 o. T {& |+ `- B& o5 o print "Received:", P3 A# A" _/ N3 T$ z2 }1 L* [
print_hex(received)9 I" D6 E) R e
print 'received len is 0x%02x' %(len(received))
- f$ Q) C) l/ a% w print 'received data analysis...'( i H0 X2 f* W1 t9 W$ a
re1=received[0:4]4 q0 y. ~/ n" z, H; X2 }6 f. c4 H
print_hex(re1)! M$ {/ z0 u) P; Y- l) S. |
re1=received[4:6]* u) q& d0 m( ]) d: H1 i" K6 ^
print_hex(re1)
2 I! e0 U' O* { re1=received[6:10]( l$ M, z- [8 A8 a5 S
print_hex(re1)
/ y5 o9 {) t( e4 ]- f5 V' v re1=received[10:16]( ?, M: m- o/ {, x( }
print_hex(re1)" f$ G2 h9 V% T! G7 W4 i
: k# u# Z f4 S' O G+ |2 W/ N9 {3 j
#pack2 send
+ f7 j2 M5 D% S' K; H1 Z+ S( v' ~+ ]5 n) X sock.send(sd2.decode('hex')) C x% m) _6 u4 c0 G! Z5 K4 ]$ Z/ A* G
print "Sent2 OK:"6 f: n. ~ `" y, C
print sd2
; I- }% }+ z2 h! d4 o* r& d # Receive data from the server and shut down
9 s* y' @1 C$ a/ {. F, c' T received1 = sock.recv(1024)
H( X2 }5 d4 l) K print "Received1:"
& e* V2 s7 P l5 k% U print_hex(received1)5 W* z1 L$ Z" [. p
print 'received1 len is 0x%02x' %(len(received1))" J. W# J% v# G. n; Y% r; v$ [
* u0 l2 ]" G. v/ O% @
finally:
$ R' ?0 a2 k* G1 N- N sock.close()
% [" I8 I7 {( H. |4 P: [3 P' N
6 j2 X \: m- x+ i" Q9 Q& Xs=raw_input('press any key to continue...')3 ^2 v* p0 @+ X
0 Y7 m) W, \& R& u# h
4 ?8 U4 v# g4 s3 R2 `6 [4 A |
zan
|