- 在线时间
- 480 小时
- 最后登录
- 2026-6-1
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7823 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2934
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1174
- 主题
- 1189
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-
! P: J2 \. ^- z6 _3 }import socket0 w0 C3 B$ L! u0 I! I# u# Y
from myutil import *
) A$ e! N- Z8 Rfrom binascii import unhexlify as unhex
# a9 b: t- X1 |4 @' M) Z7 A" rfrom ctypes import *' ?6 C) l6 R6 s1 D X, |; F& x
dll = cdll.LoadLibrary('mydll.dll')
( r m" o2 S9 b1 e% Z1 `8 C1 g- ~$ X5 ?* iprint 'begin load mydll..'
, ?0 ?# z1 O% r+ ^2 d# q5 W#key% c3 Q$ D3 g0 k$ J
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
! @ h. O$ _) W m' U#output MAC
1 j2 c6 @9 E U# c1 emac='\x00'*8( [& m* V2 e" y+ K* Z k2 x
data='\x00'*8
1 z5 z/ R' O& \; J& D9 J( fpkey=c_char_p()1 C) l' |, a9 W) F2 o6 v
pdata=c_char_p()2 I5 e/ S4 r4 n$ k" U3 n- v6 t
pmac=c_char_p()9 D5 C$ U5 n) J) d; Y0 u
pkey.value=key3 E2 P6 O, `3 X ?3 U& |
pdata.value=data
1 ]* a' P Y! n; @# apmac.value=mac; a9 e& u, V) \0 e) t# Y+ ~# C4 |
#pack1
# x4 e/ Q/ `, B& L9 c3 iclass pack:
! T3 b" G* |/ F pass2 r+ A# S4 S. G5 J0 M
pk=pack()/ B C1 L' Q, k2 J" |0 r$ U- I
pk.len='00000032'; V, h2 F) _' [! m# @7 b! _1 ~
pk.ID='0001' u6 V' o- {$ X0 }, \
pk.slnum='00000004'3 X0 i$ c9 T$ } B+ d2 o, h5 c
pk.poscode='123456781234'9 Q: E) m% R/ ]" l* k! n9 E) O. ^" z3 q n
pk.rand='1122334455667788'
' [! R4 { `* E9 k/ [pk.psam='313233343536'
0 B: E8 A: {' r' h7 I0 Gpk.kind='0000'/ z) {# V7 Z4 ]' l: G* i: p
pk.ver='000001') a' A$ l* u0 r+ i5 {
pk.time='20140805135601'5 y3 a4 v9 ~6 D/ F$ n
pk.mac='06cc571e6d96e12d'
& D: P2 ], a& T! }+ X
& e) p. s7 k# L% T$ ldata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
" r. P, ~5 X* w; T J; ? C#print_hex(data)
4 O! Q3 M5 F+ o! cpdata.value=data
2 ^" C" `4 C0 {/ H7 Z+ e: [#cacl MAC; G8 M9 p- L: `( z
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)& C- A; m& i. \0 a) U9 c
stro= pmac.value
5 A) }( W! k: l2 F vstrtemp=''
, ~- L5 ?+ K5 r; sfor c in stro:
; b, e# a* P$ `6 U1 A( Z strtemp+="{0:02x}".format(ord(c))
r, I+ d* n8 j( n' T#print strtemp
0 u( Y: E! \3 _ t8 rpk.mac=strtemp- B" w/ [5 Q& c' }6 X4 s
#data to send/ \1 F _0 p8 `* P
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac0 b. ^: N: T; O: c3 S
print 'send1 len is 0x%02x' %(len(sd)/2)$ P% n) f2 H, m6 x0 q! A; P
print sd
0 F0 \* G, T5 Q; y/ }/ N C#pack27 Z* z7 E1 @5 b$ [/ s
class pack2:$ i0 E. B5 z3 ^. w6 n
pass
$ z. e* A5 S1 G$ j8 [4 X; _" |pk2=pack2(); W+ B2 A/ x& g2 q
pk2.len='0000006E'3 U% P+ {+ h- ^. ]' U9 @2 C: K
pk2.ID='0012'
+ C9 _6 W* C: v8 ^pk2.slnum='00000005'
. l9 ]% [; B" {# B. @pk2.fatCode='00'
5 J7 z& `7 |- c u4 P, ipk2.cardASN='0000000000000000'
) A, h3 \0 r* L8 L0 c: ?, npk2.cardType='00'
" W; v% x# l" t7 g, r: rpk2.userNO= '0000000000000000'
r. e2 T9 v# p, V
, c, E; g) b! vpk2.fileName1='00000000000000000000000000000015'
I6 O' L, T: L+ {pk2.dataLen1='00'
5 [ {- X4 ?5 g! apk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
5 f1 m5 n+ {# b* {( Npk2.fileName2='00000000000000000000000000000016'5 n" b: Q/ m/ X
pk2.dataLen2='00'
6 B$ t/ [( j) H/ |- n" K- E4 opk2.dataArea2='000003E800FFFF16'
9 f8 f0 t9 | \; k5 w/ Y! u1 z# rpk2.mac='06cc571e6d96e12d'; ~+ g8 n$ ]$ x8 k3 M( P
4 }( q# ^" s* Z1 r7 e% j0 v& q3 Kdata2=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)
4 l( r U/ Z5 ?/ E$ r
7 S2 F+ n8 X) V: ~; y% gpdata.value=data2/ h- T6 q* r" ?6 C
#cacl MAC
% @9 t/ G1 e; B) J8 k Gdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
" h$ ]( } P- cstro= pmac.value; M Y! j& G( i8 z
strtemp=''
- w2 k/ K, p8 s4 U% K: ]for c in stro:
' E( C% V, c; y8 F3 H: p6 z strtemp+="{0:02x}".format(ord(c))$ Q1 ?4 J! O. a2 R; K- `% `
#print strtemp
* q: ~ E D; f5 G+ F2 Hpk2.mac=strtemp
* @3 r" @* V- o#data to send k& ]7 M2 O# I; 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.mac# H3 i9 R' Z( q# ?1 T
2 F% S6 ^/ U6 O0 M* g ~; V. G0 e
print 'send2 len is 0x%02x' %(len(sd2)/2)& K8 W/ Q" Q( n. V8 R' [
print sd22 M, m7 P! U" p- @6 t" d6 i
8 Q7 B# N z+ v4 n7 p2 O- H
! r) a4 J g! i" B
#PORT="192.168.60.37"! \- `/ z1 `* t# [5 k
#PORT="localhost"9 x5 A o, q% i6 x7 y) `
HOST, PORT = "192.168.51.28", 5800
5 I( N8 Q! M, u( B! \# Create a socket (SOCK_STREAM means a TCP socket): q7 T1 G' v) y$ u, U! d u
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
, n. w a$ \$ k- A; S% Ntry:: Z+ {6 [0 c1 q
# Connect to server and send data
% ]- G' G( a# Z: e4 K U* _" o# P sock.connect((HOST, int(PORT))
3 X1 j. b% J6 ~- m, m' t: [ #data= "123456789"
6 ?: M9 w% K; ^# |4 `2 ]: b* H #s = struct.pack('bbb',1,2,3) e: Q6 _% d/ L, C
sock.send(sd.decode('hex'))3 x0 l& n9 n' @ Q
print "Sent1 OK:"4 X# n, A w) |% m7 S
print sd
# x% ~* J0 s7 h: ^8 ^& c9 f # Receive data from the server and shut down
) B/ S) M0 |3 n4 w% u/ q4 C received = sock.recv(1024)
/ _3 A/ R& ?2 m: Y# S. ]% }2 m print "Received:"
7 u! {% G4 X8 _3 H' { print_hex(received): Y; F/ _7 C+ x; _
print 'received len is 0x%02x' %(len(received))
o0 N* I; H1 F; ~$ V print 'received data analysis...'7 f# i& J4 M6 }
re1=received[0:4]( V. \" s# N) d8 P( t8 |
print_hex(re1)/ l) b% C3 t1 @( D
re1=received[4:6]
- Z; S" J0 b% t& B3 b ] print_hex(re1) A& V- Z7 p0 L
re1=received[6:10]# ^: q. w) v2 x5 _& y0 `, D% t/ j
print_hex(re1)
" {/ X' ?7 L4 f% U5 ^; o8 D* { re1=received[10:16]* @9 c& r7 F# ?9 I9 J4 l3 i
print_hex(re1) H I0 c7 V4 s; G0 v6 e, s1 V, j
4 T- k- ?3 P9 I( `. A% |3 \
#pack2 send0 U9 O6 Z5 U5 v- V9 v
sock.send(sd2.decode('hex'))
0 _/ l" t0 n1 j3 j% O g print "Sent2 OK:"
% r) T. p4 _! c9 l& l print sd2" H. K, K& H! A) l1 ?. ~
# Receive data from the server and shut down
$ }' e, h0 t% Z1 ^5 V/ c! H received1 = sock.recv(1024)( E) G( b G+ W9 F0 h2 c
print "Received1:"
- m- N* o: _! z9 [+ V% i. T7 ~) \ print_hex(received1)
5 u! e0 S* I# r8 P. L# r print 'received1 len is 0x%02x' %(len(received1)): E/ Y" v, v" p4 i& |* w; _
) j+ z3 }. t) `& d& lfinally:, n# @ U; G& z& v1 Y" D0 U
sock.close()9 K/ H1 i9 }2 B+ ^2 ~3 E9 ]
5 S9 Q1 k" a! J7 _7 T" v! ^. A# _s=raw_input('press any key to continue...')0 {8 m' a4 t9 u+ H% v
3 x" E: T5 p7 L- K9 M
) T* Z0 j6 a3 P6 @; r" e |
zan
|