[英]Scapy Send/Sniff Packet with SSLv2Record not Parsed Correctly
我有一個像這樣的小包:
###[ IP ]###
version= 4
ihl= None
tos= 0x0
len= None
id= 1
flags=
frag= 0
ttl= 64
proto= tcp
chksum= None
src= 127.0.0.1
dst= 127.0.0.1
\options\
###[ TCP ]###
sport= 50034
dport= https
seq= 0
ack= 0
dataofs= None
reserved= 0
flags= S
window= 8192
chksum= None
urgptr= 0
options= {}
###[ SSL/TLS ]###
\records\
|###[ SSLv2 Record ]###
| length= 0x591
| content_type= 5
|###[ Raw ]###
| load= '\xbf'
我send(packet)
,然后在另一個終端(在同一台機器上),我正在運行
a = sniff(filter = "port https", prn = lambda x:x.summary())
當我打印出接收到的數據包時,它看起來像這樣:
###[ Ethernet ]###
dst= ff:ff:ff:ff:ff:ff
src= 00:00:00:00:00:00
type= 0x800
###[ IP ]###
version= 4L
ihl= 5L
tos= 0x0
len= 44
id= 1
flags=
frag= 0L
ttl= 64
proto= tcp
chksum= 0x7cc9
src= 127.0.0.1
dst= 127.0.0.1
\options\
###[ TCP ]###
sport= 50034
dport= https
seq= 0
ack= 0
dataofs= 5L
reserved= 0L
flags= S
window= 8192
chksum= 0xc15e
urgptr= 0
options= []
###[ SSL/TLS ]###
\records\
###[ Raw ]###
load= '\x05\x91\x05\xbf'
主要問題是在嗅探到數據包后,沒有顯示SSLv2Record。 SSL/TLS
字段中records
列表的內容已完全關閉。 誰看過這個嗎? 如果需要添加更多詳細信息,請告訴我。
我100%確信在嗅探后要打印的數據包是正確的數據包。
我相信我正在為這種類型的數據包使用正確的發送(只是發送,而不是sendp等)。 我已經能夠發送和嗅探沒有SSLv2Record字段的其他數據包,而不會出現問題。
看來我是在錯誤地發送或接收此數據包嗎?
這實際上是scapy-ssl_tls中的一個錯誤, 已通過PR#76解決,其中SSLv2Record
層無法正確序列化該對象。 您的數據包序列化為\\x05\\x91\\x05\\xbf
而應該是\\x85\\x91\\x05\\xbf
。 區別在於,對於有效的SSLv2記錄,必須設置長度的MSB。
>>> SSL('\x05\x91\x05\xbf')
<SSL records=[] |<Raw load='\x05\x91\x05\xbf' |>>
>>> SSL('\x85\x91\x05\xbf')
<SSL records=[<SSLv2Record length=0x591 content_type=5 |<Raw load='\xbf' |>>] |>
這是檢查重新反序列化的快速測試:
錯誤:
>>> SSL(str(SSL(records=[SSLv2Record(length=0x591, content_type=5)/"\xbf"])))
<SSL records=[] |<Raw load='\x05\x91\x05\xbf' |>>
正確:
>>> SSL(str(SSL(records=[SSLv2Record(length=0x591, content_type=5)/"\xbf"])))
<SSL records=[<SSLv2Record length=0x591 content_type=5 |<Raw load='\xbf' |>>] |>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.