QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2632|回复: 0
打印 上一主题 下一主题

报文拼接与加解密测试

[复制链接]
字体大小: 正常 放大

1186

主题

4

听众

2923

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 17:21 |只看该作者 |正序浏览
|招呼Ta 关注Ta
# -*- coding: gb2312 -*-
+ T* I& V/ J, I  `$ M8 R) q; Nimport socket
6 A. ^2 b# d, J8 @1 {from myutil import *& `7 L4 f  ~* ]8 X5 l
from binascii import unhexlify as unhex$ f- B4 C5 W( @( o
from ctypes import *2 ^" D; D' L1 L. ]7 n$ T4 P
dll = cdll.LoadLibrary('mydll.dll')
% n9 ?( ^/ Y4 L& _print 'begin load mydll..'
. b  E/ ]. ^# w, E#key, q* h1 z) F+ ^0 f
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
& c9 I! n" n8 i( I! Z#output MAC$ b, i' I, W' k, T
mac='\x00'*8
0 W  J" J5 N; N6 N4 `data='\x00'*8
# S4 t1 z8 g. W  y3 P8 X2 _# Qpkey=c_char_p()9 n( [8 K( a8 F: p* t  \! s+ c
pdata=c_char_p()
: p$ f. v4 F& h4 U2 d( ^pmac=c_char_p()' T  v* i% o% r3 @8 u( f/ s1 A: p8 m
pkey.value=key5 y8 ]0 z8 v7 }5 m. Y. n% x4 L9 T
pdata.value=data$ b5 ^0 u$ G- A8 i, z' Z# D7 h
pmac.value=mac
! O  w$ m1 ?% p) h9 U- r4 S1 O5 W#pack1
. [- x! u' v# B9 `# {5 \class pack:
5 V" X) H' T8 i! p. O+ l   pass: J1 \9 k9 B& [7 m: w
pk=pack()
4 _/ l' m$ M7 N3 @% epk.len='00000032'# w! ^0 C) z) \2 o$ h4 E& D  T
pk.ID='0001'( b0 L: Y* D6 P; c) C
pk.slnum='00000004'0 B8 l' Z' z4 d7 E
pk.poscode='123456781234'$ ^3 Q# x$ Z3 Z, ]! w9 E
pk.rand='1122334455667788'7 H' x/ E2 P9 y6 W1 ?
pk.psam='313233343536'0 X# p4 ?7 {8 x- b
pk.kind='0000'
4 I1 x  f( E1 q. m6 J+ xpk.ver='000001'
4 x: L. @/ @: L' e) s# Vpk.time='20140805135601'
9 H( ]# P* d5 k( c/ n% G/ }pk.mac='06cc571e6d96e12d'
9 l0 [7 T- @8 ]. f8 B6 W% F' L0 ?% d* A5 k
data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
3 p% w# Y, I$ t4 l#print_hex(data)% g) }* a0 N* ]8 r* E
pdata.value=data
) h# v% u" f/ u) K#cacl MAC
# v$ U; [) s" mdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
" _: D# F- U8 r* z- |- t+ cstro= pmac.value+ V. G0 o' E) C- r) p
strtemp=''! O! P/ I' }+ \# v/ |& U* s% M6 N2 z
for c in stro:
/ L- j4 v$ e' |1 {1 r    strtemp+="{0:02x}".format(ord(c))
% P& l6 q' d1 K  v7 T/ z#print strtemp
1 ^' ^0 D/ q) f$ }3 Xpk.mac=strtemp
3 |! A( S4 u7 `#data to send
% [$ }/ O1 G4 b$ |2 C& Rsd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac0 F+ \8 ~% u0 v4 N. I6 f/ J) p' [' j
print  'send1 len is 0x%02x' %(len(sd)/2)% _& G* S9 v2 B; M
print sd% y0 c( s5 |$ b
#pack2
7 `/ D: C  w  Pclass pack2:
% @  H! a/ w' P& J* e3 S# F6 K) ^   pass
' R2 ?+ \! U3 npk2=pack2()
+ |3 A# M. ^0 ~. Cpk2.len='0000006E'
' q2 h0 v$ J& ^1 u, L2 Qpk2.ID='0012'
& \0 e# j1 l% Lpk2.slnum='00000005'! `5 s1 q7 p( P8 J
pk2.fatCode='00'
$ _; E& d1 L. \7 \6 c' b7 k4 A8 [pk2.cardASN='0000000000000000'
3 \; x' |5 I3 }+ z& F, [# t/ Jpk2.cardType='00'
. l0 A9 B  `, g# `pk2.userNO= '0000000000000000'
! E* D4 ?! W6 {& r7 t3 r, `5 l8 o* P" @% ~* j/ Q' O+ K. {
pk2.fileName1='00000000000000000000000000000015'9 {( v2 x/ `2 D. L6 F' ^
pk2.dataLen1='00'
" ^8 W, B0 z( |0 D+ `1 m- P! |pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'9 A) L* `! N; ]
pk2.fileName2='00000000000000000000000000000016'
0 E$ Q5 B1 v) r9 tpk2.dataLen2='00'
% F6 p& f4 s/ c# W9 _  c: dpk2.dataArea2='000003E800FFFF16'' I4 p5 U; v0 O. ^+ \
pk2.mac='06cc571e6d96e12d'3 T- e* x, O0 d# B3 h3 U% g
6 D- F) a( v' h  y$ P, l8 n; B8 N
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)
5 K; O0 \; E* o& ^  b: s6 d) T" m2 ]3 ]  R* B* n' R" w
pdata.value=data2! O! Z& b( \/ M3 P5 z
#cacl MAC
) |+ _& U$ u( d9 o' H9 b! l% xdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
* v7 y% D4 }0 y' `' i& Zstro= pmac.value
- z2 ^% h+ E6 i. L7 istrtemp=''
, N4 ?+ I  x7 F+ F# G1 N2 rfor c in stro:
6 U6 L) v3 d$ _( D3 V7 M- w    strtemp+="{0:02x}".format(ord(c))8 f! r. `' ~5 D9 F  x  m$ L7 F
#print strtemp0 c1 l1 I# A) o8 Q
pk2.mac=strtemp0 d5 O( W) G; ~* T8 Y& ]
#data to send
( \9 h( W3 f+ q6 {" s3 d( Lsd2=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" k7 j' s2 E! k
$ l: S/ l6 g5 U5 s. T  j
print  'send2 len is 0x%02x' %(len(sd2)/2)! k  t" a$ b  g8 q9 R  x* H3 O
print sd2+ s0 S4 y1 m6 X/ A4 F6 z2 [: p

8 w4 D9 g6 ^! [( e
0 W7 C- {3 y" ?; J+ q#PORT="192.168.60.37"2 q' ]# y2 V# m
#PORT="localhost"0 y6 e' Z) j* Z' R$ w
HOST, PORT = "192.168.51.28", 5800
: p: Y( ^) f, y! x# @# Create a socket (SOCK_STREAM means a TCP socket)/ H1 W9 [% c9 k8 r$ i. }
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+ O, [1 Z1 g4 k& Jtry:
5 z1 y# v$ x( f4 B  H2 ^) A+ E    # Connect to server and send data6 |: K2 I/ [; F' a; ~$ D$ j
    sock.connect((HOST, int(PORT))
0 k3 N5 T1 m; P1 a! E        #data= "123456789"
' T6 R- V( l' l* ]; A        #s = struct.pack('bbb',1,2,3)
& U( V% A# o6 f' E    sock.send(sd.decode('hex'))
. y9 J! p( z8 U, `! f: a1 e1 q5 s    print "Sent1 OK:"% f/ k7 y/ t% M* f/ `
    print sd# f% R% w3 X( P. z; D6 w
    # Receive data from the server and shut down5 o, H- o# ^" a8 z6 R
    received = sock.recv(1024)
4 q$ x+ C9 x4 A. F4 @5 T9 ?    print "Received:"8 U( b- }0 `( e) V
    print_hex(received)
/ c  s) C3 T# j0 N4 B9 C5 \    print  'received len is 0x%02x' %(len(received))
/ @4 J+ W3 Q* d* s4 D( i- E    print  'received data analysis...'
  H3 p0 C6 ]& s. N: I9 ?7 _+ N2 J    re1=received[0:4]
" M2 ]9 U5 X  q" I7 G& m    print_hex(re1)
7 t: B3 [5 E" S7 ]    re1=received[4:6]
! O: Q2 A. R" R; w+ R    print_hex(re1)/ d# b: p3 w4 h
    re1=received[6:10]' Q  k) ]9 }9 k: h1 x) S" _
    print_hex(re1)/ W. {. f" l& y3 Y
    re1=received[10:16]
+ \4 T- R4 I4 l3 x    print_hex(re1). h* |1 s) m" g( h
  d& j0 A  w6 E) x( O
    #pack2 send
  [6 p; K% T( B, p, y" S    sock.send(sd2.decode('hex'))  v! P4 S3 d0 [4 Q
    print "Sent2 OK:"% Z8 n9 X. Z2 }
    print sd2
% d/ P  R8 e+ `6 B    # Receive data from the server and shut down
7 U( ^& s! F' X; o! f: {    received1 = sock.recv(1024)1 z+ s! \$ C4 m  X  I0 Z" r6 d
    print "Received1:"
) j- d' x' F$ `3 U    print_hex(received1)$ v$ G, a6 B# ]# t/ B( ~$ G( L
    print  'received1 len is 0x%02x' %(len(received1)), p) m; q5 h6 U7 Q1 W
% R( A: L2 Z1 u1 E9 u  q
finally:6 k. s  H+ ?7 m& O% X' n
    sock.close()) c4 N+ S5 m& d) [

& M9 f. a8 C4 U, y# B! ks=raw_input('press any key to continue...')2 m2 U* n7 c0 Q7 S1 r. s# g% l
. ^: U  }6 C9 c- Q

2 _) B4 v5 c1 w3 ^5 ]( S
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-4-19 22:24 , Processed in 0.499992 second(s), 51 queries .

回顶部