QQ登录

只需要一步,快速开始

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

报文拼接与加解密测试

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

1192

主题

4

听众

2946

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 17:21 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
# -*- coding: gb2312 -*-
/ m( A% Z3 q" |  vimport socket
- O6 @) P* F' c) ]+ q. C/ u$ Efrom myutil import *
0 D- H- A0 d  q/ E" Zfrom binascii import unhexlify as unhex0 C4 E* w; q- |
from ctypes import *
1 E# I+ A9 P1 }) r, ?0 q  ]$ c$ Pdll = cdll.LoadLibrary('mydll.dll')
! J' {8 A8 A* }6 ?print 'begin load mydll..'9 r* z, w2 V' y
#key* x: ?% ~2 b/ w9 j# a% I& p
key='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'
5 f! X+ r& Y8 B) F& z#output MAC- Q1 d7 {. J. V' I3 ^0 C
mac='\x00'*8
: m0 S% u/ _% o$ o* ?* V; ]data='\x00'*81 E  k0 p/ P% `( ?4 ?
pkey=c_char_p()
# v4 n# k; D; h% H6 M. ]pdata=c_char_p()
( T' E  N& B# zpmac=c_char_p()% Z4 ^( A! ^& J% U1 m4 A8 A! X
pkey.value=key
, m- q4 K  ^5 a5 G3 dpdata.value=data
  L# `+ P! ]8 X" |9 h; k- ?pmac.value=mac
% ?4 |% I: {/ K$ x  U( _#pack1
2 H# F; k+ O/ G3 `. j7 Eclass pack:
' f4 o! X/ V; F  H   pass) m0 r* g# ]2 ]8 F. C
pk=pack()
9 @' f/ p- a: x; ~, l& e3 m# Jpk.len='00000032'
5 t7 L! A# @1 w) @2 upk.ID='0001'
" `6 M! l0 c& [- K$ tpk.slnum='00000004'$ [/ W6 `9 g  `( f  W4 d
pk.poscode='123456781234'6 Y! c4 U* N9 f8 V
pk.rand='1122334455667788'
3 e6 I8 Y5 T8 a2 ], F1 gpk.psam='313233343536'  A0 h+ Q' _) b% \: F6 T9 F
pk.kind='0000'
. g" ^2 \: y  z3 m: R* z  gpk.ver='000001'
7 G# B7 t" ~* B* Vpk.time='20140805135601'2 x% p7 y) Q" W( a: [4 b( ]" ^
pk.mac='06cc571e6d96e12d'
2 s* r0 f4 r* i
7 ^" U* {2 T+ t2 g; Hdata=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)( g: Q" z( _) W) y0 H
#print_hex(data)
2 U) i% R7 H2 ?5 d' P: {pdata.value=data7 d& i/ D3 A2 W% p" H
#cacl MAC
4 t' O5 p# _7 D- @' k7 f' Udll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)
/ e7 z% X; z6 E( c( i+ O4 S; Kstro= pmac.value
" }' m5 `, G, V# }: |strtemp=''+ L1 X7 {( b% r% t! i1 t
for c in stro:- H1 A6 s* Q9 x5 B  u) f! `
    strtemp+="{0:02x}".format(ord(c))
; O5 o0 A8 p5 u* o#print strtemp
% ~$ v# X& n( k6 |$ p+ {pk.mac=strtemp
0 c2 m# M# @$ Y. x' V2 s+ B6 V#data to send- J3 y/ \5 h0 B( M. V$ g1 i# [1 l
sd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
' n0 T/ l9 m" Q! A# v( oprint  'send1 len is 0x%02x' %(len(sd)/2)! C/ D0 ~' u8 i) y5 l
print sd( u- _8 S7 r! R/ |
#pack2, N2 M1 x/ o/ h
class pack2:
! Q4 N, @- n( e; J   pass
9 C5 k+ B% F, D" Y) A2 cpk2=pack2()) q. c6 e: P3 K7 o$ G
pk2.len='0000006E'
0 r% g2 L% g! j* W1 jpk2.ID='0012'8 A/ ?7 w5 o- x, T& e5 I+ e
pk2.slnum='00000005'8 S* v; y1 M$ a' b) X
pk2.fatCode='00'
7 {/ }4 O5 m* G/ Ppk2.cardASN='0000000000000000'
- n& u0 T4 p" W0 T, T# s  Bpk2.cardType='00', F4 l, ]( @9 q
pk2.userNO= '0000000000000000'7 r1 X, [7 a% D# f1 m1 R
7 [; O0 P! M% S* v; [0 s; ^
pk2.fileName1='00000000000000000000000000000015'
# ]5 h1 A; X8 b  |# Ipk2.dataLen1='00'' Z  Z8 A7 o+ }. i3 a9 z9 M
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'
6 o, v( ]" ]9 l$ _6 kpk2.fileName2='00000000000000000000000000000016'+ G) n7 R6 a  M( o7 L( ^
pk2.dataLen2='00': S+ I; \0 ?7 l  i6 e% T- e
pk2.dataArea2='000003E800FFFF16'. v- l2 P1 X3 O! l. o( _) n$ ~7 }- f
pk2.mac='06cc571e6d96e12d'
$ F8 d2 X9 v' D( {2 |4 h1 s2 ]( s+ `7 q% V- c' {0 P: I
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)  C! f+ p8 f5 L: F& B
# G4 q+ g. S/ }+ d
pdata.value=data2
0 r5 W  M6 ^- E# o  ~+ l#cacl MAC7 K; T8 k2 U9 z& n9 Z5 d& P
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)# k, L7 Q- }# }% S
stro= pmac.value& r- d0 A8 q* l- j
strtemp=''2 x' l/ a5 e& W7 S% h
for c in stro:
  G3 D; J/ `8 v5 b" |    strtemp+="{0:02x}".format(ord(c))
/ Q% F; q. I& W) _. M, H. J2 }#print strtemp0 u" S* |5 m/ }) i* D  ?
pk2.mac=strtemp
; Z6 v! h9 e* c#data to send8 z: I* r3 Y2 c
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
1 z9 ?. R) r$ X, w9 E
* f$ b0 G2 k7 G+ wprint  'send2 len is 0x%02x' %(len(sd2)/2)# l; V( Q6 C* M' V: ~6 ^2 W
print sd2! {1 ^0 o" [9 s) g8 a  W

. K/ g6 T) w7 P6 y
2 ^) O; D& a* y/ T. V: B/ F#PORT="192.168.60.37"0 j! _( |4 \9 \' g2 t% c
#PORT="localhost"9 [8 M- B! a- ]
HOST, PORT = "192.168.51.28", 5800
+ n/ S; I8 W! y- D# Y  ?" C# y# Create a socket (SOCK_STREAM means a TCP socket)
2 v' a6 {  p1 V; G) P8 u: qsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)5 j! f$ ^! D2 o0 j- Z! [
try:9 G+ c7 Q* X$ }1 n
    # Connect to server and send data) h$ t! n+ Q& b# x/ g, L8 u2 E
    sock.connect((HOST, int(PORT))
/ i2 `! U) H7 Z        #data= "123456789"
* l( N. Z1 h/ ~1 J" N+ ~& j7 V, P; o        #s = struct.pack('bbb',1,2,3)
9 J% n3 U) R; `, `! z  b+ h2 o    sock.send(sd.decode('hex'))- J* u) `- `1 j" y0 C
    print "Sent1 OK:"
' F+ k1 V1 @" y6 Z$ M. f0 L0 d    print sd
0 [# h; T" C. ^* l    # Receive data from the server and shut down* x3 g6 j2 N8 W& u: o
    received = sock.recv(1024)  s8 A- N% A! f- \' \6 n8 {
    print "Received:"
& P- Y) t! g7 u* ^4 T    print_hex(received)* [* z' S6 z; [* g4 N; z
    print  'received len is 0x%02x' %(len(received))4 D: ^3 q. C  t0 d; ^' d
    print  'received data analysis...'
7 N, X4 D$ e& P* [. `) h    re1=received[0:4]
% M: S& Z  @% o$ ]! e6 y2 E  H  i8 Y    print_hex(re1)
, ?' Y. h2 S5 h    re1=received[4:6]+ e9 P* \) C) B
    print_hex(re1); G, ~+ y' R) h4 Y
    re1=received[6:10]+ b: l7 ?$ l0 }& }/ p& s
    print_hex(re1)
* R+ b" k( [2 s- M    re1=received[10:16]
/ g7 b7 J9 ]" J& L  `    print_hex(re1)2 e1 C5 Q) p# u, D
% g4 W) N2 s  k
    #pack2 send
: D5 j+ [+ n4 O1 L7 v    sock.send(sd2.decode('hex'))6 x7 |* L+ a7 _. [+ L
    print "Sent2 OK:"
/ m% o* O) |% P. `/ a# O; {    print sd2
5 C7 _) D9 l1 b- f6 l9 {' S. a8 Q    # Receive data from the server and shut down
: B7 d4 l; w: U2 b2 W% \: j    received1 = sock.recv(1024)
6 e  B- g1 D+ R$ n8 p" }3 i    print "Received1:"8 a& d* U! d5 T
    print_hex(received1)# R/ j! f9 r8 g# ~7 h
    print  'received1 len is 0x%02x' %(len(received1))3 |# d' H3 w/ n2 H" a- I( t- c

3 \: m9 c0 Q$ j5 J0 W1 w5 }( |finally:1 u# ?8 i: g" ]+ `* R
    sock.close()
' M" G# ^1 W$ Q9 B
9 U( r# ~5 @5 N0 ss=raw_input('press any key to continue...')
& `8 F, f  }9 d% k
& {" R4 _9 l* u
( ?6 t2 `; l- v- V! S# r$ e
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-9-1 11:25 , Processed in 0.423938 second(s), 51 queries .

回顶部