- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
" l: X" |* Y- l( \% p& pimport socket. P$ A1 [- E" W a& q! D
from myutil import *
+ T4 D( r5 H" H5 b, C9 j2 ^from binascii import unhexlify as unhex
/ }6 Q" r/ q4 j( P Zfrom ctypes import *9 O7 U9 S) O5 H) ?( |
dll = cdll.LoadLibrary('mydll.dll')5 a$ H% y4 [+ }4 f
print 'begin load mydll..'
( z2 A- f* y) r2 i/ D7 s( ` }#key6 P& J: L) V5 X* l: I
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
% n3 l, T( j U#output MAC
, f/ R* b! `+ I) G# y: G. M7 Smac='\x00'*8
# a( m' S! Q6 P* v3 W! x ldata='\x00'*8
f3 k- o4 h! v) F6 P: Lpkey=c_char_p()7 a8 E$ _% u% M4 f8 [4 u+ F
pdata=c_char_p(), l' u6 R5 r3 S0 c
pmac=c_char_p()2 Z' J9 L9 S& V& P
pkey.value=key
$ r; M4 J7 [" ~pdata.value=data
) I( O+ Y( H4 u2 C" apmac.value=mac
) i. M7 j+ q. m#pack1. b, z o- b( U8 J* }) e; M- K7 G
class pack:
8 v$ _9 J" \3 F. ~ pass2 \+ d7 h* G5 `; X7 }0 @0 |
pk=pack()! Q3 l2 _5 e/ L$ _
pk.len='00000032'
# C- G* a4 H8 @& L- K! m! {: Apk.ID='0001'/ }# y& e1 m& L8 r3 H5 a# W
pk.slnum='00000004'
, t+ C5 h8 P- Npk.poscode='123456781234'0 }* L0 H6 n( q( I
pk.rand='1122334455667788'7 Z3 m2 e# z% v' z
pk.psam='313233343536'$ {& S* F5 ~/ _, \$ V. Q. N
pk.kind='0000'
2 \0 L, @6 R9 f: K' U: t- Y& R# r' Epk.ver='000001'
$ A& @( G2 S9 B# ypk.time='20140805135601'
, C1 M4 |4 _. z8 g$ Gpk.mac='06cc571e6d96e12d'" R9 o' A8 N) V
8 u9 |3 w$ n; Y; ]6 M
data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)- D* i, P. K2 J* q, ]3 W( g1 j
#print_hex(data)/ {+ c; I; f9 [) u0 _0 e4 t
pdata.value=data7 F a ~; O( W' I: ~0 X
#cacl MAC
6 \3 U; i! t" Q: c K$ q2 e+ tdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)- u: g- Y# u* V0 e
stro= pmac.value9 B; f7 [, V8 V2 b) p3 r5 q( Y
strtemp=''
% B5 C6 v" ~" C! T3 xfor c in stro:& R' t: T7 ]4 d5 e4 V) S
strtemp+="{0:02x}".format(ord(c))
! e5 s& N+ g5 L! Y/ x& h! S5 M% s#print strtemp
7 R) P3 g3 @. r6 }pk.mac=strtemp8 M: C' H7 T7 g% Q* H
#data to send: c j& G: i) Z# Z$ v! M3 C) I1 r
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac' e$ h2 Q2 }, V7 I! ?/ l1 O
print 'send1 len is 0x%02x' %(len(sd)/2)7 E3 T% E! f3 Z( z/ z
print sd
6 `2 x. b" X" u( i- n- Q#pack20 l( [% `, {& _$ a
class pack2:$ J8 A' ?& ?# M( I3 U/ W6 e
pass
# U7 _0 K) E6 v2 spk2=pack2()
$ ^4 L u3 k+ V. R( c/ U' J5 fpk2.len='0000006E', q+ r/ }: {, y. k, Y
pk2.ID='0012'/ y3 {1 b G* W8 }# T
pk2.slnum='00000005'! k. R( }, d1 F9 w. N W
pk2.fatCode='00'
7 i6 Z$ H( ?6 ]4 k0 lpk2.cardASN='0000000000000000'; Q, f* R, W2 P4 P5 N
pk2.cardType='00'" D$ l' |: W$ i" _$ @
pk2.userNO= '0000000000000000'
9 b9 ], H( M0 \. h6 |
+ ^7 k* F. o" Ppk2.fileName1='00000000000000000000000000000015'! F1 b- Q1 r3 f7 ^8 |# j
pk2.dataLen1='00'/ S; I. G; J1 P4 {+ w8 N; a2 T% _
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'& u5 p' k) `/ P9 r4 Z6 p
pk2.fileName2='00000000000000000000000000000016'
u& s# U& P+ Y# N3 R8 Tpk2.dataLen2='00', P* K/ A! C0 v- l
pk2.dataArea2='000003E800FFFF16'
( Z. z- g! G, E) z3 Dpk2.mac='06cc571e6d96e12d'' h4 t: C& |9 q' ]" }7 T0 ]
2 n, Q6 Q5 C2 o7 \, _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 o* `, F) N+ P" \
e4 [4 |3 m( Spdata.value=data2
& Q7 n& h- ]+ P. K& s; I! b6 y3 l#cacl MAC
2 F- D; @9 h2 Q- F$ ?dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)4 k9 I- W) V7 w8 _6 C3 u
stro= pmac.value
: x. Z4 h2 {! G# y9 P% F/ Gstrtemp=''+ `0 \4 f: p" \
for c in stro:
3 G' F/ S$ G2 ~, u: p strtemp+="{0:02x}".format(ord(c))& ~) H0 K, b- L
#print strtemp7 r J u$ w- \
pk2.mac=strtemp& c$ _* Q* E; m0 ? _7 ^0 R1 G
#data to send; d1 q p2 ?, M) e
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.mac6 t. n* f' q% k& F( R: y
) S: b+ E1 o2 H
print 'send2 len is 0x%02x' %(len(sd2)/2)
0 |2 p5 z' j9 y! M6 tprint sd28 h+ Y/ a9 ^& Y6 k* x Y3 k
4 v- U+ e0 |3 u2 W5 L! \* f- E& i2 k% [: @6 N$ y
#PORT="192.168.60.37"
) g2 G5 e. N( ?, u#PORT="localhost"
; \4 n/ N6 s1 c+ N) ~' Z; L* O$ m5 n1 rHOST, PORT = "192.168.51.28", 5800
' {0 {8 j! H$ N5 Y# Create a socket (SOCK_STREAM means a TCP socket); A. J& I% x" Y0 W. H% _7 P4 M) i
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM); e& h2 K3 @2 t
try:) }2 [* q$ x' F
# Connect to server and send data% R+ M8 v* K* J5 i; p, S- b
sock.connect((HOST, int(PORT))
4 H6 r! M+ v' L: l( ^! }# F #data= "123456789"
# i6 r4 i' R0 t6 v #s = struct.pack('bbb',1,2,3)
; ]4 d+ \; p% W: m" E sock.send(sd.decode('hex'))8 t. h( X9 w$ _2 p' C
print "Sent1 OK:"6 x9 L; b: o2 \3 Q% H+ o; J* b4 n$ P
print sd6 G* L' a5 P9 M8 O8 ?
# Receive data from the server and shut down
- B2 A0 h( y, \4 Z; {& P received = sock.recv(1024)
+ U C& t L) U print "Received:"1 C8 Q3 e+ o: p! ^
print_hex(received)
$ f# u* z% @ m4 Y print 'received len is 0x%02x' %(len(received))# m! g% Z {1 k* l% o+ Q
print 'received data analysis...'; u, ]: g4 ^9 z; ?3 |& m i
re1=received[0:4]; p0 ?, g( \3 Z7 w, c: J
print_hex(re1)% O" b( C* K* F
re1=received[4:6], `4 h Y1 C% k5 y4 o, k
print_hex(re1)* w! g& W% `6 c ^" s& s1 k" `
re1=received[6:10]
1 W) N# I( E& r print_hex(re1)2 ~ S9 x$ c$ e& l, Q/ B
re1=received[10:16]; t" z; I- ^/ G8 [7 z- j7 y
print_hex(re1)& j6 f6 U& d2 d+ ^3 {6 o
9 S) G7 @" n. G7 g/ i" r7 u
#pack2 send
5 ?* e' J F+ z/ l, V5 ? sock.send(sd2.decode('hex'))5 t# D1 z+ n" u* F1 n- \0 t
print "Sent2 OK:"
- Q4 O$ H2 J) E* a# f% v) L print sd24 O" ] B4 z2 k6 n1 ]
# Receive data from the server and shut down
# f/ b: s1 F: Q% H; y& x received1 = sock.recv(1024)
) f6 P& M. P$ a* E2 H f( ] print "Received1:"
# B7 K; O O0 |+ m" X2 K' O/ t5 e print_hex(received1)
# j( D3 B) i& F. b4 ^ print 'received1 len is 0x%02x' %(len(received1))
' _# k( p3 u$ N4 [- R
$ x3 o+ W2 v% _0 _/ _: qfinally:+ M7 ^7 M- X) C5 G& d0 H) X
sock.close()
- v/ A* [" C2 c
# h7 y/ ?/ Z) I% w, \$ H' Ds=raw_input('press any key to continue...')% {) D; A. F/ ]# D
% @! f7 W1 R; J( |
, }# k4 P% n; @4 U; y( c& m9 j
|
zan
|