- 在线时间
- 481 小时
- 最后登录
- 2026-8-25
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7859 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2946
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1177
- 主题
- 1192
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
7 u. S5 W! }' c3 J* w( X! rimport socket
* x; \8 U% W- w+ U+ U1 O# M/ cfrom myutil import ** b$ y, j6 N T1 g3 E* t
from binascii import unhexlify as unhex
6 c, d1 \" R1 E! P0 M) K" yfrom ctypes import *
, F$ ^# ^" j ?dll = cdll.LoadLibrary('mydll.dll')
- s+ Q T4 D. p7 Bprint 'begin load mydll..'
& D, W, ]2 [) Q0 ]& u1 [#key
$ }2 y" n5 t. b) n5 Skey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
1 t9 e- E. g, a3 }/ b* J) ~% Y#output MAC
$ C" ]$ j9 L6 z ? [( ymac='\x00'*8
. D1 h' L& O0 K, s) K( ^data='\x00'*83 P2 i, G5 W" u( w
pkey=c_char_p()/ e- ^0 {# r! b# Z8 F7 m
pdata=c_char_p()
* F. l8 F9 g1 t. Ipmac=c_char_p()
+ ~0 Y& T$ ?9 u) v" kpkey.value=key
0 Q6 q, ~% g4 S: V: Qpdata.value=data
4 j: j- X; b2 J9 J1 q' F1 d* rpmac.value=mac
) ?* `; M: K3 p/ w. a#pack1
. f" k3 B: q: R2 x* I5 \% ]class pack:% Q0 R- Z! i* z u* }8 t6 E
pass
1 U2 Z7 d- j4 D- |5 Wpk=pack()
9 e1 l; a- H. v; P& }3 p& O; Kpk.len='00000032'
9 U M$ t- ^ L6 i) upk.ID='0001'7 g9 V7 _$ h- c& F' ]" S. t
pk.slnum='00000004'* ^3 _6 Q9 G. o8 @* M! p
pk.poscode='123456781234'
2 R. A9 `; _ D1 P2 `pk.rand='1122334455667788'
/ H& s9 v3 V3 z4 h, H0 M% K& Bpk.psam='313233343536'% u# Z" u* x$ f. r! w4 _9 S* k( [
pk.kind='0000'# S3 a) x7 O' D% P# Q
pk.ver='000001'2 L1 ~. N: Y4 x% h* [3 M4 L& W
pk.time='20140805135601'
% R/ g3 t; i: I9 z( }. dpk.mac='06cc571e6d96e12d'
" C# e0 N0 K9 \5 B" j# I1 a8 Q
/ U1 C# e9 b) tdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
( b" E- v8 E9 L, g+ x#print_hex(data)
, f+ x: }& g- x( \) N& |pdata.value=data
& [, L% t& A3 @( \ k" V3 w6 d$ j1 z#cacl MAC) B/ r# a/ B; Z5 I: \
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
5 A/ x5 ~0 R/ w) Q- Nstro= pmac.value! |4 W) ]* g3 Q$ W2 B p
strtemp=''
: m& T) @* P$ h! ~- ifor c in stro:4 G( S: W! x0 O6 X- S
strtemp+="{0:02x}".format(ord(c))
& X. p! i) N1 j9 h+ v: F2 E+ B. l#print strtemp" Q C2 S/ @ W
pk.mac=strtemp6 t) T( ^9 k6 Z4 Z7 S
#data to send
- o! h2 v3 Z+ o: j5 {, `sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac" C+ A8 H% p0 x7 \, p+ r
print 'send1 len is 0x%02x' %(len(sd)/2)
% W5 r3 b" X. @print sd6 c: k# ~; u. o# H& v
#pack21 s% d" L' E% O, P+ h7 }
class pack2:
* k; l: D$ S5 O3 m- h2 n pass K. ^4 `# U0 p3 b
pk2=pack2()
+ ^5 M1 P, Q8 ~6 upk2.len='0000006E') S+ D9 r% \' j/ h3 N0 v
pk2.ID='0012', x& k1 F5 m+ S3 H
pk2.slnum='00000005'; ^5 ]. X3 I- L+ e% G, Z% f
pk2.fatCode='00'
1 z- B1 P) r# M4 tpk2.cardASN='0000000000000000'6 P: M" J; g: m. }) W
pk2.cardType='00'. h T- X* P _+ d0 l( X( C: |3 f
pk2.userNO= '0000000000000000'
2 s u" E% ^. v7 u, t& k: p: v5 p Z9 x' M
pk2.fileName1='00000000000000000000000000000015'
& [8 j: D. c+ [) {7 r- t0 s2 |1 \pk2.dataLen1='00'1 H1 c0 a0 h$ K" \; t1 d1 D3 y
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
" {% g" ~) q _1 p5 g0 Rpk2.fileName2='00000000000000000000000000000016'8 a( r9 Z+ z6 ?3 a7 E
pk2.dataLen2='00'
' ~" V6 [/ ^$ hpk2.dataArea2='000003E800FFFF16'7 k8 b8 `5 n. l
pk2.mac='06cc571e6d96e12d'
+ A8 W: @/ y' L$ R3 b f- R; ]) O7 H! s/ 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)
' ]' j7 I1 X( l* n( F5 ~! T! w) N0 r" |$ v% p+ Z7 P4 W
pdata.value=data2
5 F* \ ?5 ]& @3 d4 j#cacl MAC" Q7 Y( r# N U/ I% \
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
( t% N3 D8 @9 ^) a3 W& e6 }stro= pmac.value
4 _; c5 ]8 Y$ U: fstrtemp=''8 G( L( ], v) B
for c in stro:
0 X( W$ r0 t" p% L5 A: ^1 D strtemp+="{0:02x}".format(ord(c))
0 O7 f; M$ o: H, m$ t! d#print strtemp- e# p4 J2 z: c9 Q
pk2.mac=strtemp
/ c0 a/ ~, W( d6 a, F1 @, r#data to send
+ Q/ E8 M9 K0 Csd2=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.mac6 y$ Y3 u6 W/ f8 d
/ w3 M0 V6 _" m7 u. I# |print 'send2 len is 0x%02x' %(len(sd2)/2)
8 _: G3 B; i# V& |4 Z& h% Y! @/ O1 uprint sd2
' N2 t0 P2 ~9 ^( F5 R0 f
0 I0 L9 V/ \0 b# j8 q/ S T; x( D6 B
#PORT="192.168.60.37"8 E* a7 f3 ?9 D- t& b
#PORT="localhost"% X0 G& ^$ I4 H$ g7 m6 U
HOST, PORT = "192.168.51.28", 5800
( a. @: }9 b) V1 d# Create a socket (SOCK_STREAM means a TCP socket)
/ l; @& @0 l/ V. G& k+ ~4 s: ^sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
0 m! L4 R: ]5 j: Z" y( Otry:) ~. N! a: b- v5 L
# Connect to server and send data
/ T" P8 s. X' K* Y( p$ y sock.connect((HOST, int(PORT))" G" ^" J, y8 S. i; G
#data= "123456789"8 r k! \! D' M% H
#s = struct.pack('bbb',1,2,3)
# K1 g+ i% p2 X: C# o sock.send(sd.decode('hex'))
) v/ [( b% n1 ^8 y print "Sent1 OK:"+ V1 k! S6 Q- T( Q U3 P
print sd
, [' {9 D4 j! E4 ?* `% X # Receive data from the server and shut down) r, @: t7 U/ t% E
received = sock.recv(1024)
1 Q# S6 c: n! M print "Received:". {, j4 [+ I& G; ~/ `
print_hex(received)
* E- C3 D" |! v- B print 'received len is 0x%02x' %(len(received)), N! }- `1 d+ D9 p7 F9 c; m
print 'received data analysis...') g- Y8 }3 s$ I" a& H
re1=received[0:4]
$ V" R. {: D0 A2 Y6 p! h$ L print_hex(re1)" y1 x V4 q( h
re1=received[4:6]
: f" |. D$ E9 _! P print_hex(re1)
3 i; ]& K+ c. a% k! |8 [* E) K re1=received[6:10]8 h2 a1 }5 \+ U/ R# h8 e; j
print_hex(re1)
. b( ~! y- a) I, s1 ?) t! A7 ` re1=received[10:16]
9 o- }3 ]% I5 @) Y: Z4 d' { print_hex(re1)0 v4 a% J, T5 n1 A- x! j7 z
3 p/ F! D; V: H( p4 o* W* [7 y #pack2 send
7 n: u% U2 _! p; N( D sock.send(sd2.decode('hex'))0 r: W6 l% k" P
print "Sent2 OK:") ~5 k! r. l) e4 @- I
print sd2
7 h$ {% ]! ?5 x2 P( j! d& l # Receive data from the server and shut down
- ^; B& ]6 `- Z, t0 w received1 = sock.recv(1024)) _2 E. v# T% _
print "Received1:"; d. Z- X! |2 A {
print_hex(received1)
]; }- L) y" ] print 'received1 len is 0x%02x' %(len(received1))4 q! d( Z9 w/ `, u9 ?8 G8 `! g
9 I4 r, D# j7 [
finally:
; M9 }/ }# e: q6 [ n( ] sock.close()7 H( B4 |* Z& O2 E8 f) V
7 h S1 X5 ~, |3 k2 D4 v$ P
s=raw_input('press any key to continue...')
* \* ]) D5 ^+ A+ N, W1 o' O4 {! Z! l5 j- P) S1 R+ M6 K9 {
7 c7 }3 M( a+ U! E( F* o% c N. t |
zan
|