- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-4 m- t6 i7 m8 E, y! o
import socket
& H; z" a+ V ?0 W- Dfrom myutil import *+ Y9 f& E& T% K9 ?1 T3 Z' V
from binascii import unhexlify as unhex
1 M0 o; w5 _2 W5 E" xfrom ctypes import *, }- l/ V( A$ P( s: _
dll = cdll.LoadLibrary('mydll.dll')! ~. X& P, P J/ n. v
print 'begin load mydll..'; h- h1 L) o/ Y' ~" M: @, ^3 K1 h
#key
% l$ d( M' }) F" b6 F4 ]% X4 y0 ]' U: Qkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
1 S8 m+ g3 e' p2 d5 s) o5 p#output MAC& _2 U+ y( [" c5 S, G3 c
mac='\x00'*8" B9 X. [+ p: U2 r& V
data='\x00'*8
- `4 w, E; q: w! g$ Spkey=c_char_p()9 \+ c) W \' k! {1 a& C
pdata=c_char_p()
* G0 M' o6 o& h' A- hpmac=c_char_p()) |( }( T( @" D# s" X/ T2 k
pkey.value=key
" x* m2 h/ W# y& r7 y8 ~, C, ^pdata.value=data/ y1 O) _4 O3 t A4 M! H
pmac.value=mac4 l7 f4 l% m. D- d, f1 @/ L
#pack1
4 K5 ]; u% ?7 o2 i$ m4 s- oclass pack:
2 d% _- p# B* i! S pass$ L k/ f# T9 M) k) z: L8 v, B: J
pk=pack()
L. W' m1 Z5 I" ~3 b: @2 @pk.len='00000032'/ F# m& `3 }1 i1 X4 H6 Z
pk.ID='0001'
8 S/ l% [$ U9 apk.slnum='00000004'
0 w0 u( t+ S+ ?5 L( \& h: f$ B/ opk.poscode='123456781234'
- N4 q. \# O: x# O Jpk.rand='1122334455667788'$ O/ B [$ d: i; U5 z" z" [
pk.psam='313233343536'
+ O. E4 w7 z# Y8 T A5 l4 c% Mpk.kind='0000'
; [8 z* ~& j# T5 |+ \' E* }4 J; Qpk.ver='000001'% x" b/ k' A& g5 N; g0 R* M$ G
pk.time='20140805135601'7 \+ q5 a0 g( a3 r1 g
pk.mac='06cc571e6d96e12d'" Q4 o4 S. G" C- Z5 a
& |. s+ G6 ?. R- w' s# k* v
data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
" h6 @; a6 s! [7 i" X5 e#print_hex(data)2 L; o6 D5 C4 A2 z9 T5 X
pdata.value=data
, |; T0 A# @6 @: Z#cacl MAC4 r9 z) C# p# Q% K1 N
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)0 ]' K4 D/ t! G' X2 \4 y7 k
stro= pmac.value5 R1 n. `: ^$ O* z
strtemp=''8 u* h9 b; e5 ~! Z% N& p1 i
for c in stro:
3 H4 R6 y" L% J/ f$ u9 ? strtemp+="{0:02x}".format(ord(c))4 C/ J" q6 @, @ [
#print strtemp1 \% ]0 u% {9 j$ }
pk.mac=strtemp
3 [- ^8 V" H! M2 V! I# K#data to send
# x' f; S: ]- i6 T; s- B: lsd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
. O* I! u+ j" f6 }print 'send1 len is 0x%02x' %(len(sd)/2); P9 O. D. y) }% c3 V
print sd
! S2 [3 i/ ]& e+ H, k3 G$ b5 E8 B#pack29 t7 s( ]; z, \) T& L$ j8 s. B0 H
class pack2:/ V' x _8 h X# i9 W
pass
# d4 W% ~) H7 S$ `pk2=pack2()' j L3 J; Z! Y+ l1 S
pk2.len='0000006E'# ]7 a7 R4 s- G" _! @3 [
pk2.ID='0012'5 C7 o) q2 H" W! @4 x
pk2.slnum='00000005'; {5 [8 t4 T1 r6 ~0 _
pk2.fatCode='00'! e( S. Z6 `- \& ]1 u" a
pk2.cardASN='0000000000000000'
2 a1 W; _) p+ _. Q x' Wpk2.cardType='00'* L9 P6 Z- m7 h0 B8 ]8 S( L
pk2.userNO= '0000000000000000'
/ p, ~ |. O$ g3 ^8 t* ?) ?0 c, C# t9 `1 k/ |
pk2.fileName1='00000000000000000000000000000015'
0 Z( ~3 u# c( n' s" D( {8 L/ ^pk2.dataLen1='00'4 R' ?2 i' i, c8 @
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'1 p/ |1 W/ M7 k" x
pk2.fileName2='00000000000000000000000000000016'
3 a0 d! P7 Y1 |% c# ?pk2.dataLen2='00'9 A1 u0 y, ]2 U9 |9 W! c# @3 L
pk2.dataArea2='000003E800FFFF16'
; T: r( N$ E7 g) ?& Rpk2.mac='06cc571e6d96e12d'
) o6 {/ P3 n0 A8 t0 K3 w$ X" ?# x( a, m) F ?4 K; v
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 B: W$ [/ S b( f9 s/ f6 f
7 \" p- r5 w( [2 f9 ]' l7 y, Cpdata.value=data2
8 O% N) ]# G: m3 m: H- @#cacl MAC3 D5 i" h: S. k4 h1 e# `
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
9 H$ k, p# I* X; N5 Qstro= pmac.value
4 b! R+ R* ]: fstrtemp=''
9 _( \, Q* f+ d! Q& Z4 H5 Ufor c in stro:3 e3 c! |: I- D Z8 W0 i
strtemp+="{0:02x}".format(ord(c))
" J$ J* f! j& } j#print strtemp) V5 X# c$ K8 h' ?9 B
pk2.mac=strtemp
9 X% i! X( M5 y5 O9 o* ^#data to send
4 d* Y3 T) g3 Y% ~5 i4 wsd2=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& @' Q" @' H3 @) r9 S1 {2 E
. h1 X+ J. J+ v0 C. D
print 'send2 len is 0x%02x' %(len(sd2)/2)
/ B% e* E) t8 x2 lprint sd2
' \: K% n* `1 [3 X5 c7 a8 E
" Y. d! H3 w" V; ]9 l. i e0 r! u6 K0 R
#PORT="192.168.60.37"
$ J& ^' E1 [' |; ?- M8 X J#PORT="localhost"& _$ t) A# ]2 ^. a; ]( ^& B6 Y' R" u, n% d
HOST, PORT = "192.168.51.28", 5800# y' b' W* g. Q0 `9 R5 K; A$ ?
# Create a socket (SOCK_STREAM means a TCP socket)' V* l: M/ g7 E8 d7 f
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)& R s& s0 z- n. ]8 e
try:5 A+ _) h* ^6 U; `2 o X t* Y
# Connect to server and send data
4 k: [# u! g9 } Y' f sock.connect((HOST, int(PORT))( W0 K1 G; D2 l+ e- \( m9 U
#data= "123456789"8 _8 H! f5 h% |* [+ H9 h
#s = struct.pack('bbb',1,2,3)
) s1 [7 l* ?! V4 i6 @2 y sock.send(sd.decode('hex'))
" o: X. e: U' X9 F5 H print "Sent1 OK:"7 q4 E) N$ s: w/ N
print sd2 f$ `7 k( P" P' V9 |3 ~3 L X
# Receive data from the server and shut down" G4 b6 A, B( u$ N$ T/ R9 P' [
received = sock.recv(1024)$ ?- C8 G% ? K S# I( ~& P
print "Received:"2 i) o. m/ L( P& J. W6 c
print_hex(received) U% O) V) i( G1 m' D! e; R* Z
print 'received len is 0x%02x' %(len(received))
! s0 f' R1 k+ @1 ] print 'received data analysis...'; O+ r/ O3 q* _: ] Q# z5 e
re1=received[0:4]
+ {, ?$ z6 U$ ?4 w8 C$ W [ print_hex(re1)
" W, \0 _% `0 T! m7 ^) ] re1=received[4:6]
# m& x3 m$ B5 c, I" z/ } print_hex(re1). v' X* ~7 w; y! ^/ u- ]0 w7 n( w
re1=received[6:10]
3 j) v B0 L! _ print_hex(re1)
4 o, ~& C+ B$ a6 E re1=received[10:16]% z; z% { W8 H: K9 t6 M t
print_hex(re1)
1 ? j( N- Z, u4 r; V. R" I0 o1 v
#pack2 send
: _9 t! p1 `4 ? sock.send(sd2.decode('hex'))
% U8 H. ~" F0 ^9 w! g) r* G print "Sent2 OK:"
W- K9 b) |3 c7 e) V; C print sd2
$ B( f+ y% r, X* H6 |7 N1 B. Q # Receive data from the server and shut down) W+ B p- M4 t7 l
received1 = sock.recv(1024)' V& X8 }9 ?1 |* t8 X
print "Received1:"9 j3 \ B4 K9 k! G- Z K$ V1 _4 G
print_hex(received1)1 T, D+ f- P! q) n& A% D
print 'received1 len is 0x%02x' %(len(received1))2 n [% R5 o( y# ]4 s. b
( x- t6 w; G2 P- U! hfinally: m( W9 y) S7 [7 }% u
sock.close()5 ?- t6 B6 e: } h, z
# f6 T, ]1 B7 \2 ?- ~: b* }s=raw_input('press any key to continue...')
( p8 b9 s/ S. X! c$ y: j; N0 d' t0 x5 B2 I% q9 i7 |" N& ]
% ]5 `4 r2 Z7 d6 R: P2 G) z% z |
zan
|