有可能吗?如果是?怎样?
这是我的剧本(不起作用):
from scapy.all import *
import socket
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
p=IP(dst="192.168.1.254")/TCP(flags="S", sport=RandShort(), dport=80)
s.connect(("192.168.1.254",80))
s.send(p)
print ("Request sent!")
except:
print ("An error occurred.")
--更新--
p = bytes(IP(dst="DESTINATIONIP")/TCP(flags="S", sport=RandShort(), dport=80))
while True:
try:
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, sockip, sockport, True)
s = socks.socksocket()
s.connect((DESTINATIONIP,DESTINATIONPORT))
s.send(p)
print ("Request Sent!")
except:
print ("An error occurred.")
可以通过http代理而不是socks发送这个syn包吗?
要使用原始套接字发送scapy数据包,必须先将数据包转换为原始字节。例如,使用scapy制作的数据包如下:
应使用
bytes(p)
转换为原始字节。 这会给你类似的东西:然后可以使用原始套接字发送它。因此,对于您的示例,您可以修改一些代码,例如:
这应该管用!
注意!!! 记住,当您使用套接字(模块)与另一台计算机通信时 套接字自动构造数据包(头等)并发送所需的内容 发送。但是当你用scapy构建一个包的时候,你从一开始就把它制作出来 您定义了它的内容及其头、层等,因此在您的示例中,当您发送数据包时 您将发送“all”作为内容负载,甚至包括数据包头(ip头、tcp头)。 您可以通过运行以下嗅探器进行测试:
好吧,当嗅探器运行时,试着运行我文章中的第一段代码(当我用原始层=tcp.payload更新数据包时),你会发现不仅如此 但整个数据包作为数据传输。所以你把邮件头发了两次。这就是为什么sockets有自己的send方法,而scapy有自己的方法。
相关问题 更多 >
编程相关推荐