QQ登录

只需要一步,快速开始

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

报文拼接与加解密测试

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

1189

主题

4

听众

2934

积分

该用户从未签到

跳转到指定楼层
1#
发表于 2024-3-31 17:21 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
# -*- coding: gb2312 -*-( L2 w  W) l/ D% V# o  H
import socket
/ U7 @  o* s  t; K, u4 G% O5 sfrom myutil import *
( j" j/ L* p' J3 J$ a" K" ffrom binascii import unhexlify as unhex+ {# ~& O/ F: l. I% I
from ctypes import *0 l5 h* \% G1 |* S( d
dll = cdll.LoadLibrary('mydll.dll')
' R' A$ y. n6 i7 Q, }$ Wprint 'begin load mydll..'+ e+ O2 |/ E( g3 v2 }( H
#key
7 Y7 n& u) h) n" }8 E& Qkey='\xF1\xE2\xD3\xC4\xF1\xE2\xD3\xC4'" v( ^7 l+ j4 f3 K
#output MAC
( G( L: l0 j0 z8 S6 y  Hmac='\x00'*85 ^* j) P; k/ W
data='\x00'*8
6 G, q8 y+ b+ `0 I  o. z8 [* w  Fpkey=c_char_p()
# Z& Z; ]: b' h+ {+ D9 C. Vpdata=c_char_p()6 d" e0 E! @  R: R$ u
pmac=c_char_p()0 n# b/ c/ v. K* W' i8 T9 R
pkey.value=key
, F# `( b" R' I0 ~: K; T$ F% ~pdata.value=data
2 j- U4 `6 `* h+ mpmac.value=mac
$ O0 [5 R% [7 u. r% v# D0 V#pack1
: Q$ |! J- A8 V- x2 |class pack:- e4 Z8 B1 e4 x
   pass& d$ r& z, S( ~5 E# b. ~! b
pk=pack()
: H" @: f; b2 `: F0 o8 xpk.len='00000032'
; ^/ E' W5 `$ T4 P- S$ Upk.ID='0001'2 {& ^# F/ d: W; H
pk.slnum='00000004'
- n1 G- [* x) w( T" K. jpk.poscode='123456781234'
: [% A6 t  g$ Q0 j, X& xpk.rand='1122334455667788'
  p8 X: K; Y, T- R6 [pk.psam='313233343536'. E% ~! F: R4 e0 `9 D# y
pk.kind='0000'! }& P! V  M' V' u( X; y3 u
pk.ver='000001'
8 d  Z. b; u- W# [# _pk.time='20140805135601'
/ ?# k( n( `$ n/ P& z" u9 }, fpk.mac='06cc571e6d96e12d'
& @7 @  Y+ `' J' Z+ P. m1 v
& a- t5 M) s$ ~data=unhex(pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time)
, ~, ^- V3 ~3 i% S/ n#print_hex(data)
: V8 W" l" e6 w; \pdata.value=data7 j; {, b* i/ M; H
#cacl MAC. k) R$ g2 [" _. r8 X: u4 o$ B
dll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,42,pmac)& t3 c* i3 b7 n* Y
stro= pmac.value
$ Q5 G1 |$ U/ W$ ]& U4 S; cstrtemp=''. _% |/ o7 i. z  }( v# e. v
for c in stro:0 I  @. {2 T: |7 i" d" c0 }
    strtemp+="{0:02x}".format(ord(c))7 |# ^' X, Q: s( e
#print strtemp) C7 x8 m, ~" Z
pk.mac=strtemp; t; f# y( U' R
#data to send
9 w; D0 ]" Y: c' t) S& Ssd=pk.len+pk.ID+pk.slnum+pk.poscode+pk.rand+pk.psam+pk.kind+pk.ver+pk.time+pk.mac
) Y7 _4 [% x1 U/ w$ x, f" y1 q: |print  'send1 len is 0x%02x' %(len(sd)/2)
  _1 ?( Q  U0 e! wprint sd" T' U( a1 K( c3 f6 Z- N
#pack2
) J" k- T0 f6 l  L) @class pack2:
! q7 W. D0 S, d2 n& r; ]6 L' L( W   pass' i% B& ^& o' @5 a
pk2=pack2()
# w7 r! C: Y4 \3 L# h" u) l4 {/ Fpk2.len='0000006E'8 G8 a! q4 H' u  r$ Y0 P5 f7 i
pk2.ID='0012'+ v0 _( g( h* b3 o6 l
pk2.slnum='00000005'3 ]% i- T& K* Y
pk2.fatCode='00'4 P' k2 X; B( O; G5 v# G. r8 U4 @$ c
pk2.cardASN='0000000000000000'
7 Q1 _. g' a" A) Q( \pk2.cardType='00'
, L) e/ o! \' K3 P  L8 F- Jpk2.userNO= '0000000000000000'
) y* d* D, ?, j4 [  q* _) p7 x7 J8 [& [% O3 K% z5 d
pk2.fileName1='00000000000000000000000000000015'- j3 S* b, U& U' V# D
pk2.dataLen1='00'( p" D) A1 r( t+ T
pk2.dataArea1='00000000000000319999990800FB2014080620240806FFFFFFFFFFFFFFFFFFFF'# w: Y0 i( M3 G$ m8 M
pk2.fileName2='00000000000000000000000000000016'# F- u% l  L2 I+ `/ ^' d
pk2.dataLen2='00'
* S/ s0 x9 c7 {! \9 Hpk2.dataArea2='000003E800FFFF16'
( ~6 _' A' }2 W- xpk2.mac='06cc571e6d96e12d'
( E6 W% ?/ w$ ?' C1 h  k2 |1 h: T9 F
( y! M& G' q+ `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)
" i4 O% O! e" G( M4 W6 ^( ^. S" A( {6 M
pdata.value=data2  @! z+ _+ j6 s1 U
#cacl MAC
2 T) v$ p2 _% cdll.CurCalc_DES_MAC64(805306481,pkey,0,pdata,102,pmac)
" G( C* |( f& ustro= pmac.value! S1 f1 ?1 u, @! T7 a3 T/ y1 Y
strtemp=''/ k, B  U" O" I: @
for c in stro:
: U/ f0 y" V' [2 c+ d& e0 g( I    strtemp+="{0:02x}".format(ord(c)). F& r: b  c& m8 @
#print strtemp5 h5 u7 b7 I- |/ P, q
pk2.mac=strtemp4 w% p+ \9 R2 c! F9 n' s; G1 \
#data to send8 K; F4 K9 A4 _+ ^0 T0 z+ T) w" 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.mac5 Z+ T; l0 ]- N# G/ n) x

( J8 J' }0 R4 s" k* L( E1 h  mprint  'send2 len is 0x%02x' %(len(sd2)/2)* x! O. q* Q8 v
print sd2! p) X" V0 n0 @1 a
: E* U) B. G* o3 Y

- G( W8 Q* r5 x8 u#PORT="192.168.60.37"
7 Q2 X2 n5 E! p1 m5 _  f4 x! S#PORT="localhost"7 A! |( |2 A. X/ S: q5 k
HOST, PORT = "192.168.51.28", 5800
7 O* B; u4 F: y/ N% U# Create a socket (SOCK_STREAM means a TCP socket)8 H( i$ F4 v. o& v" R- r. J) z0 x
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)1 f1 G' d) S* d  Y* n$ `
try:0 R) y  ^, I; |' t
    # Connect to server and send data% @4 [6 @0 B% S
    sock.connect((HOST, int(PORT))
% Y2 w9 |: q. ?% [/ @! f" p" |        #data= "123456789"- _, c* p7 V6 N+ M
        #s = struct.pack('bbb',1,2,3)
  |) X# H: z; Z8 N% d3 y+ E    sock.send(sd.decode('hex'))
! E7 X" {7 s) z- o    print "Sent1 OK:"
( _& Z7 A5 q; V( k    print sd" f6 H2 S7 A! a8 e- u( Z
    # Receive data from the server and shut down
& X& |# G5 _8 \  v    received = sock.recv(1024)
9 d, W0 K2 @! U4 Q, u! p- V, |    print "Received:"* r* c% l) f2 e! z: d8 n5 u
    print_hex(received)
- m, I4 q% G& C' k" \# \+ g    print  'received len is 0x%02x' %(len(received)), U* u2 c# j( W  X# C! B* [$ _  N
    print  'received data analysis...'
( W6 P% O+ @5 i1 V7 L$ l! I4 r    re1=received[0:4]9 i( w7 {5 H5 P* ?) N! v
    print_hex(re1)
5 r; [7 [3 S, n9 @$ N    re1=received[4:6], P& X" x% ~; O( _' a- f
    print_hex(re1)  `  K7 Y7 J, A: E; G
    re1=received[6:10]! ?8 F' o- I2 T) X8 E
    print_hex(re1)2 o% z) z# m! L9 H4 p! W
    re1=received[10:16]5 j* o2 F; P/ l/ d
    print_hex(re1)  M! j: W- P" e& J

7 z& a0 y& A, G& `" W    #pack2 send
: S" j0 ?0 N- X$ Z4 I* V' ]( x    sock.send(sd2.decode('hex'))
$ M  Z" @- p! O    print "Sent2 OK:"
" T% k; T/ T7 j# J    print sd2
# H  A2 k6 `( Q  ?* ?/ t    # Receive data from the server and shut down0 V. M* _  a0 F/ F9 s2 |! c
    received1 = sock.recv(1024)6 w5 ]/ j1 y" G
    print "Received1:"
3 T( w1 g6 V, \8 |; S( q1 d9 O    print_hex(received1)
+ o& g9 L4 s/ c) {, Y    print  'received1 len is 0x%02x' %(len(received1))7 L1 @- E+ c0 }/ x& ]! K7 `; c
% I7 D0 J7 _, V
finally:
# O; f$ j7 o7 r& X    sock.close()& K6 e2 j+ r, r& c; N6 K, y

8 c. h3 @6 Z/ [' vs=raw_input('press any key to continue...')
6 Z$ M2 n1 G0 F8 m. V* R" G8 o% I8 i5 _8 ]+ A& `

. p% i" _  E2 _0 ?
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-6-3 01:49 , Processed in 0.320581 second(s), 51 queries .

回顶部