- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
! M7 v: ]. H0 I( z$ mimport socket2 e2 b' }1 E+ O, G
from myutil import *
- t y( j3 t# f: m" [from binascii import unhexlify as unhex$ x* e" }) z q5 V0 P Q, t& j
from ctypes import *
' w- }& Z" R+ [8 a$ W( ]6 Mdll = cdll.LoadLibrary('mydll.dll')
: Y" O9 x# f& G2 pprint 'begin load mydll..'
* p+ u. ]+ K* m! |: R$ S; l4 O7 V#key! m# Q1 I G( t4 l. a7 P
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
3 w$ u Z) e$ r% e" H) F#output MAC
+ U3 A% \2 D4 v- ~6 V amac='\x00'*8( B, h9 b7 V9 ^3 O+ @$ i
data='\x00'*8
4 ^. ^5 {1 l/ Y% Wpkey=c_char_p()
, K/ e! d8 L# k+ m0 R) G: M+ u' Lpdata=c_char_p()
: y0 \4 d% x! K5 Apmac=c_char_p()7 {9 g) U- V9 C' u/ }
pkey.value=key5 |+ \: G' r/ q* n9 l# g
pdata.value=data
2 i) W+ X$ f( E5 w8 lpmac.value=mac7 J! L k! E' t9 [
#pack1 Y3 u, j" ]# l! D; @( W
class pack:$ W0 i7 {& |- u0 |7 _. {
pass
# U/ h* m+ S/ P1 T/ ^pk=pack(), C- z, M9 x+ k1 n1 f6 n' y* K
pk.len='00000032'
1 m* C- v( A1 |) g a- Kpk.ID='0001'7 z$ m/ q# `4 p$ x* f9 {
pk.slnum='00000004'
( h2 O( [; W" J9 apk.poscode='123456781234'0 K; R% {% Y5 T2 U6 F
pk.rand='1122334455667788'! t% P& V8 l1 t" w
pk.psam='313233343536'7 g5 p3 O0 j# a" u$ r% `/ h
pk.kind='0000': E" q6 n1 r$ ?
pk.ver='000001'/ W' z" p( ~) p+ b
pk.time='20140805135601'& X# v5 x4 M, m* L" J9 E
pk.mac='06cc571e6d96e12d'9 P# n+ Y# a2 w) y( t/ D( a
6 j; r6 M" ]. }, b ]7 [( H7 }8 idata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time), Y' D9 I7 x( D+ P
#print_hex(data)
6 Y8 _) j* [" T7 h: jpdata.value=data
# B* U7 G' A2 X) O#cacl MAC1 f% T- O. ^2 y v' l1 R+ n
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)/ t; H& F1 l! F4 U7 s
stro= pmac.value9 @9 b: p% |3 J" _7 ^
strtemp=''% K) _& }1 H# j
for c in stro:
$ N1 v( H w! a Y5 B* V8 K0 b strtemp+="{0:02x}".format(ord(c))2 c! V$ q3 c6 x) [0 v
#print strtemp
4 W* J0 Y6 {7 P( I+ R8 Z! Q2 u1 `4 `pk.mac=strtemp
1 C$ Y, T' Q5 z7 `5 e#data to send
% i8 [; b' t4 L' Fsd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac% I0 l7 {( D" Y
print 'send1 len is 0x%02x' %(len(sd)/2)
: L; S. F/ s+ o+ X. h0 N+ Qprint sd9 D: U. r! O1 Y9 I, H
#pack2
' N4 i* ]) _% x) m. gclass pack2:
?0 e: D6 I' n pass
, u/ E; J$ F" w5 ]9 |! s# Jpk2=pack2()
1 y8 {9 l: v8 _pk2.len='0000006E'3 p' k: t1 M3 U' m1 G; x
pk2.ID='0012'
# h- }$ W9 i( x; R$ Bpk2.slnum='00000005'- W6 z/ h2 T- ^$ _$ p0 }
pk2.fatCode='00'
$ o- I+ a' J# ?( `% r0 Wpk2.cardASN='0000000000000000'
/ j; m3 t! H. E. D6 [pk2.cardType='00'
& V6 \+ W5 ]* n/ r2 r! R) f) J4 ]pk2.userNO= '0000000000000000'8 L8 y/ C' n2 o% U6 ^# e3 p
6 M! v$ d) ? O+ @3 M* \3 S3 v' w7 P/ i
pk2.fileName1='00000000000000000000000000000015'7 x& g2 Y/ v' J# v( U' R
pk2.dataLen1='00'
' ^# L3 b' W# \+ A o* { u3 Kpk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
6 S6 r6 p! D( F# Epk2.fileName2='00000000000000000000000000000016', V7 r0 k! t/ n( D- W4 Y
pk2.dataLen2='00') {2 |# [( `4 s/ ^4 G2 G+ K p( d
pk2.dataArea2='000003E800FFFF16'
; }" N- ~& O' U; w# ~* upk2.mac='06cc571e6d96e12d'4 S' |( h8 \1 A
; m! b' V. n* {5 d- K; ~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)
$ v/ P7 W- O% \% [% p+ @2 E& D1 k) c, M/ j2 I
pdata.value=data2( D5 I' K1 U9 M; t( p6 V/ T. _1 f
#cacl MAC
, v& B9 ~6 [- v7 j9 ^5 `( n M0 Gdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
+ x& w- e! k; ]$ e Mstro= pmac.value/ l9 `" b/ j( ~
strtemp=''/ W& K. F) D5 W# \6 t, ?
for c in stro:: f% R6 A- t& {' b! x0 r# J
strtemp+="{0:02x}".format(ord(c))
9 i5 `. Y/ L& B- Q/ M/ `, g#print strtemp6 x& n6 h0 d6 G- M, _4 R7 I: ?
pk2.mac=strtemp
* A- g6 X1 X: m4 W#data to send
# n0 A2 i2 _+ q( S' w( ysd2=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.mac3 F, n" Y8 a" P: o. z) K
& g: @. J9 M6 u. m1 W/ q" W" z( R+ j
print 'send2 len is 0x%02x' %(len(sd2)/2). { @3 d: U, X E2 U( C. z
print sd2) A6 E4 K* `9 |& W# @1 _$ t
* P* u" z. d0 ~+ N. Z& F& ?$ l( o: {- ~! |/ ]8 n( a
#PORT="192.168.60.37"8 E# N0 W* A% m1 Q
#PORT="localhost"
1 r! d$ s% V$ G: F/ q, n1 ], ^HOST, PORT = "192.168.51.28", 5800( z; v$ e$ P. W( [2 M9 \
# Create a socket (SOCK_STREAM means a TCP socket)
# ?& a- H' d' K% @1 S) ?sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)5 z/ m& H8 r2 Y' ^# r$ K! H) A
try:+ E/ d0 ~- U0 V0 m. J) \9 K
# Connect to server and send data c! x. A5 s/ F
sock.connect((HOST, int(PORT)): q& ?& ]5 J5 s
#data= "123456789"
* J# w G( \) l. K! L #s = struct.pack('bbb',1,2,3)0 h2 @7 R% u- Z0 g7 e8 ^
sock.send(sd.decode('hex')). h/ T! P0 s# V# G% p
print "Sent1 OK:"
: }5 D4 \1 f) y1 z2 e! T7 a5 k" P print sd) I: B" U6 u* d! R
# Receive data from the server and shut down9 ]" x* ^3 W# n% N' p; F
received = sock.recv(1024)- y8 b& u& R6 g- t2 c
print "Received:", K8 i3 z8 c* S* f' r/ p
print_hex(received)# Q' U0 P4 A3 @6 ^
print 'received len is 0x%02x' %(len(received))1 y3 V% A( H2 h2 ^. b& b
print 'received data analysis...'
7 g+ y! n7 t4 |6 ^ re1=received[0:4]- k! \& N& ^4 f/ U9 Y( ?8 n
print_hex(re1)- O- c: r7 O1 F5 U6 g5 Z1 [
re1=received[4:6]+ I$ Y. z6 y& ^$ C
print_hex(re1)8 ?6 t& s; u) W
re1=received[6:10]
5 |8 w j3 \2 V8 W/ r+ J# `" ` print_hex(re1)1 z9 E( a" m* _0 ]: {* E+ [; Q
re1=received[10:16]) K3 u4 q$ {9 W6 S# K
print_hex(re1)- z% |( C& Q2 ?4 p m' t6 K! Y
. y }- T/ S. k0 u- g, f* r
#pack2 send
$ W; w' C9 y. ~4 c1 } sock.send(sd2.decode('hex'))
; H2 S! G/ A6 [! Q% y4 R5 e print "Sent2 OK:"* T/ U6 {3 J% U( h* p
print sd29 O, \" C" b F1 R0 r C: U
# Receive data from the server and shut down$ |* ]$ I! G% W! H7 ]' p% H
received1 = sock.recv(1024)
3 |- @- r7 x; I4 P9 T8 i print "Received1:"
' ]8 D! r2 i5 }+ j' c) S* g print_hex(received1)
. _1 U* [" _2 g5 Z- U2 z' Z( a& t print 'received1 len is 0x%02x' %(len(received1))7 a* ^* `' Q% H$ ~: Y
1 i# n4 c& U* J: H4 A+ S
finally:/ |; A2 i/ V3 R( {
sock.close()
k9 S* {2 G! K! ~) U1 K, t8 Y! q+ z6 l1 i' G9 Z2 A" m
s=raw_input('press any key to continue...')
9 P$ ~& w. m' A
$ v' ?8 f; g/ [$ o3 ]+ \" v2 r4 ]$ o- n$ n$ E
|
zan
|