- 在线时间
- 471 小时
- 最后登录
- 2025-8-11
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7639 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2872
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1160
- 主题
- 1175
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
( [3 p! C" y. l3 j* Vimport socket3 _; L4 Y- O& |
from myutil import *
7 v4 T' f9 M' k6 r1 sfrom binascii import unhexlify as unhex6 h: B8 z# @4 ?- D: Q8 ^, J
from ctypes import *1 E$ F. ~1 l \' z. N
dll = cdll.LoadLibrary('mydll.dll')
: j, N9 \, M( Z% u% Dprint 'begin load mydll..'2 h* e$ W) t4 W4 b5 F
#key5 V0 b; v" e* e+ y
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'7 D2 f1 I- @! R' e
#output MAC* d8 J8 w- k$ T4 Q. J
mac='\x00'*89 T8 m; D0 [4 j! V2 q" @* @
data='\x00'*8
- h' e$ T5 B, `6 W( H% z1 P3 ^pkey=c_char_p()" U: g! t% z0 a& z J
pdata=c_char_p()
% [( r% w2 n' k) {8 cpmac=c_char_p()
+ \) d- j1 Q5 W6 y5 A1 zpkey.value=key/ I z8 M9 u( B& h1 E3 S; F
pdata.value=data
/ S. ^/ c/ R& [; w: Upmac.value=mac
- \* w. @. f$ q# d' K#pack1
$ `& e# s+ u* G- Lclass pack:
# B* Y' j! K3 M; p pass
! i0 j \, P# |2 o! {! C ppk=pack()
7 V) D$ x; W7 ^7 O% B$ e2 @& apk.len='00000032'' ?- a J- i' c# q5 h3 ? t) p: M
pk.ID='0001'6 i( c+ p% c b ~) j
pk.slnum='00000004'
! m4 M( L& Q( i: N" Ppk.poscode='123456781234'1 k7 s9 `$ F0 _6 n7 |
pk.rand='1122334455667788'
' e; U& C# r5 _3 Bpk.psam='313233343536'" t+ E% I+ O( F/ X) z7 k
pk.kind='0000'+ ~4 z/ d0 c. x# }5 @( f" F
pk.ver='000001'
; W. o! {+ V3 e* V$ G) c4 Vpk.time='20140805135601'% v/ i3 G. g& g: a1 T# [$ I& o/ H
pk.mac='06cc571e6d96e12d'' C( n) i$ B" r+ o
, i, T# ~+ B hdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)) @! V1 p7 ], e; V1 D3 G8 \) @# w
#print_hex(data), {* F! V0 E6 E; K8 j# p$ i
pdata.value=data
0 d- n% x$ J4 N# j#cacl MAC! O9 B6 I1 t9 F" \% s8 _2 x
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
, n" v: i1 y a# Xstro= pmac.value
5 }/ J7 f* T/ l( i y% [. zstrtemp=''
' ]7 P' f; j b$ L, ?9 w4 Bfor c in stro:
9 N8 o! a: w) @9 b" @+ e strtemp+="{0:02x}".format(ord(c))
3 a+ ], d5 D( a: V3 o4 ] ?#print strtemp' Y3 Z. t: A1 H+ k3 k4 I, U: q+ D
pk.mac=strtemp8 W* @: [" P* h+ y# S3 F
#data to send( E i+ E( N) t: o' c( w
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac- z* A7 q, N+ @5 {9 H
print 'send1 len is 0x%02x' %(len(sd)/2)
6 }7 Y- `7 H- Sprint sd
' m! D5 x- ~7 Z0 v#pack2
% z% }* r4 g) e+ T; \3 {4 l0 V$ Yclass pack2:
2 N& m7 i; d6 T0 i9 [3 `+ f0 @ pass' s2 R1 c: h, h9 Y
pk2=pack2()
9 E, Z# r/ }. g9 U% N: @pk2.len='0000006E'2 V# m# ?8 m& y1 i
pk2.ID='0012'
7 m1 {. P, i" L2 bpk2.slnum='00000005'
) ]* T: p( K+ A0 n8 ypk2.fatCode='00'
/ s2 n- L7 z: }3 j# k2 v* ppk2.cardASN='0000000000000000') ?# c; G+ |# _; i
pk2.cardType='00'
/ ^4 ~2 F1 [/ _( C+ k/ n2 h( W& M% Apk2.userNO= '0000000000000000', x+ d! D* Z. P6 S* j
' u* S3 I! M. c. s3 T" ?- p( u2 \pk2.fileName1='00000000000000000000000000000015'# ], T9 T* L0 Y& K& x
pk2.dataLen1='00'* g% p3 ?, d2 h3 t0 j; p* U% n
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF': e! ~3 q- k: O2 ^# Q
pk2.fileName2='00000000000000000000000000000016'4 X" R& N" ~! ~2 J* _2 p
pk2.dataLen2='00'3 k5 A8 R( t. K8 H% h3 q" ^- y& F
pk2.dataArea2='000003E800FFFF16'( C0 P! {$ i& W6 ]+ \4 E* x
pk2.mac='06cc571e6d96e12d'. L, r4 z: `7 i! i' N6 p
. @1 \1 N+ r; L( S; W j
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)% I1 I) y: a: P4 ~; Z
2 I6 q) J' ~4 U7 ?3 _& K( W+ @0 l
pdata.value=data2. d/ B! W5 p5 ]7 l
#cacl MAC! }; b/ `$ _6 p( K, B
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)1 D8 h/ W& D3 k4 K
stro= pmac.value
6 X# x/ ^+ }' \% S: |0 ystrtemp=''
: M' ?- @. u+ L# v2 Jfor c in stro:
; K4 W. F5 ~! o O' U% ? strtemp+="{0:02x}".format(ord(c))
, z% ^: G$ w& U2 z& C: I- `#print strtemp
& E4 ^! \) u1 S+ N8 f6 cpk2.mac=strtemp5 H7 C0 E# x& R& t0 r4 Y4 V
#data to send) r: B/ j- `7 r8 a
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
! }/ |! \( D0 c
: n$ }6 P- s8 U* t$ jprint 'send2 len is 0x%02x' %(len(sd2)/2)
1 r% G9 T6 u2 M7 s+ q V8 X, ]5 I$ Zprint sd2 B3 T- G9 A3 G- s7 _7 Q2 c
8 K7 R" n" Y ]6 d* e% j8 t5 ~6 u! z' t) D1 [4 l2 ?; ?1 K
#PORT="192.168.60.37"& [2 O- E- V% N _
#PORT="localhost"! I6 m. J) g, z1 \6 R3 M9 d
HOST, PORT = "192.168.51.28", 5800# `# c: m* C9 U$ o- Z! r
# Create a socket (SOCK_STREAM means a TCP socket)
. o h2 L/ y8 F1 Y& Z$ q; Z5 ssock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
5 G! R- c1 ^# p# l2 Ctry:
0 a; C/ H( o( i6 t+ H: C # Connect to server and send data! d- e+ c6 { y; e7 B
sock.connect((HOST, int(PORT))
. O: ^1 F! N/ N, f #data= "123456789"
; b4 ^8 O) ~6 K #s = struct.pack('bbb',1,2,3)( {1 b' I2 g' n7 B7 v+ ~7 Y4 f7 [
sock.send(sd.decode('hex'))
" z" `/ B6 s& [! S0 K3 H ?* o( r print "Sent1 OK:"
) A+ H5 X# X2 J; x% { print sd
: _* ] [: |* E: | # Receive data from the server and shut down$ z5 x8 g9 u8 U0 n2 a- U! E2 W
received = sock.recv(1024)4 Z, D& {" n" `: B
print "Received:"- ]$ v, a8 e, J5 g9 f) o
print_hex(received)
7 C2 v$ o. m+ h$ R' a; Z print 'received len is 0x%02x' %(len(received))
2 U8 t# B ~) {. H' J print 'received data analysis...'
' L' _5 B, U/ f9 K+ D+ t0 C1 y re1=received[0:4]/ _( c% x5 P% X$ u& ^
print_hex(re1). P" W7 J3 K9 w- i
re1=received[4:6]
y$ C$ D4 D" x8 R3 w print_hex(re1)- p+ |4 ?; H/ S$ M
re1=received[6:10]
* V8 _( J" p: r. _; v) s print_hex(re1)
4 O. b7 T! K- C3 s! @2 w re1=received[10:16]/ F$ a" H) i2 F- ^
print_hex(re1)
1 [: S; d+ [0 d4 x U
. L( _# Z: ~* ^ #pack2 send9 ]9 J( t4 R$ p* X0 i# \. p
sock.send(sd2.decode('hex'))
+ K' t+ D+ i7 o; R print "Sent2 OK:"4 y6 [; v& c& B6 N) E
print sd2$ Q+ w4 K; _& {- A/ `
# Receive data from the server and shut down7 _. B0 q& B( J; B& Q) X
received1 = sock.recv(1024), ?" E: X2 l& g- N9 w
print "Received1:"
3 U8 Z. @# a1 R: L& x* o$ T print_hex(received1)0 e) K6 B# S. Z1 x$ T$ f
print 'received1 len is 0x%02x' %(len(received1))
! T8 f" Q0 @& V. H
) q1 W8 w; B% dfinally:& q" I9 k4 A, E6 f9 [
sock.close()
+ y% ^, `2 T5 I! b: H, t8 ]8 x E; k. O: P- G# W- L6 ~4 y
s=raw_input('press any key to continue...')
! |2 s: R2 R+ P( h6 x b& z# y, G$ H5 x, s! z
4 y- f3 D+ F6 {1 t) o/ D' m5 |: [
|
zan
|