- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
1 A; R8 b/ d% Y; o, P# qimport socket
8 u, y$ J4 e1 h' i7 sfrom myutil import *6 Q: c% e+ R; q& Y
from binascii import unhexlify as unhex. X& y U8 W7 o; u+ l
from ctypes import *2 `7 z( N4 G( I8 l- X+ w+ ^% E
dll = cdll.LoadLibrary('mydll.dll')
* O# w0 Z+ b* ~+ Y" H4 Xprint 'begin load mydll..'
0 B% Q9 X3 u% U7 }( U#key; q3 N+ F7 H, c5 c6 A* }: u
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
2 D' |4 g6 L+ n5 w6 \* n* c0 y#output MAC
1 T$ q. B9 W! {6 G1 l# c0 @0 Xmac='\x00'*89 u6 D2 ?; R- t+ ?1 ]- ?
data='\x00'*8
: s3 V5 C& m4 s; T7 ~1 P- n$ Ppkey=c_char_p(); S; \/ g* ~3 g: ]: k/ c- `
pdata=c_char_p()( a3 S9 _6 q& A* _, l. s1 Q
pmac=c_char_p()
, V' \9 u% L; p5 \( E8 Y) Bpkey.value=key* D9 o8 Z# z/ j) @
pdata.value=data
- ?6 X3 k: z% E' ]& E5 `9 Jpmac.value=mac3 M' Z0 I; {4 h/ o
#pack1" I, _5 N1 [# W: T; T
class pack:
$ [9 L$ U+ S, h$ ?- u pass$ P/ a7 K+ u4 W) X
pk=pack()+ y; _: ?( c( q- f( i
pk.len='00000032'3 D6 }6 J" P$ ]0 W# m7 R1 _
pk.ID='0001'
, |0 T, t. [5 s6 [1 rpk.slnum='00000004'
. a, M2 K( y3 E. k! B3 s }0 Ipk.poscode='123456781234'
! I9 c- O+ w$ I# g- v) cpk.rand='1122334455667788'1 N2 \! e+ b0 `
pk.psam='313233343536', `/ `: ]& G1 u
pk.kind='0000'/ ?( `" @! N5 V; \7 h
pk.ver='000001'! T- e8 s# ~; O1 r. ^
pk.time='20140805135601'; a0 u! E; z8 d8 c$ V# i) z
pk.mac='06cc571e6d96e12d'6 U2 ?( x- {% B: I5 V4 \9 A' ]$ K
2 I6 p# B1 V" F2 `# ldata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)' T% @" {% p' R; f8 G
#print_hex(data)
7 p* r8 b5 s$ m6 v! N# Ypdata.value=data, f2 p; q! l- ^: s4 g
#cacl MAC
2 k2 \! u/ P0 B$ u5 j* `7 z1 o- pdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac), v# x& l1 D$ Y! r5 N. W* a! \: W$ q
stro= pmac.value# M. y1 e0 ~0 r* j2 f
strtemp=''
8 G& \& \! Q+ R# I4 n- Gfor c in stro:+ o- j% g! y3 K7 _+ @$ D
strtemp+="{0:02x}".format(ord(c))& ~/ e3 t5 [1 r M- M8 X+ v
#print strtemp& C# H3 k* X( y7 {1 y
pk.mac=strtemp0 e" B/ H. M/ H# l, F
#data to send, K7 _3 o# I0 Y# c
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
7 r; M4 i' R9 Y' B; M. mprint 'send1 len is 0x%02x' %(len(sd)/2)
; w8 d* N, F5 y* L0 V$ R/ wprint sd
$ H, Z+ N# U# _9 T( |# [" R#pack2
) k6 n$ C1 x( G+ |; B; t ~1 yclass pack2:: K# Q3 y0 L4 q% W9 v4 M
pass
' I$ s& v0 I* [" b1 Npk2=pack2()' Y7 l g! y: P) ]- u# \
pk2.len='0000006E'& b3 Z$ h; b0 g" v
pk2.ID='0012'8 ]" H# |- _, C
pk2.slnum='00000005'( g/ \+ ]- x$ X2 X' ?
pk2.fatCode='00'/ U7 ^& V5 {6 t! I; i1 T$ L
pk2.cardASN='0000000000000000'0 k/ P: P1 D9 K4 e6 z
pk2.cardType='00'
6 e+ A: p5 V9 X+ y$ apk2.userNO= '0000000000000000'
: M% n5 \( H5 a j3 ?' }& D
) t3 l1 ?3 i1 ypk2.fileName1='00000000000000000000000000000015'
- Z: P' |* ?6 S- o, Gpk2.dataLen1='00'
% a3 V8 @3 z/ V1 T* n% W$ d8 j' xpk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
3 a1 L) p8 ], ^4 Zpk2.fileName2='00000000000000000000000000000016'
& D% {5 S$ {4 }pk2.dataLen2='00') y4 v' U$ J' W; f
pk2.dataArea2='000003E800FFFF16'+ `7 q! J4 q4 C* `- N' }0 J
pk2.mac='06cc571e6d96e12d'
$ X+ a( Q. _. @* S) ]# X H. q" A0 j; ^7 Q4 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)
0 M/ d! H+ C! p1 a2 w1 Q
% _( ?5 J; G% Q6 ?. v3 s$ Opdata.value=data2) V$ [, o$ y9 d" G6 [" H
#cacl MAC
0 r) w( G* e4 q" a4 X' Jdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
8 ?' H+ t3 g* A: K, Istro= pmac.value
' }( c1 g& r E) L) V9 b. dstrtemp=''
3 S2 T$ [; x/ n8 a' Hfor c in stro:5 y/ H Q* F( Q1 t- u ]3 {
strtemp+="{0:02x}".format(ord(c))* N0 |# S9 Z# a; X
#print strtemp. T7 t8 R! u' h' z1 }) s/ V
pk2.mac=strtemp
3 z4 ^; w( z3 W/ y! L' j5 H#data to send
' g* m, a% Y. Z2 T' Ssd2=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
5 D9 T: [) P- @+ f8 Y
/ M1 ]- A1 K! q3 D- c0 l4 V6 L* ]% h# Uprint 'send2 len is 0x%02x' %(len(sd2)/2)
~$ u$ r t2 H; ]# Q( Nprint sd2, L4 [# Y0 E8 Z) U' l- R
0 a" W# p, ]! W, S
1 e9 X3 S1 j8 _# ^: B9 n* ?#PORT="192.168.60.37"
l% P% V. `3 ^' t( l! @9 \; L2 c#PORT="localhost"
9 j [8 W2 p/ \3 c6 cHOST, PORT = "192.168.51.28", 5800
, b' A' a, k" h4 M# Create a socket (SOCK_STREAM means a TCP socket)7 Y9 \" R7 D6 B* v$ g8 [
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- Y" N! [3 J" l# r2 Mtry:
8 y) ]. L n9 @3 J b& f8 y% H. ~ # Connect to server and send data8 W( n& e. @$ P/ r8 Z% I: m
sock.connect((HOST, int(PORT))
r3 r0 k" Q$ w" R) E/ c+ h, f #data= "123456789"
$ ?( S4 K1 Y6 P3 B% m1 v #s = struct.pack('bbb',1,2,3)5 G$ N# U/ t' g$ R* `
sock.send(sd.decode('hex'))! K& W# e+ g! g1 Z- v% S
print "Sent1 OK:"0 w5 M1 ?8 k& L# Z2 h3 ]
print sd
0 S4 R+ e5 ^) I # Receive data from the server and shut down: ~4 k- g7 F1 O0 {6 V* B0 Z5 M6 t
received = sock.recv(1024), H+ A b) e) j- o3 l! Y$ }
print "Received:"3 {, Y! _2 [. U7 I P
print_hex(received)) d* \8 Y1 K/ Z; |; o' e# s! q
print 'received len is 0x%02x' %(len(received))
/ Q* l9 W8 T/ q; @ print 'received data analysis...'1 r6 I8 c. `* q, g
re1=received[0:4]
! ?, j+ X7 a; r+ f print_hex(re1)
" Q% T* j8 w% K5 o/ D6 m re1=received[4:6]0 C2 c- E% x3 f/ `0 @; v
print_hex(re1)* Z1 [. ]* h# X o
re1=received[6:10]
) H u- c/ C0 | print_hex(re1)
+ Y/ {* Z6 \% F0 _) x re1=received[10:16]
1 g2 R( w' a7 D3 Y3 ^2 K print_hex(re1)
2 K& n. p% d7 w6 l# e1 V* H) z# J! @/ O2 ~: \& O9 M( q* M
#pack2 send
( O2 R% n& [( r$ ] sock.send(sd2.decode('hex'))5 \3 ?! x) G8 p; F# T4 P
print "Sent2 OK:"& w F3 R E0 }! h1 Q
print sd2- A& `' D0 I* n& h' ~6 ^
# Receive data from the server and shut down! ?( X) i2 b& }% C+ t2 @
received1 = sock.recv(1024)# f _* } \+ Z6 }
print "Received1:"
7 {% `( e: [$ o) b print_hex(received1)
, k; _- e3 z, K0 B( F4 j print 'received1 len is 0x%02x' %(len(received1))
7 k9 i- G2 T4 p+ B8 {
, p0 s% O$ B* h# h3 x' m! D7 C) @, f# jfinally:
5 o7 t* i g" K# Z; ^. j: q. B sock.close() R/ f/ Q7 I3 h* z) c. \
' Y6 w& E7 ^* a' fs=raw_input('press any key to continue...')% T/ E& Y& H/ l" w" u
. ]' P+ D, u* ]! y- v+ K
/ y; L( L; d. P9 E/ U |
zan
|