- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
) q+ s! l9 v0 p' j4 wimport socket
* t, |& P3 Y/ Rfrom myutil import *8 M D/ A0 `2 W. k" r
from binascii import unhexlify as unhex
j. l: y0 a C, d) x" wfrom ctypes import *
& @6 |. X7 e1 v l7 F( b7 S4 Zdll = cdll.LoadLibrary('mydll.dll')
0 ~- V6 O1 w! e' y, Sprint 'begin load mydll..'6 G& N \* i4 U$ {% ~9 t& g
#key
9 Y1 V8 W+ f$ m% ^7 w% xkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'+ j3 D2 M$ t" C. Z, B+ G# y
#output MAC$ v' z, }+ G/ [) s- F* a
mac='\x00'*88 B O( L+ Z! Y, h" P$ P( M1 N& k
data='\x00'*8
0 s* M/ C, a0 ~" E: N2 u$ u' h' r9 Ppkey=c_char_p()0 ~/ n. H. S4 R/ W f4 A- v0 t
pdata=c_char_p()
. b& G ], N9 d) `0 Rpmac=c_char_p()* _8 n9 V" ^; Z, t, j
pkey.value=key" w4 f' Q( V2 n
pdata.value=data
4 A: O% w) V/ l0 U* O) o! spmac.value=mac( W3 T" C" H& f0 F) b/ @, [' d
#pack1
3 z6 G9 B$ o( J4 N: d! gclass pack:
5 k9 V- [( p& D' V+ W0 v2 x pass
k3 \4 _* d) L% O' ?pk=pack()4 X2 e+ d3 H( V4 @2 [5 p' I
pk.len='00000032'
6 M( y+ g. v% u+ J' I6 Tpk.ID='0001'! P/ X7 S: J7 b b
pk.slnum='00000004'7 H# R* l& o3 n( r$ x% [( h
pk.poscode='123456781234'% t0 T9 d. d! y1 m2 s J" o
pk.rand='1122334455667788'1 s' x% X8 }8 l* r
pk.psam='313233343536'
' l2 y% A$ C' f& C4 {pk.kind='0000'
& y8 ^3 Q6 |/ h' x% ]pk.ver='000001', C4 a' M: N5 C3 j) ]
pk.time='20140805135601'
. d( C6 {) B8 |. E8 qpk.mac='06cc571e6d96e12d'+ V* f$ w7 o: O" l1 ^* P% _
5 b0 ]) A4 _3 S: Rdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
9 d# W0 k+ x, Q' a1 e+ X% |#print_hex(data)/ ?5 V; k: @* S2 \" p7 o* G
pdata.value=data8 R5 J- t7 ]% r6 S
#cacl MAC2 c7 G4 |) O3 H% Q& C
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
2 k7 D0 k/ ?( |2 f9 z' W$ Rstro= pmac.value( D6 d* P/ P* ^. ]1 w3 d, H
strtemp=''
% I6 ?/ p+ c4 O! N( i6 xfor c in stro:
7 m. ?0 D, t' \ strtemp+="{0:02x}".format(ord(c))
: _. V6 L$ J @#print strtemp% Z. s: @9 E q8 L J! s2 i8 }
pk.mac=strtemp
; M" D, w. d9 }$ l( x#data to send
/ r- w `. I* nsd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac0 M0 z/ r0 B* R
print 'send1 len is 0x%02x' %(len(sd)/2)
6 q! l* D. `, \/ v' vprint sd G+ B3 I' _. P7 x; f
#pack2
1 p0 O& o' j* e& m% N9 G) zclass pack2:6 ]9 N' G. {) _. j; ?
pass) ?* J, x* X m
pk2=pack2()! o' S4 A4 n2 s! m. I) c
pk2.len='0000006E'
+ A) B: F" y6 G, m \pk2.ID='0012'6 G7 S8 R# K( b
pk2.slnum='00000005'% k% D7 Z( ^9 m& K; B. K0 ?
pk2.fatCode='00'
+ f% ?, \1 m4 \& Opk2.cardASN='0000000000000000'
. F! P' k. c, @* n: T2 Spk2.cardType='00'4 d% H( s8 k. L+ }! r& J( U
pk2.userNO= '0000000000000000'
" m5 X* w: D# X) H5 j% }0 p) D; h
pk2.fileName1='00000000000000000000000000000015'& N( i! h: t- r& m+ O0 O+ G) v; [
pk2.dataLen1='00'
" `& b' Z8 Y. e/ N9 D" I1 t# C- Spk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
: Q8 Q0 ~+ }7 S h# m: zpk2.fileName2='00000000000000000000000000000016'
, {7 t7 W3 {' w! i. Y' zpk2.dataLen2='00'
0 [' [ G: G4 y# V; gpk2.dataArea2='000003E800FFFF16' W7 f9 ]! r8 S. W* e
pk2.mac='06cc571e6d96e12d'
" _: o3 _4 I. U0 Z$ P0 A/ o$ {6 I
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)
5 I6 Y' S3 n0 ?! x; r
& G2 Y: ]* O. g' R' s. r% Y0 N% ipdata.value=data2/ j# J% Q- r0 |$ r
#cacl MAC
/ s/ ~0 e- g; p! I/ x' ?dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac): \- s {% v/ k) Q+ b8 f
stro= pmac.value% g. W+ t! q- [) k" J7 M! Y
strtemp=''
$ h. [3 y- [: J! U0 z, h% H' ofor c in stro:6 D, z. K0 b. e
strtemp+="{0:02x}".format(ord(c))) n0 M' F' I9 L3 ?, u4 E' O
#print strtemp# R0 @6 y8 F) _& g
pk2.mac=strtemp. V$ V# Q9 B# N+ l/ U
#data to send
; e( p/ i( @: @2 ` P) f7 lsd2=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: O# Z& ?2 v, d2 O4 V6 g
' B; C6 M8 L3 B5 q3 A
print 'send2 len is 0x%02x' %(len(sd2)/2)
3 z3 h" c. l2 L! n$ iprint sd2# ~+ y* U; f' t" z
' c5 D% y6 ]' a' e2 K. p- T% J
$ \( b% U9 y0 q2 e! Q& f' |$ K#PORT="192.168.60.37"
" O: ?# N6 s" ]#PORT="localhost"9 k' X' J3 D! b% J
HOST, PORT = "192.168.51.28", 5800
" C; Z, {1 S* R9 B# Create a socket (SOCK_STREAM means a TCP socket)1 O- r$ x, j, @) x' E' C R2 i [
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)% S- G6 j& j8 k" o. D$ \ u
try:% ?; V1 Z$ u, a# s$ q, X+ z
# Connect to server and send data
3 m# m# }5 X. V+ m sock.connect((HOST, int(PORT))
2 L4 d* T: E' D" H, |! m3 w #data= "123456789"! \, s6 v& q9 B+ W2 `/ h$ q
#s = struct.pack('bbb',1,2,3)
9 [" n/ |0 F1 g/ J G; O* ]9 ^1 U sock.send(sd.decode('hex'))
# F8 M& ^' U3 C% F( S: P print "Sent1 OK:"5 o& a$ A$ S) j2 X
print sd
! c/ q" V& d6 G! t% A" I7 ]* r! Y4 @ # Receive data from the server and shut down
9 x" P: L) q' a* e" h received = sock.recv(1024)
, I+ B5 }7 N6 n# P print "Received:"- w0 s9 q8 {" k. O9 }0 T
print_hex(received)/ b/ r" r- k! p, @; i, P( H$ p& k
print 'received len is 0x%02x' %(len(received))* g7 y4 c: P4 P' h9 S9 V: I
print 'received data analysis...', f/ C4 k1 Y$ P7 ~ y3 j
re1=received[0:4]
5 e0 S# Y: o( C" w1 j+ V print_hex(re1)
. X) h1 X x3 c q re1=received[4:6]
- q' @8 [4 E! v0 B+ } print_hex(re1)
# f0 T: Z% P8 H, _4 ~ re1=received[6:10]' ^. L% g' e8 [2 m
print_hex(re1)
% b( }' |1 b3 E% [% u/ Z re1=received[10:16]
+ g, S/ T3 a( |* k- m4 G2 z9 y+ F print_hex(re1)
/ v* o* M& j x% U8 A& O) z! m
! h1 [- V# h/ W$ M3 A. H* }$ K #pack2 send C5 i6 K C/ [3 @ [- O7 W v
sock.send(sd2.decode('hex'))
5 s* G: V* c5 W print "Sent2 OK:"
6 r! p m1 ?+ j+ g' V$ m9 W' W print sd20 _. p& i; w% n
# Receive data from the server and shut down
) e/ ]: P, D1 |! m" o received1 = sock.recv(1024)
/ o$ X8 ~) ?' U# w" E1 P A print "Received1:"
- `- O0 O9 L/ I# G) Z0 Q8 {. V print_hex(received1)7 h+ I3 Q0 K: @/ n
print 'received1 len is 0x%02x' %(len(received1))' _/ ]( r {0 a2 ]: K/ ?' Y' X
$ X4 x/ G2 ~& E6 N, }2 Y/ z) R1 e) e
finally:3 `8 C4 h( o( M+ k8 y& U4 b: u
sock.close()
& R, m" p, M+ b5 h# ~$ B; U# Q$ x! r% T* Z+ a$ p1 K
s=raw_input('press any key to continue...')0 _$ c- ?/ x$ x' W
& {2 U; g; }4 ~9 Z
% ?# m `# j. Q0 w. R+ k: y
|
zan
|