- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
$ b' y2 K( j- y6 z/ Vimport socket4 W# c7 S# z* t
from myutil import *# Q: r1 i5 [" ^" o
from binascii import unhexlify as unhex
& P. s' S9 A* P: p% @( a% g% x/ ?from ctypes import *, i* t( W, p) b' D3 t
dll = cdll.LoadLibrary('mydll.dll')8 X0 h( ]$ z% U( b8 s& c; X- T
print 'begin load mydll..'( u3 x+ o) F- R, a
#key8 A4 h1 I2 Q8 {( g% Y
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
; Q, \. {& S6 M; o#output MAC& Z" f9 _ d. |' e. w) ]* c
mac='\x00'*8: h5 M" Z! t1 |( c+ y; H
data='\x00'*8
; B3 G2 L0 S4 [+ V5 ]pkey=c_char_p()8 X- ]) U+ y/ w* t
pdata=c_char_p()0 Y( A, ^* G$ C8 _! F( P, ?% j
pmac=c_char_p()
/ p; ^" ^+ n" Y9 w. N" i' npkey.value=key9 b4 ^% k4 C( D/ \; c; N" L$ ?, M
pdata.value=data' s8 N2 t) {8 j6 G) j
pmac.value=mac! ~4 u" m+ V* v5 n
#pack1
$ d4 b8 o# _ s7 E- hclass pack:
- }: K% V! Q e) b" A pass
# @/ `& p' b1 `3 x- kpk=pack()
5 q* v0 U" x' G% n* F" mpk.len='00000032'
# s; Y) T# j) ^$ J- ppk.ID='0001'
0 G% R5 i1 E5 U }. [pk.slnum='00000004'; d! q1 `' `4 }
pk.poscode='123456781234'1 q- A* E! b* ?% G* N( d
pk.rand='1122334455667788'4 q0 ^" l& ~. W/ A8 Q" z i* a
pk.psam='313233343536'
4 |, P: ~; M+ Qpk.kind='0000'
& a3 F2 @( r( j( Epk.ver='000001', d* U8 {- w: h& [/ a: i) [
pk.time='20140805135601'
5 ~* s4 l: a* q; _pk.mac='06cc571e6d96e12d'" h* R7 _1 l7 ]+ u6 O5 v# L
' _7 H2 |, M) |( C0 J/ e$ k
data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)) ?( Q) s) V9 x7 I
#print_hex(data)
' Z" K, x! K: u6 |: s, o. r. @pdata.value=data; n7 M& ~ G9 W3 z. F
#cacl MAC' \; ]; F/ T" |: u5 P @% d) R
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
8 M1 Y$ W/ T0 j( A m- _, M$ Nstro= pmac.value* W+ T6 k: W0 A* X; r7 z4 ?1 v% N. V
strtemp=''
: m' v1 l# k& U. ofor c in stro:0 ^) b' s9 Y g4 e+ Y
strtemp+="{0:02x}".format(ord(c))& r H; J4 f# K2 s7 b b
#print strtemp
) [& L7 k+ u- jpk.mac=strtemp4 R4 R! z( T+ K* x
#data to send
$ P6 b# s, N6 y h/ y$ v4 Fsd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac: ]7 ~% S9 [; n2 [
print 'send1 len is 0x%02x' %(len(sd)/2)
* q( C. k' a/ N# l" J7 S' T: c* ~print sd
9 i8 j$ W+ D6 c5 e#pack24 D6 ]% Q8 h4 ?% z4 e
class pack2:
8 F) a1 a3 t+ T2 U: {' J pass
2 u+ b v M' w8 [pk2=pack2()+ h: t5 p: z7 F/ ?
pk2.len='0000006E'
# h% M ^% V/ w8 F: P. E6 \( |pk2.ID='0012'+ A% q; j% V0 |( L7 |" N' e
pk2.slnum='00000005'
+ }) U) W" {9 h. M9 m* V# ^7 Ypk2.fatCode='00'
0 a5 ~ @' ]' Y$ bpk2.cardASN='0000000000000000'
+ |9 `' [, b, [% H+ R) Spk2.cardType='00', G: b1 o H, h- c3 a6 ?
pk2.userNO= '0000000000000000'( m& j$ y4 p F; g ?7 E3 J' A& W
8 q2 @: {3 I. l* g
pk2.fileName1='00000000000000000000000000000015'
* w% ~9 T1 C6 v2 R1 O4 Q9 H: E( C& E; Ppk2.dataLen1='00'
4 l& D7 Y. {" ^: B" M' k( qpk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'8 |7 a! b% B0 Z8 w' U* W! I; p: q
pk2.fileName2='00000000000000000000000000000016'& T3 Q4 M: p6 {4 |
pk2.dataLen2='00'( t2 m1 \# [; j4 }6 W h
pk2.dataArea2='000003E800FFFF16'8 V; g9 c2 d# V- Z/ W5 H
pk2.mac='06cc571e6d96e12d'
4 Z. O! }1 v, n1 z6 A/ B
" Q. ~5 `. a7 H6 `9 `; Odata2=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 G l7 G9 @9 }2 \
- F# d4 M: z ?* l# a/ h5 ?
pdata.value=data2
. \, A8 H6 \+ S, j( d7 v8 Z#cacl MAC2 w8 f0 y3 F! J( R. P
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
" c7 R$ @, E2 U/ v0 Dstro= pmac.value
+ c' ]* g$ u# g7 P8 p2 {strtemp=''
& E4 @# t! B$ I( ufor c in stro:& E% K0 a. ?9 t' M0 k8 D
strtemp+="{0:02x}".format(ord(c))
# F0 b+ [% L; r8 J#print strtemp" q- |; R! Q$ y
pk2.mac=strtemp
7 {; f* T$ y1 ^3 g( E6 v#data to send, y W* s, Y1 {
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
7 T$ K+ g7 C1 d9 Z7 F% y* _' [7 K( D
. ?/ D( d. P9 y9 Yprint 'send2 len is 0x%02x' %(len(sd2)/2)& z$ `* z8 I! Z4 s; m) s
print sd2
5 L* K2 s" R& o& h* \8 `5 M# d* g& y& S! J
s$ P" |0 K2 ~2 N
#PORT="192.168.60.37"
8 C: s- s1 w, n* o3 l#PORT="localhost"- v/ J& ], y% W; t c0 g5 }
HOST, PORT = "192.168.51.28", 5800* j( T" A3 |# c% i; h7 d, e9 e
# Create a socket (SOCK_STREAM means a TCP socket)
2 i" c, K: l7 P/ qsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)7 w$ S# Y x6 }" g# R6 r% Z F4 V
try:, L. l9 H1 w3 c2 o* o; d0 w+ s
# Connect to server and send data/ V5 N" A9 t; O" v
sock.connect((HOST, int(PORT))
9 F3 X& S) C" X# \ { #data= "123456789"
# J, o. w# S! G6 W9 l5 y #s = struct.pack('bbb',1,2,3)* a, D( M; L7 w$ h5 q9 y
sock.send(sd.decode('hex')). D. y5 z- g/ H! F6 ?: ^: ?
print "Sent1 OK:"* a7 V3 X% E4 S5 ~( w0 o8 D
print sd3 r" a* k8 q$ G" ]2 a/ M- m: m4 F
# Receive data from the server and shut down' U( z' G* u4 b0 K2 {. }
received = sock.recv(1024)
2 G( p5 C# d) c) [ P print "Received:"6 J7 S: X# M" T7 g# X3 K
print_hex(received)2 i: u3 I3 j6 [0 J% w! E! Z }% K& j
print 'received len is 0x%02x' %(len(received))9 u! O' t U, F$ f) p% A/ P$ w
print 'received data analysis...'+ I$ [" d6 a; v
re1=received[0:4]: s: f, Z: G# T0 D
print_hex(re1)! E( L9 j7 s* |. {) s: M3 _
re1=received[4:6]
5 g1 b# K2 w' x2 t* e2 B print_hex(re1)
4 x% q" h; I! Y8 l; x2 Z8 p re1=received[6:10]7 H. F9 e5 V' y {+ y2 O+ z+ p- R) r
print_hex(re1)
4 E; I# L. l+ H8 y% z4 Q M7 S re1=received[10:16]
6 [) z/ F# q3 g- L* J, X: W print_hex(re1)8 o* T/ a5 n3 t# m
* e. G, `* b, i: P i; a #pack2 send2 r# a; @) C. H* W8 C
sock.send(sd2.decode('hex'))/ C5 B! t- Y' |$ q' A1 X9 ^
print "Sent2 OK:"
! b1 V' B) e$ ]' B; ?5 I print sd2+ G' o1 G. ~+ G
# Receive data from the server and shut down
1 }* p7 R9 G5 O+ ~$ z) N received1 = sock.recv(1024)8 `% x2 D t# N( ]
print "Received1:"+ n5 f$ v6 L, R& d! P
print_hex(received1)" y5 w, Y5 E. i' U
print 'received1 len is 0x%02x' %(len(received1))* L _9 O& W! `7 B6 h
9 N9 g" w: u( A0 x4 }. w
finally:
% M; ~+ Z U4 ?- ~: J7 l( p K sock.close()
' e8 \" S9 e0 T+ h& u5 x. m! ~, f5 ]) n0 Y, Z, |3 d& |9 [
s=raw_input('press any key to continue...')
X- V, F3 |+ o7 s8 e% q5 p' w; v' Y" o8 z- S5 R
+ N9 ~ _( G- Y8 j& I* z- u9 N5 e
|
zan
|