- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
/ m( A% Z3 q" | vimport socket
- O6 @) P* F' c) ]+ q. C/ u$ Efrom myutil import *
0 D- H- A0 d q/ E" Zfrom binascii import unhexlify as unhex0 C4 E* w; q- |
from ctypes import *
1 E# I+ A9 P1 }) r, ?0 q ]$ c$ Pdll = cdll.LoadLibrary('mydll.dll')
! J' {8 A8 A* }6 ?print 'begin load mydll..'9 r* z, w2 V' y
#key* x: ?% ~2 b/ w9 j# a% I& p
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
5 f! X+ r& Y8 B) F& z#output MAC- Q1 d7 {. J. V' I3 ^0 C
mac='\x00'*8
: m0 S% u/ _% o$ o* ?* V; ]data='\x00'*81 E k0 p/ P% `( ?4 ?
pkey=c_char_p()
# v4 n# k; D; h% H6 M. ]pdata=c_char_p()
( T' E N& B# zpmac=c_char_p()% Z4 ^( A! ^& J% U1 m4 A8 A! X
pkey.value=key
, m- q4 K ^5 a5 G3 dpdata.value=data
L# `+ P! ]8 X" |9 h; k- ?pmac.value=mac
% ?4 |% I: {/ K$ x U( _#pack1
2 H# F; k+ O/ G3 `. j7 Eclass pack:
' f4 o! X/ V; F H pass) m0 r* g# ]2 ]8 F. C
pk=pack()
9 @' f/ p- a: x; ~, l& e3 m# Jpk.len='00000032'
5 t7 L! A# @1 w) @2 upk.ID='0001'
" `6 M! l0 c& [- K$ tpk.slnum='00000004'$ [/ W6 `9 g `( f W4 d
pk.poscode='123456781234'6 Y! c4 U* N9 f8 V
pk.rand='1122334455667788'
3 e6 I8 Y5 T8 a2 ], F1 gpk.psam='313233343536' A0 h+ Q' _) b% \: F6 T9 F
pk.kind='0000'
. g" ^2 \: y z3 m: R* z gpk.ver='000001'
7 G# B7 t" ~* B* Vpk.time='20140805135601'2 x% p7 y) Q" W( a: [4 b( ]" ^
pk.mac='06cc571e6d96e12d'
2 s* r0 f4 r* i
7 ^" U* {2 T+ t2 g; Hdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)( g: Q" z( _) W) y0 H
#print_hex(data)
2 U) i% R7 H2 ?5 d' P: {pdata.value=data7 d& i/ D3 A2 W% p" H
#cacl MAC
4 t' O5 p# _7 D- @' k7 f' Udll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
/ e7 z% X; z6 E( c( i+ O4 S; Kstro= pmac.value
" }' m5 `, G, V# }: |strtemp=''+ L1 X7 {( b% r% t! i1 t
for c in stro:- H1 A6 s* Q9 x5 B u) f! `
strtemp+="{0:02x}".format(ord(c))
; O5 o0 A8 p5 u* o#print strtemp
% ~$ v# X& n( k6 |$ p+ {pk.mac=strtemp
0 c2 m# M# @$ Y. x' V2 s+ B6 V#data to send- J3 y/ \5 h0 B( M. V$ g1 i# [1 l
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
' n0 T/ l9 m" Q! A# v( oprint 'send1 len is 0x%02x' %(len(sd)/2)! C/ D0 ~' u8 i) y5 l
print sd( u- _8 S7 r! R/ |
#pack2, N2 M1 x/ o/ h
class pack2:
! Q4 N, @- n( e; J pass
9 C5 k+ B% F, D" Y) A2 cpk2=pack2()) q. c6 e: P3 K7 o$ G
pk2.len='0000006E'
0 r% g2 L% g! j* W1 jpk2.ID='0012'8 A/ ?7 w5 o- x, T& e5 I+ e
pk2.slnum='00000005'8 S* v; y1 M$ a' b) X
pk2.fatCode='00'
7 {/ }4 O5 m* G/ Ppk2.cardASN='0000000000000000'
- n& u0 T4 p" W0 T, T# s Bpk2.cardType='00', F4 l, ]( @9 q
pk2.userNO= '0000000000000000'7 r1 X, [7 a% D# f1 m1 R
7 [; O0 P! M% S* v; [0 s; ^
pk2.fileName1='00000000000000000000000000000015'
# ]5 h1 A; X8 b |# Ipk2.dataLen1='00'' Z Z8 A7 o+ }. i3 a9 z9 M
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
6 o, v( ]" ]9 l$ _6 kpk2.fileName2='00000000000000000000000000000016'+ G) n7 R6 a M( o7 L( ^
pk2.dataLen2='00': S+ I; \0 ?7 l i6 e% T- e
pk2.dataArea2='000003E800FFFF16'. v- l2 P1 X3 O! l. o( _) n$ ~7 }- f
pk2.mac='06cc571e6d96e12d'
$ F8 d2 X9 v' D( {2 |4 h1 s2 ]( s+ `7 q% V- c' {0 P: I
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) C! f+ p8 f5 L: F& B
# G4 q+ g. S/ }+ d
pdata.value=data2
0 r5 W M6 ^- E# o ~+ l#cacl MAC7 K; T8 k2 U9 z& n9 Z5 d& P
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)# k, L7 Q- }# }% S
stro= pmac.value& r- d0 A8 q* l- j
strtemp=''2 x' l/ a5 e& W7 S% h
for c in stro:
G3 D; J/ `8 v5 b" | strtemp+="{0:02x}".format(ord(c))
/ Q% F; q. I& W) _. M, H. J2 }#print strtemp0 u" S* |5 m/ }) i* D ?
pk2.mac=strtemp
; Z6 v! h9 e* c#data to send8 z: I* r3 Y2 c
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
1 z9 ?. R) r$ X, w9 E
* f$ b0 G2 k7 G+ wprint 'send2 len is 0x%02x' %(len(sd2)/2)# l; V( Q6 C* M' V: ~6 ^2 W
print sd2! {1 ^0 o" [9 s) g8 a W
. K/ g6 T) w7 P6 y
2 ^) O; D& a* y/ T. V: B/ F#PORT="192.168.60.37"0 j! _( |4 \9 \' g2 t% c
#PORT="localhost"9 [8 M- B! a- ]
HOST, PORT = "192.168.51.28", 5800
+ n/ S; I8 W! y- D# Y ?" C# y# Create a socket (SOCK_STREAM means a TCP socket)
2 v' a6 { p1 V; G) P8 u: qsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)5 j! f$ ^! D2 o0 j- Z! [
try:9 G+ c7 Q* X$ }1 n
# Connect to server and send data) h$ t! n+ Q& b# x/ g, L8 u2 E
sock.connect((HOST, int(PORT))
/ i2 `! U) H7 Z #data= "123456789"
* l( N. Z1 h/ ~1 J" N+ ~& j7 V, P; o #s = struct.pack('bbb',1,2,3)
9 J% n3 U) R; `, `! z b+ h2 o sock.send(sd.decode('hex'))- J* u) `- `1 j" y0 C
print "Sent1 OK:"
' F+ k1 V1 @" y6 Z$ M. f0 L0 d print sd
0 [# h; T" C. ^* l # Receive data from the server and shut down* x3 g6 j2 N8 W& u: o
received = sock.recv(1024) s8 A- N% A! f- \' \6 n8 {
print "Received:"
& P- Y) t! g7 u* ^4 T print_hex(received)* [* z' S6 z; [* g4 N; z
print 'received len is 0x%02x' %(len(received))4 D: ^3 q. C t0 d; ^' d
print 'received data analysis...'
7 N, X4 D$ e& P* [. `) h re1=received[0:4]
% M: S& Z @% o$ ]! e6 y2 E H i8 Y print_hex(re1)
, ?' Y. h2 S5 h re1=received[4:6]+ e9 P* \) C) B
print_hex(re1); G, ~+ y' R) h4 Y
re1=received[6:10]+ b: l7 ?$ l0 }& }/ p& s
print_hex(re1)
* R+ b" k( [2 s- M re1=received[10:16]
/ g7 b7 J9 ]" J& L ` print_hex(re1)2 e1 C5 Q) p# u, D
% g4 W) N2 s k
#pack2 send
: D5 j+ [+ n4 O1 L7 v sock.send(sd2.decode('hex'))6 x7 |* L+ a7 _. [+ L
print "Sent2 OK:"
/ m% o* O) |% P. `/ a# O; { print sd2
5 C7 _) D9 l1 b- f6 l9 {' S. a8 Q # Receive data from the server and shut down
: B7 d4 l; w: U2 b2 W% \: j received1 = sock.recv(1024)
6 e B- g1 D+ R$ n8 p" }3 i print "Received1:"8 a& d* U! d5 T
print_hex(received1)# R/ j! f9 r8 g# ~7 h
print 'received1 len is 0x%02x' %(len(received1))3 |# d' H3 w/ n2 H" a- I( t- c
3 \: m9 c0 Q$ j5 J0 W1 w5 }( |finally:1 u# ?8 i: g" ]+ `* R
sock.close()
' M" G# ^1 W$ Q9 B
9 U( r# ~5 @5 N0 ss=raw_input('press any key to continue...')
& `8 F, f }9 d% k
& {" R4 _9 l* u
( ?6 t2 `; l- v- V! S# r$ e |
zan
|