- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-( L2 w W) l/ D% V# o H
import socket
/ U7 @ o* s t; K, u4 G% O5 sfrom myutil import *
( j" j/ L* p' J3 J$ a" K" ffrom binascii import unhexlify as unhex+ {# ~& O/ F: l. I% I
from ctypes import *0 l5 h* \% G1 |* S( d
dll = cdll.LoadLibrary('mydll.dll')
' R' A$ y. n6 i7 Q, }$ Wprint 'begin load mydll..'+ e+ O2 |/ E( g3 v2 }( H
#key
7 Y7 n& u) h) n" }8 E& Qkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'" v( ^7 l+ j4 f3 K
#output MAC
( G( L: l0 j0 z8 S6 y Hmac='\x00'*85 ^* j) P; k/ W
data='\x00'*8
6 G, q8 y+ b+ `0 I o. z8 [* w Fpkey=c_char_p()
# Z& Z; ]: b' h+ {+ D9 C. Vpdata=c_char_p()6 d" e0 E! @ R: R$ u
pmac=c_char_p()0 n# b/ c/ v. K* W' i8 T9 R
pkey.value=key
, F# `( b" R' I0 ~: K; T$ F% ~pdata.value=data
2 j- U4 `6 `* h+ mpmac.value=mac
$ O0 [5 R% [7 u. r% v# D0 V#pack1
: Q$ |! J- A8 V- x2 |class pack:- e4 Z8 B1 e4 x
pass& d$ r& z, S( ~5 E# b. ~! b
pk=pack()
: H" @: f; b2 `: F0 o8 xpk.len='00000032'
; ^/ E' W5 `$ T4 P- S$ Upk.ID='0001'2 {& ^# F/ d: W; H
pk.slnum='00000004'
- n1 G- [* x) w( T" K. jpk.poscode='123456781234'
: [% A6 t g$ Q0 j, X& xpk.rand='1122334455667788'
p8 X: K; Y, T- R6 [pk.psam='313233343536'. E% ~! F: R4 e0 `9 D# y
pk.kind='0000'! }& P! V M' V' u( X; y3 u
pk.ver='000001'
8 d Z. b; u- W# [# _pk.time='20140805135601'
/ ?# k( n( `$ n/ P& z" u9 }, fpk.mac='06cc571e6d96e12d'
& @7 @ Y+ `' J' Z+ P. m1 v
& a- t5 M) s$ ~data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
, ~, ^- V3 ~3 i% S/ n#print_hex(data)
: V8 W" l" e6 w; \pdata.value=data7 j; {, b* i/ M; H
#cacl MAC. k) R$ g2 [" _. r8 X: u4 o$ B
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)& t3 c* i3 b7 n* Y
stro= pmac.value
$ Q5 G1 |$ U/ W$ ]& U4 S; cstrtemp=''. _% |/ o7 i. z }( v# e. v
for c in stro:0 I @. {2 T: |7 i" d" c0 }
strtemp+="{0:02x}".format(ord(c))7 |# ^' X, Q: s( e
#print strtemp) C7 x8 m, ~" Z
pk.mac=strtemp; t; f# y( U' R
#data to send
9 w; D0 ]" Y: c' t) S& Ssd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
) Y7 _4 [% x1 U/ w$ x, f" y1 q: |print 'send1 len is 0x%02x' %(len(sd)/2)
_1 ?( Q U0 e! wprint sd" T' U( a1 K( c3 f6 Z- N
#pack2
) J" k- T0 f6 l L) @class pack2:
! q7 W. D0 S, d2 n& r; ]6 L' L( W pass' i% B& ^& o' @5 a
pk2=pack2()
# w7 r! C: Y4 \3 L# h" u) l4 {/ Fpk2.len='0000006E'8 G8 a! q4 H' u r$ Y0 P5 f7 i
pk2.ID='0012'+ v0 _( g( h* b3 o6 l
pk2.slnum='00000005'3 ]% i- T& K* Y
pk2.fatCode='00'4 P' k2 X; B( O; G5 v# G. r8 U4 @$ c
pk2.cardASN='0000000000000000'
7 Q1 _. g' a" A) Q( \pk2.cardType='00'
, L) e/ o! \' K3 P L8 F- Jpk2.userNO= '0000000000000000'
) y* d* D, ?, j4 [ q* _) p7 x7 J8 [& [% O3 K% z5 d
pk2.fileName1='00000000000000000000000000000015'- j3 S* b, U& U' V# D
pk2.dataLen1='00'( p" D) A1 r( t+ T
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'# w: Y0 i( M3 G$ m8 M
pk2.fileName2='00000000000000000000000000000016'# F- u% l L2 I+ `/ ^' d
pk2.dataLen2='00'
* S/ s0 x9 c7 {! \9 Hpk2.dataArea2='000003E800FFFF16'
( ~6 _' A' }2 W- xpk2.mac='06cc571e6d96e12d'
( E6 W% ?/ w$ ?' C1 h k2 |1 h: T9 F
( y! M& G' q+ `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)
" i4 O% O! e" G( M4 W6 ^( ^. S" A( {6 M
pdata.value=data2 @! z+ _+ j6 s1 U
#cacl MAC
2 T) v$ p2 _% cdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
" G( C* |( f& ustro= pmac.value! S1 f1 ?1 u, @! T7 a3 T/ y1 Y
strtemp=''/ k, B U" O" I: @
for c in stro:
: U/ f0 y" V' [2 c+ d& e0 g( I strtemp+="{0:02x}".format(ord(c)). F& r: b c& m8 @
#print strtemp5 h5 u7 b7 I- |/ P, q
pk2.mac=strtemp4 w% p+ \9 R2 c! F9 n' s; G1 \
#data to send8 K; F4 K9 A4 _+ ^0 T0 z+ T) w" b
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.mac5 Z+ T; l0 ]- N# G/ n) x
( J8 J' }0 R4 s" k* L( E1 h mprint 'send2 len is 0x%02x' %(len(sd2)/2)* x! O. q* Q8 v
print sd2! p) X" V0 n0 @1 a
: E* U) B. G* o3 Y
- G( W8 Q* r5 x8 u#PORT="192.168.60.37"
7 Q2 X2 n5 E! p1 m5 _ f4 x! S#PORT="localhost"7 A! |( |2 A. X/ S: q5 k
HOST, PORT = "192.168.51.28", 5800
7 O* B; u4 F: y/ N% U# Create a socket (SOCK_STREAM means a TCP socket)8 H( i$ F4 v. o& v" R- r. J) z0 x
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)1 f1 G' d) S* d Y* n$ `
try:0 R) y ^, I; |' t
# Connect to server and send data% @4 [6 @0 B% S
sock.connect((HOST, int(PORT))
% Y2 w9 |: q. ?% [/ @! f" p" | #data= "123456789"- _, c* p7 V6 N+ M
#s = struct.pack('bbb',1,2,3)
|) X# H: z; Z8 N% d3 y+ E sock.send(sd.decode('hex'))
! E7 X" {7 s) z- o print "Sent1 OK:"
( _& Z7 A5 q; V( k print sd" f6 H2 S7 A! a8 e- u( Z
# Receive data from the server and shut down
& X& |# G5 _8 \ v received = sock.recv(1024)
9 d, W0 K2 @! U4 Q, u! p- V, | print "Received:"* r* c% l) f2 e! z: d8 n5 u
print_hex(received)
- m, I4 q% G& C' k" \# \+ g print 'received len is 0x%02x' %(len(received)), U* u2 c# j( W X# C! B* [$ _ N
print 'received data analysis...'
( W6 P% O+ @5 i1 V7 L$ l! I4 r re1=received[0:4]9 i( w7 {5 H5 P* ?) N! v
print_hex(re1)
5 r; [7 [3 S, n9 @$ N re1=received[4:6], P& X" x% ~; O( _' a- f
print_hex(re1) ` K7 Y7 J, A: E; G
re1=received[6:10]! ?8 F' o- I2 T) X8 E
print_hex(re1)2 o% z) z# m! L9 H4 p! W
re1=received[10:16]5 j* o2 F; P/ l/ d
print_hex(re1) M! j: W- P" e& J
7 z& a0 y& A, G& `" W #pack2 send
: S" j0 ?0 N- X$ Z4 I* V' ]( x sock.send(sd2.decode('hex'))
$ M Z" @- p! O print "Sent2 OK:"
" T% k; T/ T7 j# J print sd2
# H A2 k6 `( Q ?* ?/ t # Receive data from the server and shut down0 V. M* _ a0 F/ F9 s2 |! c
received1 = sock.recv(1024)6 w5 ]/ j1 y" G
print "Received1:"
3 T( w1 g6 V, \8 |; S( q1 d9 O print_hex(received1)
+ o& g9 L4 s/ c) {, Y print 'received1 len is 0x%02x' %(len(received1))7 L1 @- E+ c0 }/ x& ]! K7 `; c
% I7 D0 J7 _, V
finally:
# O; f$ j7 o7 r& X sock.close()& K6 e2 j+ r, r& c; N6 K, y
8 c. h3 @6 Z/ [' vs=raw_input('press any key to continue...')
6 Z$ M2 n1 G0 F8 m. V* R" G8 o% I8 i5 _8 ]+ A& `
. p% i" _ E2 _0 ? |
zan
|