带套接字的Scapy手动握手接受

时间:2019-04-28 11:11:05

标签: python sockets tcp scapy handshake

我已经实现了TCP握手协议,可与Internet上的某些服务器一起使用。

我尝试连接使用以下几行Python创建的本地演示服务器:

import socket
sock = socket.socket(sock.AF_INET, socket.SOCK_STREAM)
sock.bind(("localhost", 5678))
sock.listen(1)
conn, addr = sock.accept()
print(conn, addr)

用Scapy创建的SYN数据包

from random import getrandbits
ip = IP(dst="127.0.0.1")
tcp = TCP(dport=5678, sport=7890, flags="S", seq=getrandbits(16))
packet = ip / tcp
send(packet)

当我在Wireshark中检查流时,对此数据包没有响应,但是当我检查sock.connect(("localhost", 5678))的流时,我发现一切正常(SYN -> SYN/ACK -> ACK),但校验和已标记为不正确< / strong>并显示消息可能是由于“ TCP校验和卸载”引起的?

当我尝试从answer接收原始数据包时,我得到了有效的SYN数据包。

SYN数据包有什么问题?如何使用socket.accept()手动连接服务器?

0 个答案:

没有答案