- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-- K$ r+ @- Q/ r, k, F
import socket
/ S; `' F7 w& r' ~from myutil import *
; {+ P C' C& H! @. Tfrom binascii import unhexlify as unhex
E) |2 ~' t# R7 e" Wfrom ctypes import *
) H7 ]/ T; l; d8 sdll = cdll.LoadLibrary('mydll.dll')" g9 P; S: |5 Z
print 'begin load mydll..'
* {+ _" [0 F9 ?#key
" u% }9 G6 ~0 Bkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
/ p9 J1 G! [( t- H( }8 c#output MAC
0 l# P* ]2 N) Vmac='\x00'*8- `5 o" E6 H% f
data='\x00'*8& m8 d5 W' G4 p
pkey=c_char_p()
, O/ u, x& c# ?pdata=c_char_p(), a. ^0 U6 N6 }. c1 ?1 E$ @! r$ o
pmac=c_char_p()+ b, P) b: d* a# X
pkey.value=key
0 J1 l+ `9 \& L+ [7 K/ k9 r* Cpdata.value=data1 o) K8 z1 }# a
pmac.value=mac& t7 |7 J2 L5 z/ P' r
#pack1" d% l: H& H6 J ~/ d4 R- ]- k6 c
class pack:
( G6 B7 _' l. R& z pass9 r$ z* e2 r, O- Q, X r
pk=pack()7 N$ m7 `( g- C8 v. ~% p
pk.len='00000032'
% e, T7 a" r5 H) Q, _' Apk.ID='0001'
# d( I+ ]$ F, u3 S1 g$ K; o1 spk.slnum='00000004'. ~- E) F3 D* X2 W
pk.poscode='123456781234'* s* a" I9 S& R- Z. S. ]* y
pk.rand='1122334455667788'
: s0 ^: ^; R$ zpk.psam='313233343536'
7 b4 b t" w! b) t: V. Q, Fpk.kind='0000'
$ B2 Q3 h$ |6 p- j/ ]pk.ver='000001'8 i, d3 z% s. j' d" ^& M
pk.time='20140805135601'/ }7 p: x0 b8 F: I
pk.mac='06cc571e6d96e12d'
5 q- N$ {+ b) e- A' S, p' T1 |% a
2 k# a( w' ]$ z) B9 r2 g9 ydata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
# f9 p/ S4 n4 h e/ ?8 J#print_hex(data)2 Z k1 Q5 c6 h9 S% e' z( ~* M
pdata.value=data5 ^6 o9 E* T; \9 Y2 X) m+ D# B
#cacl MAC5 Q/ U/ \7 Z3 }3 p6 M* \
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
, |4 @ F2 M& Z) v |+ Sstro= pmac.value
5 a- d6 ?, T1 W% u; e+ ~strtemp=''$ b: c( T n! G/ w# k
for c in stro:
2 h, t& h# t% U1 O( y$ t3 N7 v strtemp+="{0:02x}".format(ord(c))/ i- p( K( E$ O, ~" w
#print strtemp
0 Z: `3 E) V; T& h# ^9 N4 tpk.mac=strtemp
, m5 d$ b# t% _ x( @5 q; |* ?#data to send- [+ y2 E2 d! d( `# G& C. [
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
/ u- f2 B$ I9 i& K& q: Dprint 'send1 len is 0x%02x' %(len(sd)/2)
% M1 Z" w( v8 n% P2 D% hprint sd
+ ?7 K( d3 v) P# a7 J. P# z#pack26 I, X6 [- ]( O8 l8 ?0 K1 z
class pack2:
4 m& m' B) k5 ~+ Y pass- a% `8 f! t( P R/ U3 e/ g
pk2=pack2()
1 o# a$ h1 X* C3 B2 a) ipk2.len='0000006E'/ ?2 F5 S0 \/ V1 M6 O
pk2.ID='0012'/ f; A6 e1 v2 M# V6 N2 n' }* f
pk2.slnum='00000005'3 H( ]4 m8 J; R3 l3 `/ p) c
pk2.fatCode='00'* |8 |" w( @5 ]' v( a
pk2.cardASN='0000000000000000'2 ^: a; M, F- S) r0 \
pk2.cardType='00'
% X. t( R0 \" y$ s4 I5 r3 ~pk2.userNO= '0000000000000000'
& I) ?) s/ n. b+ a2 j" G8 u# N" |
pk2.fileName1='00000000000000000000000000000015'
9 A6 h N; b5 f: B' lpk2.dataLen1='00'# V- p0 }$ y% A* t
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
& j2 A% j0 Q- K9 qpk2.fileName2='00000000000000000000000000000016'8 w5 h+ b- _( L2 n6 Q. {
pk2.dataLen2='00'
! a1 U/ M J; G% I4 [/ K- Mpk2.dataArea2='000003E800FFFF16'
) Y! r4 l0 X- b# M5 x" t* Tpk2.mac='06cc571e6d96e12d', f) Z/ e' `# Q
+ p P7 \/ v; L( Bdata2=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)* X, T- C5 f9 L
7 p9 D7 I8 S% ?1 u
pdata.value=data2
9 Y: h q, B9 m4 f#cacl MAC5 S) _9 L/ n: k A: B
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)8 @0 l! C+ g" H: s' r
stro= pmac.value1 u9 q- H! ]8 g. `, q" o( [7 G: T
strtemp=''7 }$ ]; Y$ M( ^
for c in stro:# R7 D, R2 w7 n$ A9 U$ w3 W! U! Q
strtemp+="{0:02x}".format(ord(c)); [9 c$ P3 e2 G. P* D8 g
#print strtemp
0 O9 j# I: X$ Cpk2.mac=strtemp
5 f6 ]4 T7 y& O. [0 P+ x#data to send9 B" Y* F9 H) ^& I& m
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
& w5 N6 g0 Q+ u4 y7 S! |: ?% k% J/ w5 ~1 q; D& c
print 'send2 len is 0x%02x' %(len(sd2)/2). c! J$ {2 K- L! ]9 Q( w/ D7 Q) Y
print sd2
5 B e$ o+ ?! [: v" B
' @( b* n/ S- D' }2 D" c6 Z m$ M) s o, Q S
#PORT="192.168.60.37"
& f( S( m) X2 e#PORT="localhost" |$ F" b9 g k) o: L
HOST, PORT = "192.168.51.28", 5800: ^" j4 [* [6 G# K7 z
# Create a socket (SOCK_STREAM means a TCP socket) J+ k7 R: m8 [" Q
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)) k7 d5 \4 ^- C) [7 E4 u6 F4 |
try:
8 g1 P6 ]: A7 Y7 J # Connect to server and send data
$ q2 o6 h- W& x) T" s" _% C6 w. L sock.connect((HOST, int(PORT))/ ~* F( T U, y {0 r" P
#data= "123456789"; e: S8 j! W3 f6 P3 ^4 d/ o
#s = struct.pack('bbb',1,2,3)
7 W/ \+ `5 N1 m0 F; b sock.send(sd.decode('hex'))
) M+ _- r) [% U6 O3 @$ J print "Sent1 OK:"
/ s; @: `' C8 ^: N: t' C print sd1 e+ L* h$ [: P# z
# Receive data from the server and shut down
_8 _* `& _- o4 } received = sock.recv(1024)# q( B/ ^- E) ]( p
print "Received:"1 ]& {+ R& l+ W8 Q" N: p( l
print_hex(received): y2 J4 O9 s- X( C0 {
print 'received len is 0x%02x' %(len(received))- L7 ~. h7 S2 r3 z3 E* D1 B7 J9 m
print 'received data analysis...'
! w5 f9 k; L8 n! |" H" d" o7 t re1=received[0:4] p, _. b, Z5 ^7 w
print_hex(re1)! M8 [; \9 e% G# b+ g2 E" r
re1=received[4:6]
) \. _/ m/ I }% T' n2 o0 P print_hex(re1)
: e2 _7 R6 e( i- ~! i8 G! L re1=received[6:10]
7 p! S' C: B2 w' J2 c$ U% | print_hex(re1)
, s- d* M+ B8 \5 _3 y' O p re1=received[10:16]
; u" Q2 a/ N+ b8 L7 ?6 E print_hex(re1)
8 Q+ L% e, `2 ]
$ S. A" _' Q/ s: P #pack2 send
- d5 r% k! o$ U, Z1 e( H sock.send(sd2.decode('hex'))( S/ k0 r' v* U7 c o0 H3 e% d
print "Sent2 OK:"
P( b: i, M2 x. _ print sd2
9 F4 k! @+ x6 _ # Receive data from the server and shut down, @! h' `) C) ?4 ?* a
received1 = sock.recv(1024): P2 v) G3 @9 d6 f1 ?
print "Received1:"( i" N: q4 Y3 z
print_hex(received1)
* Z5 ?$ l# ^' ]- \3 A7 B print 'received1 len is 0x%02x' %(len(received1)): |4 ]$ Z5 k) s+ F, p. x2 m
. b/ U m( t6 t% G" h# t9 C; A
finally: R d, l( K2 e
sock.close(), y0 q) P1 r8 E) e ^8 ?3 M
# o! |- H" d# Y `. cs=raw_input('press any key to continue...')2 t" g& c/ N+ @" V
9 l. j' B4 ?4 `0 v1 S
+ X0 M' b p* x0 }2 J |
zan
|