- 在线时间
- 482 小时
- 最后登录
- 2026-9-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7953 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2978
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1183
- 主题
- 1198
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*- R& M2 J- H# o9 m+ o; `
import socket1 n9 w8 V( _# S, S# l) B: T2 z
from myutil import *7 R5 t. M, a, H* R2 }
from binascii import unhexlify as unhex
$ O9 I; j! B/ \0 d% qfrom ctypes import *
7 c6 I6 [ F8 p/ P$ xdll = cdll.LoadLibrary('mydll.dll'): F1 [! x. h- M# P- F0 p( U4 s1 T2 A
print 'begin load mydll..'
6 t# @, k$ m5 L2 `5 E2 ~6 y#key
{' E0 Q& q+ C/ G; q, Lkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'3 H* P* U# q( G) x! V" ?
#output MAC
/ X1 N y# n7 R! c9 W- q" Qmac='\x00'*8
! h) z0 i$ O, [' Y" Pdata='\x00'*85 a3 n: ]; J' @: U
pkey=c_char_p()
9 ~1 H0 ?& y$ h. M- Ppdata=c_char_p()
/ }4 w+ u" k( O7 Tpmac=c_char_p()! y9 H% G( t: u# M
pkey.value=key. t/ g9 X5 I1 |. @, F
pdata.value=data" N/ Q- ~3 E# `5 b# A2 P. s( j: V
pmac.value=mac( I; I G+ F& b+ {' A# |: e
#pack1
" L1 q* ~& C J4 B, t, M. ~class pack:8 H' B- S. f6 N' O0 i6 c0 i
pass
4 I+ k+ t% Q7 K A& |% l3 t3 dpk=pack()* t5 u: K3 R( @
pk.len='00000032'
( J% ^+ }8 g w' d y5 Npk.ID='0001'! g; u# i7 Y8 q' p) U5 L
pk.slnum='00000004'
9 P: z. F# V" ~1 k. L5 J3 R! Vpk.poscode='123456781234'
5 X: z' {' E# V; `, i3 v+ apk.rand='1122334455667788'
) X' R! w; j! fpk.psam='313233343536'" E! [! U: k6 ? N; ^0 p( z
pk.kind='0000'- b! H3 e4 L/ q, U: A
pk.ver='000001'
9 x% S, _, j) F4 P0 \8 Ipk.time='20140805135601'+ p$ F/ k j( a0 d: T# O
pk.mac='06cc571e6d96e12d'
* P, Z2 {$ Y, x4 x# z3 C& w! H! l. N' V! c2 n g k6 Y" C
data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time) Y% t/ k# i: X: c
#print_hex(data)
. D; S7 x5 C, A' M5 qpdata.value=data4 d+ K1 D8 p& z3 \# m/ x6 c$ T% h
#cacl MAC& j4 t. e2 `0 d5 R
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)- `& i+ P: m: f( v, `8 D. j
stro= pmac.value6 L/ e1 A# y: O
strtemp=''
$ Q; i& c# D! h+ Sfor c in stro:
; y( r e" B( ~8 e strtemp+="{0:02x}".format(ord(c))7 I5 M4 B* k) ~5 M
#print strtemp
n" P g; _% Z4 H2 N9 Hpk.mac=strtemp
+ f4 @, F v. v+ T0 h#data to send
: m2 K+ j: K% msd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac% T" D* r1 ?" W- y& k: j+ ?
print 'send1 len is 0x%02x' %(len(sd)/2)
" w$ b% g- t# l9 Hprint sd; L) G! n" K+ A B3 ]: Q9 L; \
#pack26 e, l8 i, L% O# E7 u& h
class pack2:! ?; T. q3 P7 X$ L- ~: I
pass
9 z$ C/ K& H/ w1 A' G# Rpk2=pack2()
! } a7 U8 ^! qpk2.len='0000006E'
5 O2 g7 `1 q; w* _6 @$ y/ e+ Kpk2.ID='0012'
/ r' i4 n, n. `6 S* i8 u+ lpk2.slnum='00000005'
" k4 f# N) w0 D0 ]pk2.fatCode='00'& B# o2 d7 }" |
pk2.cardASN='0000000000000000'3 S' n) z2 `- P' M& z
pk2.cardType='00'
?0 }1 p; p4 f3 [: I3 M) gpk2.userNO= '0000000000000000'
6 x# ]/ L1 S }# s: Y- l3 [7 n; B2 U! P H! r
pk2.fileName1='00000000000000000000000000000015' l. [7 [, x4 @! ?! h+ Y
pk2.dataLen1='00'
0 C1 y& Q B; A: x% c0 `, L3 F# [5 wpk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'" A W6 q% [# S3 U& v
pk2.fileName2='00000000000000000000000000000016'
' X8 x* m8 }4 V& y" g* ], t$ H. Zpk2.dataLen2='00'1 e& o+ X3 C- l
pk2.dataArea2='000003E800FFFF16'& [9 W! T1 V6 B& T" A7 v
pk2.mac='06cc571e6d96e12d'
" x3 Z5 I: y. h
$ ^8 {% e; b+ U' p* j- {* Ddata2=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)
l- i9 K4 R' x( [# ^! j
8 E/ I" J$ v* @0 }8 R* h% S& Spdata.value=data2
: `8 J3 }' B U4 c#cacl MAC
* z3 L$ y9 S! N) C: j; x* Odll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)/ d8 V. k7 h: b; A+ L5 Z" C
stro= pmac.value
; z6 g# _, k+ N: A% I. P1 istrtemp=''1 i- ~% s5 u; i ]: i- U
for c in stro:- {2 ]' s) H% U3 L
strtemp+="{0:02x}".format(ord(c)). t* C" n5 k5 H/ }) F
#print strtemp
; Q" J6 S. \ |- R6 A/ fpk2.mac=strtemp4 K: S# o! V& O; w: o% t0 D: [) a* R
#data to send
( O$ q+ s [3 {. p! F5 F3 U: Y6 [% 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
- W, S( W/ p I
# j; S# [: @' i2 n% Xprint 'send2 len is 0x%02x' %(len(sd2)/2)8 B$ l! c. k& d8 H0 b
print sd22 M4 L; p! e3 x! M% k7 Y# _
6 p# O$ P+ i8 H- ]$ s% l* h) {
6 J8 ?- v3 _! ]" [( v; w#PORT="192.168.60.37"$ Y9 e3 d9 p- X* n- q) P
#PORT="localhost"
- K g3 X; \7 v0 THOST, PORT = "192.168.51.28", 5800
$ a5 r' p" Y3 @# ~7 b7 s9 R* U! K9 N# Create a socket (SOCK_STREAM means a TCP socket)
3 B: F* P" U% D/ _% T- c Nsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
" |! U( a# ^' u' m% c1 h9 ~try:- t. Z" T7 d0 f2 E
# Connect to server and send data- W6 J; u# ^& C& O0 g) p2 w
sock.connect((HOST, int(PORT))- Q9 @" J8 m& A
#data= "123456789"
# r( J& C$ J; j #s = struct.pack('bbb',1,2,3)
( M: s1 \, @/ W3 E0 G E# I6 C sock.send(sd.decode('hex'))9 ~- e- F2 v6 ~, a% t& a
print "Sent1 OK:"& [. k5 t ?7 b% ~* x
print sd Y+ }- ~! u7 G" N8 ^# v
# Receive data from the server and shut down
/ e0 i# r3 h1 D# D9 a; | received = sock.recv(1024)
% f# M9 G' C! d6 \1 U- r print "Received:". t5 @2 P# [4 I* {# Z
print_hex(received)
* t& o& Z$ C' n print 'received len is 0x%02x' %(len(received))
6 @. C3 |2 w) u, S print 'received data analysis...'& l' A4 V# L' P
re1=received[0:4]5 a T3 F1 Q4 N, o+ n) ^( R; @( \
print_hex(re1)
! q" Q2 L0 H! J+ z, v3 R re1=received[4:6]
" ?! @- n/ }1 @ i7 z7 G* O- U& ~+ h print_hex(re1)
% J0 J2 r/ J% O" o4 v! L re1=received[6:10]
) b4 ^( R8 ~; ~& R, g print_hex(re1)
' l* M7 ~/ W. C8 n. J+ n$ _8 }0 B re1=received[10:16]: A+ s7 V' b2 t4 w U" s0 s
print_hex(re1)
3 A" V( i: \, ]( h- e# ~
3 M8 T/ g8 c3 R, f( P9 p #pack2 send& N! F9 e! e q0 j& `& r y
sock.send(sd2.decode('hex')), N7 ?# N7 L/ h2 ~$ E' \8 b/ z
print "Sent2 OK:"
" @9 a* J7 Q! C" k* f# f& }) `- ` print sd2
* _- [- F" S. R( t # Receive data from the server and shut down
4 N- D. Y% @ H: _4 F5 v t received1 = sock.recv(1024)
8 s6 E3 a3 r& X6 U( k0 Q5 [+ J E2 q8 L print "Received1:"# s; t( Z, S! F6 k
print_hex(received1)2 v0 g" Y; Z/ z' g% _: a r' {
print 'received1 len is 0x%02x' %(len(received1))& v+ z% Q Q: e5 c
: {/ `: e, l* k$ \
finally:5 U3 j" R$ i0 D, D; n3 v
sock.close()
' U3 O* @( ~% \4 |
& o+ ]8 n i! Rs=raw_input('press any key to continue...'). p& N9 ^4 x& j
. d: T$ |0 |$ m/ P8 U1 \! P/ E' q5 T
. J1 L* J9 e5 [3 i& f. b |
zan
|