- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-/ w% L% @* M7 p2 ~, z
import socket
' m0 @2 u3 j, x! N. tfrom myutil import *% w3 X0 ^8 v7 i% l' r0 N
from binascii import unhexlify as unhex; U7 ?' O' f% \( ]( d5 i! n
from ctypes import *! b* I4 p8 l' Y# a6 ?' D4 E7 f2 }/ l* S
dll = cdll.LoadLibrary('mydll.dll')
3 w% N( T- K/ j# ]3 _9 c# Zprint 'begin load mydll..'
6 \. ^# U9 d6 [8 I0 A) q4 P$ C#key
& _) J% p- \6 e* dkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'; r; n1 x& I" g3 M
#output MAC
" G0 j; g- Y2 w y9 J) zmac='\x00'*8
8 i9 D. [0 t5 p* F+ A1 Wdata='\x00'*8+ ~5 N1 H. M1 F* s' g
pkey=c_char_p(); @2 x# W G! }) d" |
pdata=c_char_p()2 W9 H- u, K3 A. s2 t
pmac=c_char_p()
6 a& e* s2 R1 {' T* m L c5 upkey.value=key
2 H7 s% U9 Q1 w/ Epdata.value=data
1 j5 p# N, N" mpmac.value=mac
& m2 _6 r7 g* O2 E9 \0 n$ \6 `% R/ j' a# k#pack11 B5 i1 A! A/ X5 ]
class pack:5 c! V; z! J, |( A$ y$ f# N5 @. g
pass
, E# Q1 X, V' N fpk=pack()) C/ N9 _" a! w
pk.len='00000032'
6 \; v T: s" S3 Y$ ]' r! w. apk.ID='0001'. b( s0 n" A" `$ r6 S0 i5 H" T
pk.slnum='00000004'* {1 F' n! G. |( @ x
pk.poscode='123456781234'
" x- m/ \# D; d* k- V j7 m1 @2 npk.rand='1122334455667788'
+ C- c* }/ D% k9 `pk.psam='313233343536'
& V# n; e! Y3 }- S0 [pk.kind='0000'6 E; X1 U/ [6 m5 M1 ~, E
pk.ver='000001'0 b& J, Y6 S% q& V3 \' f- K+ R
pk.time='20140805135601'
7 K2 t2 O9 Q. c; b3 p7 q! G; K% xpk.mac='06cc571e6d96e12d'
6 I# ~+ S9 j% Y1 V4 h
: {$ u% _) ?$ L# ^( qdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
6 G' P Z( P- E2 n' o* m: Y" J#print_hex(data)& Q* d6 W* U' \* B& b/ Z5 o3 w
pdata.value=data
) W. Y; B+ t5 S9 h' t#cacl MAC
- w. q# @8 v1 c: b) y& j1 Jdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
7 T8 \) p1 Z$ e* O' ustro= pmac.value
" q% I9 q& H4 I5 o% }1 estrtemp=''
; s4 e& s5 k0 K; F, C, y2 Efor c in stro:
e X2 p! v5 N strtemp+="{0:02x}".format(ord(c)); [- v2 ^* F, p8 Z+ p H) j
#print strtemp
7 _! Q3 F$ o6 C% Wpk.mac=strtemp
% f! `! v9 N' q1 B+ r9 G7 w#data to send9 X3 ~0 B( k1 ^* q
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac) n6 o Z; F7 } h0 G2 Y0 n
print 'send1 len is 0x%02x' %(len(sd)/2)
( `9 P& b6 ^6 W Hprint sd: D4 T* g! _ y: X" F5 _2 A
#pack2$ G5 u2 @# V: b( T: y* F% [& K
class pack2:& Y. C% y& o/ ~% }) B
pass6 p7 l" f3 h1 f2 H5 c
pk2=pack2()
/ y5 U& c/ | Jpk2.len='0000006E'0 a6 @& s' y, Q/ h' f/ g5 ?
pk2.ID='0012'
- |# d+ z k5 d" w- Gpk2.slnum='00000005'
$ C/ r9 `# x) P+ r7 H8 N3 V7 s: b; g/ i6 apk2.fatCode='00'8 m8 s, U) ?& t8 N
pk2.cardASN='0000000000000000'
6 o& p/ s& r& o6 ^$ f) H5 v/ Zpk2.cardType='00'& z0 f% a4 t" R! G' P$ y
pk2.userNO= '0000000000000000'1 S0 ^/ v$ n3 Z3 |* @! E S
( U4 C+ h* [5 T" f0 e: Q3 }* l
pk2.fileName1='00000000000000000000000000000015'0 w$ ]6 ` W! d5 h2 x; d
pk2.dataLen1='00'
& ?0 e' K3 r4 @9 Z; epk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
9 D6 c4 i* Z$ ?4 P6 z$ Fpk2.fileName2='00000000000000000000000000000016') u" e" i: U( ^+ u/ X
pk2.dataLen2='00'
9 E7 b G7 E4 |# q& G' Cpk2.dataArea2='000003E800FFFF16'' t, x9 X* L/ e }+ s
pk2.mac='06cc571e6d96e12d'
" L/ o+ G( q( ]2 F" G
! G5 T7 g: l9 o+ Z/ ]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)6 f5 C4 O; H' @( J, u. ]& @
0 V% t9 j4 m1 r- u7 @/ M8 G; ppdata.value=data2
1 W1 p* ~0 M4 u% \" J( I l2 K#cacl MAC
' L; m w* E9 D, L# H* W B4 adll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)" n- c3 d$ Y5 _! D8 P) {' ^# u
stro= pmac.value
2 e0 s8 v3 t+ u% P) cstrtemp=''
$ [% A: `, Y5 O3 v- p* nfor c in stro:0 P5 w3 O$ t" d: O1 I
strtemp+="{0:02x}".format(ord(c))# w/ k' v: x k6 U' R' @
#print strtemp0 j. s) ^: H) A9 p
pk2.mac=strtemp
* G6 b W9 D- B5 d, Y& m#data to send/ S( G2 w. w5 I" s" F
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.mac
N/ o3 N9 E$ _
" G8 V+ G+ q/ Wprint 'send2 len is 0x%02x' %(len(sd2)/2)* e4 q$ W. U2 c; V0 H- D7 r
print sd2
2 x3 q0 x0 D, Q. j% F/ o# V0 o1 b) L% ~
! b( O" o9 D$ G& w5 B; y; F$ W
#PORT="192.168.60.37"9 |& v) v& S0 Z; x+ k5 X
#PORT="localhost"
. k1 ^, t" g& F% I% \HOST, PORT = "192.168.51.28", 5800
8 ?' h2 [- Q H# z8 \% @; g9 f# Create a socket (SOCK_STREAM means a TCP socket)
3 B, ^4 d9 o( [sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)* V/ J; S) r+ T& W `# n% \
try:
4 A/ C* `. k4 q* G5 \ # Connect to server and send data
$ q) s9 E) [( \ sock.connect((HOST, int(PORT))
! E f. t! J1 e: P6 }7 K. A #data= "123456789"
k5 x' o* T! L5 J" U #s = struct.pack('bbb',1,2,3)
/ u- i$ D2 w6 U& L" l9 I% O sock.send(sd.decode('hex'))8 c5 I6 U7 N) t( z
print "Sent1 OK:"# F2 m9 N% a3 @, x2 R! v0 F) h
print sd
; M/ P: E' m) g) _; e r. ~) }+ g # Receive data from the server and shut down& w# f. g' `% S6 _! V- k' \
received = sock.recv(1024)2 B, b; R3 h% S
print "Received:"
( r- H8 m( L5 {, { print_hex(received): L' e% F* q/ l7 s% R
print 'received len is 0x%02x' %(len(received))/ O9 b8 a+ ]: X, k1 z$ N
print 'received data analysis...'
! {+ S1 u! T9 W% y re1=received[0:4]
1 y! A# g% Z5 U9 o/ _( C. H% Z print_hex(re1)1 u! B: L% _2 Z, c. B
re1=received[4:6]$ b0 k9 w) S% [. W
print_hex(re1)
9 T6 E& X! {5 Y1 [: O re1=received[6:10]
# n t: [8 M0 H* {$ e S) e print_hex(re1)
) }" M/ G" \7 F- | re1=received[10:16]1 I8 ?( D2 n- S
print_hex(re1)7 V" m4 k c* t+ u* D
& w, u" ^, \0 m" }
#pack2 send5 f/ [; W) M3 I
sock.send(sd2.decode('hex'))
6 }2 A: _, f0 ~! u print "Sent2 OK:"
9 V3 `; |* X, G! e print sd2: m' V+ g+ O- `6 v% {2 p
# Receive data from the server and shut down
0 w4 h' P+ X7 e received1 = sock.recv(1024)
) n* H0 h! L& ?6 f L' D4 V print "Received1:"
: V8 [+ j, {( S7 Z print_hex(received1)# K# L0 ?* D- j$ m9 u
print 'received1 len is 0x%02x' %(len(received1))
- Q' B* z" B3 i1 s$ h7 `+ ?7 s7 L. C; j$ A5 u) e! V
finally:
7 S1 v+ F% A0 y; ^1 V$ X sock.close()
* a; {7 k% A: O3 Y9 K, J5 X
( f4 u A+ m9 u" Es=raw_input('press any key to continue...')
' e- a& S }' {8 Y: ~$ L) R# R( H2 F! p* D% C
/ q- F8 ^3 C3 Y, S9 p
|
zan
|