- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
+ T* I& V/ J, I `$ M8 R) q; Nimport socket
6 A. ^2 b# d, J8 @1 {from myutil import *& `7 L4 f ~* ]8 X5 l
from binascii import unhexlify as unhex$ f- B4 C5 W( @( o
from ctypes import *2 ^" D; D' L1 L. ]7 n$ T4 P
dll = cdll.LoadLibrary('mydll.dll')
% n9 ?( ^/ Y4 L& _print 'begin load mydll..'
. b E/ ]. ^# w, E#key, q* h1 z) F+ ^0 f
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
& c9 I! n" n8 i( I! Z#output MAC$ b, i' I, W' k, T
mac='\x00'*8
0 W J" J5 N; N6 N4 `data='\x00'*8
# S4 t1 z8 g. W y3 P8 X2 _# Qpkey=c_char_p()9 n( [8 K( a8 F: p* t \! s+ c
pdata=c_char_p()
: p$ f. v4 F& h4 U2 d( ^pmac=c_char_p()' T v* i% o% r3 @8 u( f/ s1 A: p8 m
pkey.value=key5 y8 ]0 z8 v7 }5 m. Y. n% x4 L9 T
pdata.value=data$ b5 ^0 u$ G- A8 i, z' Z# D7 h
pmac.value=mac
! O w$ m1 ?% p) h9 U- r4 S1 O5 W#pack1
. [- x! u' v# B9 `# {5 \class pack:
5 V" X) H' T8 i! p. O+ l pass: J1 \9 k9 B& [7 m: w
pk=pack()
4 _/ l' m$ M7 N3 @% epk.len='00000032'# w! ^0 C) z) \2 o$ h4 E& D T
pk.ID='0001'( b0 L: Y* D6 P; c) C
pk.slnum='00000004'0 B8 l' Z' z4 d7 E
pk.poscode='123456781234'$ ^3 Q# x$ Z3 Z, ]! w9 E
pk.rand='1122334455667788'7 H' x/ E2 P9 y6 W1 ?
pk.psam='313233343536'0 X# p4 ?7 {8 x- b
pk.kind='0000'
4 I1 x f( E1 q. m6 J+ xpk.ver='000001'
4 x: L. @/ @: L' e) s# Vpk.time='20140805135601'
9 H( ]# P* d5 k( c/ n% G/ }pk.mac='06cc571e6d96e12d'
9 l0 [7 T- @8 ]. f8 B6 W% F' L0 ?% d* A5 k
data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
3 p% w# Y, I$ t4 l#print_hex(data)% g) }* a0 N* ]8 r* E
pdata.value=data
) h# v% u" f/ u) K#cacl MAC
# v$ U; [) s" mdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
" _: D# F- U8 r* z- |- t+ cstro= pmac.value+ V. G0 o' E) C- r) p
strtemp=''! O! P/ I' }+ \# v/ |& U* s% M6 N2 z
for c in stro:
/ L- j4 v$ e' |1 {1 r strtemp+="{0:02x}".format(ord(c))
% P& l6 q' d1 K v7 T/ z#print strtemp
1 ^' ^0 D/ q) f$ }3 Xpk.mac=strtemp
3 |! A( S4 u7 `#data to send
% [$ }/ O1 G4 b$ |2 C& Rsd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac0 F+ \8 ~% u0 v4 N. I6 f/ J) p' [' j
print 'send1 len is 0x%02x' %(len(sd)/2)% _& G* S9 v2 B; M
print sd% y0 c( s5 |$ b
#pack2
7 `/ D: C w Pclass pack2:
% @ H! a/ w' P& J* e3 S# F6 K) ^ pass
' R2 ?+ \! U3 npk2=pack2()
+ |3 A# M. ^0 ~. Cpk2.len='0000006E'
' q2 h0 v$ J& ^1 u, L2 Qpk2.ID='0012'
& \0 e# j1 l% Lpk2.slnum='00000005'! `5 s1 q7 p( P8 J
pk2.fatCode='00'
$ _; E& d1 L. \7 \6 c' b7 k4 A8 [pk2.cardASN='0000000000000000'
3 \; x' |5 I3 }+ z& F, [# t/ Jpk2.cardType='00'
. l0 A9 B `, g# `pk2.userNO= '0000000000000000'
! E* D4 ?! W6 {& r7 t3 r, `5 l8 o* P" @% ~* j/ Q' O+ K. {
pk2.fileName1='00000000000000000000000000000015'9 {( v2 x/ `2 D. L6 F' ^
pk2.dataLen1='00'
" ^8 W, B0 z( |0 D+ `1 m- P! |pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'9 A) L* `! N; ]
pk2.fileName2='00000000000000000000000000000016'
0 E$ Q5 B1 v) r9 tpk2.dataLen2='00'
% F6 p& f4 s/ c# W9 _ c: dpk2.dataArea2='000003E800FFFF16'' I4 p5 U; v0 O. ^+ \
pk2.mac='06cc571e6d96e12d'3 T- e* x, O0 d# B3 h3 U% g
6 D- F) a( v' h y$ P, l8 n; B8 N
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 K; O0 \; E* o& ^ b: s6 d) T" m2 ]3 ] R* B* n' R" w
pdata.value=data2! O! Z& b( \/ M3 P5 z
#cacl MAC
) |+ _& U$ u( d9 o' H9 b! l% xdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
* v7 y% D4 }0 y' `' i& Zstro= pmac.value
- z2 ^% h+ E6 i. L7 istrtemp=''
, N4 ?+ I x7 F+ F# G1 N2 rfor c in stro:
6 U6 L) v3 d$ _( D3 V7 M- w strtemp+="{0:02x}".format(ord(c))8 f! r. `' ~5 D9 F x m$ L7 F
#print strtemp0 c1 l1 I# A) o8 Q
pk2.mac=strtemp0 d5 O( W) G; ~* T8 Y& ]
#data to send
( \9 h( W3 f+ q6 {" s3 d( 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" k7 j' s2 E! k
$ l: S/ l6 g5 U5 s. T j
print 'send2 len is 0x%02x' %(len(sd2)/2)! k t" a$ b g8 q9 R x* H3 O
print sd2+ s0 S4 y1 m6 X/ A4 F6 z2 [: p
8 w4 D9 g6 ^! [( e
0 W7 C- {3 y" ?; J+ q#PORT="192.168.60.37"2 q' ]# y2 V# m
#PORT="localhost"0 y6 e' Z) j* Z' R$ w
HOST, PORT = "192.168.51.28", 5800
: p: Y( ^) f, y! x# @# Create a socket (SOCK_STREAM means a TCP socket)/ H1 W9 [% c9 k8 r$ i. }
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ O, [1 Z1 g4 k& Jtry:
5 z1 y# v$ x( f4 B H2 ^) A+ E # Connect to server and send data6 |: K2 I/ [; F' a; ~$ D$ j
sock.connect((HOST, int(PORT))
0 k3 N5 T1 m; P1 a! E #data= "123456789"
' T6 R- V( l' l* ]; A #s = struct.pack('bbb',1,2,3)
& U( V% A# o6 f' E sock.send(sd.decode('hex'))
. y9 J! p( z8 U, `! f: a1 e1 q5 s print "Sent1 OK:"% f/ k7 y/ t% M* f/ `
print sd# f% R% w3 X( P. z; D6 w
# Receive data from the server and shut down5 o, H- o# ^" a8 z6 R
received = sock.recv(1024)
4 q$ x+ C9 x4 A. F4 @5 T9 ? print "Received:"8 U( b- }0 `( e) V
print_hex(received)
/ c s) C3 T# j0 N4 B9 C5 \ print 'received len is 0x%02x' %(len(received))
/ @4 J+ W3 Q* d* s4 D( i- E print 'received data analysis...'
H3 p0 C6 ]& s. N: I9 ?7 _+ N2 J re1=received[0:4]
" M2 ]9 U5 X q" I7 G& m print_hex(re1)
7 t: B3 [5 E" S7 ] re1=received[4:6]
! O: Q2 A. R" R; w+ R print_hex(re1)/ d# b: p3 w4 h
re1=received[6:10]' Q k) ]9 }9 k: h1 x) S" _
print_hex(re1)/ W. {. f" l& y3 Y
re1=received[10:16]
+ \4 T- R4 I4 l3 x print_hex(re1). h* |1 s) m" g( h
d& j0 A w6 E) x( O
#pack2 send
[6 p; K% T( B, p, y" S sock.send(sd2.decode('hex')) v! P4 S3 d0 [4 Q
print "Sent2 OK:"% Z8 n9 X. Z2 }
print sd2
% d/ P R8 e+ `6 B # Receive data from the server and shut down
7 U( ^& s! F' X; o! f: { received1 = sock.recv(1024)1 z+ s! \$ C4 m X I0 Z" r6 d
print "Received1:"
) j- d' x' F$ `3 U print_hex(received1)$ v$ G, a6 B# ]# t/ B( ~$ G( L
print 'received1 len is 0x%02x' %(len(received1)), p) m; q5 h6 U7 Q1 W
% R( A: L2 Z1 u1 E9 u q
finally:6 k. s H+ ?7 m& O% X' n
sock.close()) c4 N+ S5 m& d) [
& M9 f. a8 C4 U, y# B! ks=raw_input('press any key to continue...')2 m2 U* n7 c0 Q7 S1 r. s# g% l
. ^: U }6 C9 c- Q
2 _) B4 v5 c1 w3 ^5 ]( S |
zan
|