- 在线时间
- 479 小时
- 最后登录
- 2026-4-17
- 注册时间
- 2023-7-11
- 听众数
- 4
- 收听数
- 0
- 能力
- 0 分
- 体力
- 7790 点
- 威望
- 0 点
- 阅读权限
- 255
- 积分
- 2923
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 1171
- 主题
- 1186
- 精华
- 0
- 分享
- 0
- 好友
- 1
该用户从未签到
 |
# -*- coding: gb2312 -*-! ]( w) r& N& \
import socket
0 w! Y3 y# `) {0 `1 R9 N4 D3 \, h3 \8 o, kfrom myutil import *
; f1 J4 H4 j6 Tfrom binascii import unhexlify as unhex
1 o$ g) g; v/ Tfrom ctypes import *& Z I! f; z7 U3 X! r. V+ T
dll = cdll.LoadLibrary('mydll.dll')
1 |. J0 T/ b$ dprint 'begin load mydll..': W) V) ?6 d/ G5 A; |8 u ]
#key
$ E G0 s" |) s. Z) p& z/ Z& T2 Skey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'+ A! w5 O, z, g
#output MAC
5 r/ p" Y- C$ E* T) smac='\x00'*8
& L& y0 n X6 f, e) mdata='\x00'*8
" I- `; A) d4 W4 t" L$ Npkey=c_char_p()5 s% n b( |8 i; P$ s9 P8 ~0 n8 S
pdata=c_char_p()/ G: F+ p% F& H9 B! z) x; ^# G
pmac=c_char_p()# d6 I0 [- n9 B4 _+ [
pkey.value=key
6 j0 k4 U1 m: N- opdata.value=data) ~ |* B- S: e" O" p
pmac.value=mac# x# ] t- d7 S5 b0 j
#pack12 u1 ~. Y+ K: n9 d+ ~) h& |
class pack:, W2 M. i9 _3 q9 S
pass; O" r+ d3 r5 s" ]& Q" h; K
pk=pack()
b1 d& V5 q4 `* hpk.len='00000032'
0 W* I& y$ p) N$ G9 K9 ~pk.ID='0001'+ C; k; r4 \/ W: K1 B
pk.slnum='00000004'
2 u0 [0 h( A5 c: D1 d8 W4 b! x* mpk.poscode='123456781234'
! F, @9 y( ?4 j; B- H1 |& {pk.rand='1122334455667788'3 N: q: @7 D+ ?
pk.psam='313233343536', J: {2 u( U C& i' T4 s. u
pk.kind='0000'' Z1 Q+ g( g* l% C( e, |, G# O7 X
pk.ver='000001'
. Q. [8 F- q ~7 p+ i4 wpk.time='20140805135601'
/ k, n+ m2 x/ P. m6 m! P/ c) dpk.mac='06cc571e6d96e12d' ~$ Y2 D4 l/ j+ Z& v9 Y
! g* | {2 ^7 x* `+ w Odata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
: E s/ Y% E5 R# _7 r2 I$ N( K$ ^#print_hex(data)
& V/ W k. {% z# ?pdata.value=data
+ |% l' M }; I. |9 c" @#cacl MAC
+ m& K. q. Y, G* n, ~0 l9 E) xdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
, I0 P U9 d4 `0 Y4 z- u$ a# wstro= pmac.value1 a, E! s1 F1 v
strtemp=''
& Z$ D" k- ~! b. {for c in stro:
d. M+ h9 K- ~; |, B) m D strtemp+="{0:02x}".format(ord(c))
3 t( R: Z* _% u7 o x# J8 g#print strtemp
( s& a- W4 {4 O x' i: ?/ [ N7 Jpk.mac=strtemp
' R8 O% j$ W, \; ]+ ~#data to send: }1 W z% ]( S$ l
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
% U3 d0 }% B n" n3 `/ zprint 'send1 len is 0x%02x' %(len(sd)/2)
/ P0 n+ A; ~* B, e5 b, qprint sd* i& f$ x8 x4 G8 G0 Q) e& S" v
#pack2
2 Q- A& L" r: |class pack2:) J0 c8 N6 L4 ~/ M1 c' G
pass
, m0 k2 p! a. M, S5 `* c/ m/ q& Mpk2=pack2()
6 s7 A4 d9 D/ U. ?1 b2 B1 K upk2.len='0000006E'
0 \ d0 O* l1 D6 o1 D) Bpk2.ID='0012'
5 _* X% s/ ^* C3 Q, Opk2.slnum='00000005'8 l! F' [. o: v' s" E
pk2.fatCode='00'
% r) h' V. v( k) a/ B& X+ F' opk2.cardASN='0000000000000000'/ |) `* u; Z. \' @! t& r3 Z* \- Z
pk2.cardType='00'
0 e. n3 ~% t+ O( k2 G. Y$ kpk2.userNO= '0000000000000000'
: c& G+ X4 r3 R8 m6 k3 c8 X) m9 }/ f0 Y9 i- N
pk2.fileName1='00000000000000000000000000000015'" `: ?+ s6 l8 q8 G
pk2.dataLen1='00'
& ?4 {! r" W$ Z) j4 i3 tpk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
7 M2 V, B8 n8 n% M4 s0 Xpk2.fileName2='00000000000000000000000000000016'
0 R( _' F! I& W( Xpk2.dataLen2='00'3 x) Y3 [0 Y; {
pk2.dataArea2='000003E800FFFF16'% S5 ?# u' @% a, ~
pk2.mac='06cc571e6d96e12d'$ e7 v/ _" Z9 F6 O& W' _
% v+ S3 I- c4 x) O0 \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)0 O) \. G ]7 m8 q8 _- V9 I3 F
% Y4 V) X! ~# h9 z5 j3 b3 [
pdata.value=data2
# O& t8 v/ ]4 t5 N; K# d& n#cacl MAC
# Z+ F: @- U' udll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
& [) G! r; o; Z! q' |stro= pmac.value4 z# J3 X+ s F$ q& `2 x4 h
strtemp=''. i& g( L' x: C. @
for c in stro:
2 ^6 K# y# ~' M7 Z5 r4 F& p5 r strtemp+="{0:02x}".format(ord(c))
" ~, f* a( P1 r: [ o#print strtemp
) J2 t- z g! R7 \6 k' n: ~& u+ Ypk2.mac=strtemp; b" g% k k8 L- d% z
#data to send7 f- _5 E. y* B4 S
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
+ ?, b* j6 r W6 Q, b) W: f6 A. }* r5 @4 u$ d/ u4 @0 w" }1 C$ }
print 'send2 len is 0x%02x' %(len(sd2)/2)
/ P9 g3 U0 @& j$ qprint sd2' H4 _4 ?2 U- r& z3 p
$ J% _. i5 o3 w4 R# y7 l
/ @' p! u5 Y! M0 P
#PORT="192.168.60.37"3 q& R: S j- x; b. U+ [% j
#PORT="localhost"
3 t) V6 Y. c8 _1 w8 c0 j' OHOST, PORT = "192.168.51.28", 5800
( D6 A' }, M+ G( B# Create a socket (SOCK_STREAM means a TCP socket)4 n) w3 L ~7 i v: m( c" g
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM). E& D9 r) p+ X; I) Q
try:
: u( l/ r( M, i8 A: }& @ # Connect to server and send data7 L) E# {2 m/ A$ z/ ?; b9 Y
sock.connect((HOST, int(PORT))- d8 l$ x' `0 r$ \
#data= "123456789"# g- E6 [9 ?9 M! Q
#s = struct.pack('bbb',1,2,3)4 p- N6 f' P. v) R
sock.send(sd.decode('hex')); |6 t! Q7 D" Z4 O. d4 h+ {7 W1 a
print "Sent1 OK:"
+ O, Q# c% m& H: s. }) q7 c( x print sd
) L0 G' @) h' r # Receive data from the server and shut down/ z# c c. s- H; k" n: G+ V
received = sock.recv(1024): V& K9 d+ r6 u @
print "Received:"
+ _& ]; K6 a. K# M- _ print_hex(received)
) `6 j; o! e/ k/ X* t$ i print 'received len is 0x%02x' %(len(received))) y. g- m# O c$ w
print 'received data analysis...'+ W# B, w, k, y; u S7 u
re1=received[0:4]" u, j; t4 e3 m" Q6 \4 u; n/ s
print_hex(re1)2 C* s4 W3 M# U, D4 }7 `# v
re1=received[4:6]' `8 N/ i( }$ x0 J
print_hex(re1)
/ b& H; }! ?5 T# Q re1=received[6:10]/ k! J5 q" M6 K$ X1 P
print_hex(re1)) m7 \& N( q: A& t( c
re1=received[10:16]
- y; c! p: i/ F7 k/ ?- h( q( k4 c8 \ print_hex(re1)' ]1 a7 c: ~1 z- \0 z8 \
* t& H. O* h4 ?9 ]3 W i
#pack2 send& M ^1 i7 |6 h2 {
sock.send(sd2.decode('hex'))
" y+ x; }! l7 E6 L0 d8 T print "Sent2 OK:"5 F& T6 l7 z+ _; H- Z
print sd28 x. n# _+ l: j: b
# Receive data from the server and shut down: M5 V$ q3 M8 J5 {; U
received1 = sock.recv(1024)
$ |3 G: f7 U2 G! I6 @1 O) \5 [ print "Received1:"$ ^' I3 e/ I3 Q
print_hex(received1)
) j9 m1 S$ j1 D+ G# [. C/ T* g' {6 f' } K print 'received1 len is 0x%02x' %(len(received1))
$ a ?4 `3 }- ?' `, }+ q6 f
$ d7 d8 \% q3 S7 b1 r% z& [% _* K* afinally:: v! o. [; `" O3 ]
sock.close()4 T9 m4 y& @$ q' i3 ?$ w" M4 K
) R- T& B# n: m4 C' q1 V8 r7 c) U
s=raw_input('press any key to continue...')
* @5 y# r1 Q+ y: C/ m5 O) [( o3 }/ _, \: y
6 `( c4 F7 |0 H& }6 G. o |
zan
|