- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
7 F9 z" \( Z6 f/ B* C1 Himport socket
$ g: ?2 J! N- O* k2 A lfrom myutil import *
0 y7 ]2 {: F' Y) @9 ]; Qfrom binascii import unhexlify as unhex( ^- a2 S- S" M& Z. O! J- h
from ctypes import *
9 @6 W V9 ?4 S& e! cdll = cdll.LoadLibrary('mydll.dll')
# @+ Q. ?9 s# k8 G6 m+ T% c9 Uprint 'begin load mydll..'
/ j; S& K0 P& D1 h b#key
6 g. ]% s0 M7 c7 t( @key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
C, S) y* [6 @/ g2 C* E% x0 [#output MAC2 {" O( g* o# Q1 V% P: c! d& @2 b
mac='\x00'*82 W2 d( }# j3 m- x) m5 H; `
data='\x00'*8
/ W7 R* ?3 P5 N, G( Zpkey=c_char_p()
$ ^* M/ L7 l* p( D# ?9 x/ @pdata=c_char_p()$ l! i* Z3 W/ G2 d q
pmac=c_char_p()" S6 N' B3 G) o; O1 E6 N
pkey.value=key% T2 g- u: r+ ^9 d8 {7 N8 x" V; X
pdata.value=data. v4 r9 M3 B. t: `. V1 s- Z* W
pmac.value=mac% C( Q. ?: S- C h: J
#pack1
) r3 w8 K- m7 J' W/ Tclass pack:8 s6 z1 a& O# m# @
pass+ j! ~ D! k/ Q6 X
pk=pack()/ t9 {% G \/ s9 Z/ h. G O
pk.len='00000032'
( q8 t: n7 u$ [( w( h/ }pk.ID='0001' }: H h! g( ^9 n4 m3 x
pk.slnum='00000004'9 e+ L" {" p6 D% g
pk.poscode='123456781234'
& T+ ]; v( S. c: G. z# G3 |pk.rand='1122334455667788'& C d1 ?$ f- Q; C% w
pk.psam='313233343536'
" C. ^$ a) a5 K* w: `$ C/ Vpk.kind='0000'1 H$ d% N9 i6 A: \+ V/ D
pk.ver='000001'
, ]* P C) l3 R. \! z8 Dpk.time='20140805135601'! S) p% g, P. t7 M" O j" u
pk.mac='06cc571e6d96e12d'
( z4 W( Q1 _7 w
# u7 o+ `5 e* g! C! y2 i9 l4 W. {9 zdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
" l7 H8 Q$ d9 i#print_hex(data)/ x" `3 V, c2 E0 ^
pdata.value=data7 T, A- h F( J: ?
#cacl MAC1 Q- i0 c/ {& A, x0 t% ?( i0 t
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac) U; k4 y" O2 |
stro= pmac.value
; J0 w( s% z- V Hstrtemp=''( _% l; L! g, Q& |; X0 \
for c in stro:
9 ^8 o. t; h" w0 l strtemp+="{0:02x}".format(ord(c))
& q" u' _- H! ~- ?' o! v8 J* S#print strtemp- K# r; R7 h) N# p J7 \
pk.mac=strtemp* w6 x9 A; ?5 ~) U* I5 n. I( J
#data to send
1 Y% S1 o$ e( W/ M, `8 [sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
. }+ V H& u* G$ a+ M/ _' \. kprint 'send1 len is 0x%02x' %(len(sd)/2)
6 b2 L. P: U$ z8 F7 d- q. j$ e$ wprint sd
: J, s" [& H3 d8 f+ `7 G#pack2
7 r4 D g8 i+ `8 Jclass pack2:7 L% S* v B( q/ p
pass1 P) [+ Q1 Y% w9 t: V& e: g& O2 P, U0 }
pk2=pack2()
! Q f5 G/ @: M3 j* [% ypk2.len='0000006E'
' E1 t7 o; x. C+ W6 \+ M$ kpk2.ID='0012'
) p7 V! n$ ]3 l5 v8 F! B3 m% Spk2.slnum='00000005'
/ d, [$ G! I6 U: c. y* n' ~pk2.fatCode='00'( v4 K1 I1 q5 @+ \, @2 H
pk2.cardASN='0000000000000000'
, C. D1 n, w1 F; j* |3 @; C5 Jpk2.cardType='00'
* P% J- |' g" q9 s6 ppk2.userNO= '0000000000000000'* H, o+ y/ O* V9 C2 h4 N/ O; M
( M8 y5 H [2 V8 y
pk2.fileName1='00000000000000000000000000000015'
c5 u5 w0 K1 Kpk2.dataLen1='00'
, g2 X `7 p3 d9 ?0 \% G6 {! ^pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
3 U; d2 L& z' P& S: `) `pk2.fileName2='00000000000000000000000000000016'
! e- l8 z; m1 k e& V. hpk2.dataLen2='00'
8 l7 V" C" w# t7 Z6 M; r% ?+ ?1 Q# Y. Ppk2.dataArea2='000003E800FFFF16'$ @0 H+ y. a; s% ]/ j
pk2.mac='06cc571e6d96e12d'
3 f" N. E5 K& W: Y: P6 {. Y' H0 a1 n/ l" X1 `# `- Y
data2=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)7 ~ O2 Q5 O2 R; I
9 \& t, e% X9 k! t' d; }! g' b
pdata.value=data2
, }0 k0 [" ^8 o; f6 o#cacl MAC7 d9 T: G5 v0 K' B! ?& ^
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)3 {: H0 F6 v+ |9 e
stro= pmac.value
1 J, y0 D4 U% Mstrtemp=''/ J; H- r& R7 f$ [9 l
for c in stro:
! I y$ S0 N+ }/ _: S% ^8 I2 Y strtemp+="{0:02x}".format(ord(c))5 s+ P. h" X% l) `
#print strtemp
% c9 _0 y8 v8 ^$ O1 S9 G7 `8 ?pk2.mac=strtemp
6 _" f" |( M( f, `#data to send5 e; X7 z. E" h M5 h; P
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.mac. @" N+ { w9 b' r
9 X3 d8 t# w, g' @8 Y) Pprint 'send2 len is 0x%02x' %(len(sd2)/2)9 L3 l9 p" |0 i7 z
print sd29 z: f9 B/ {9 ?, x2 F5 r" q
W. f! p7 u- l, W
. g. Z( b2 u. d* |6 S' i- B
#PORT="192.168.60.37"
& | J/ r6 h& a3 D#PORT="localhost"
) i# P3 W* h1 ~HOST, PORT = "192.168.51.28", 5800
; i8 a# \6 t) O/ A# R# Create a socket (SOCK_STREAM means a TCP socket)
, |- d1 R3 m2 N& Z/ _5 `) csock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
& [! Y! G8 e6 g2 btry:# o; h/ R5 S& W) B! `. Z
# Connect to server and send data# P# ^3 X6 v2 ^* M
sock.connect((HOST, int(PORT))4 K% G6 B L3 | D' v: H; y
#data= "123456789"5 O& W! z: E* @) i# V# x
#s = struct.pack('bbb',1,2,3)8 y; O* x1 a" @5 h
sock.send(sd.decode('hex'))
; K8 L" C2 n. ^, _ print "Sent1 OK:"
$ j' w& C6 @$ D% | print sd( [7 h8 `+ R: z9 o& u7 b
# Receive data from the server and shut down& q" G u5 z! S* u) O; L* `+ A' ~: E
received = sock.recv(1024)
$ y0 [. d; X$ @. w, P4 _6 D print "Received:"
' ^2 G D1 | R( {8 D print_hex(received)3 E- q" c n# k, x( r
print 'received len is 0x%02x' %(len(received))0 b' f P8 Y/ Q1 q) `7 j+ |
print 'received data analysis...'
2 r8 ~# n# |0 p re1=received[0:4]8 F5 S2 k4 [2 z' z# y' d
print_hex(re1) y. z; v5 E; ] S8 E
re1=received[4:6]2 p) p v" b4 v' O; ]: I% N3 y) y
print_hex(re1)
4 r+ I; a1 \3 D2 D2 C$ ~7 m re1=received[6:10]
8 m5 z# t4 w, q' o% D( K; T( a7 T print_hex(re1)
' c. I' T' _+ d7 F1 t re1=received[10:16]" V0 x+ {& C! i2 p: `6 k7 E
print_hex(re1)% U/ |5 b% \, s/ p3 K
& ?+ L/ V7 g/ y# k5 \- Y4 r
#pack2 send
. d/ H& _+ w* I7 d; u) q* ]% w sock.send(sd2.decode('hex'))
. }6 |+ f0 x7 n# ] print "Sent2 OK:"' i+ o( b# R& _3 ~
print sd2, j) Y9 ]) F6 k% f6 L* U; W, k+ }% j
# Receive data from the server and shut down
6 b6 W/ ^ P1 V7 b! n received1 = sock.recv(1024)% D4 g. Y! q. e9 n8 u3 a2 S
print "Received1:"; _1 T/ d$ Q, l; B4 F" H- d; e
print_hex(received1)
% ]& A& F0 m- K. l$ k+ _ print 'received1 len is 0x%02x' %(len(received1))2 o9 r% O" Y; w* o$ w$ _ p
' t9 w+ s& t9 |! O# _9 d, @. U
finally:( n% N" W6 F! b m; P, K
sock.close()+ O1 g7 C! ?, b4 @
& j h9 g. \% S4 F* g" a
s=raw_input('press any key to continue...')- u3 I* U6 D% K- g c2 \. l3 h) l
4 G5 j: U; \2 w- j' z6 K7 a8 o
& a% F& `( A! ^ |
zan
|