scapy.srp 不给所有客户
Posted
技术标签:
【中文标题】scapy.srp 不给所有客户【英文标题】:scapy.srp dont give all client***y.srp 不给所有客户 【发布时间】:2020-08-08 11:29:26 【问题描述】:我正在尝试使用 scapy 制作网络扫描仪。但是每次我运行以下代码时,它都会给我不同的结果。有时它会显示两个客户,有时会显示三个客户,但总客户数是 5。它没有给出完整的结果。怎么了?请帮忙..
def scan(ip):
arp_request = scapy.ARP(pdst=ip)
broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
arp_request_broadcast = broadcast/arp_request
answered , unanswered = scapy.srp(arp_request_broadcast,timeout=1)
print(answered.summary())
scan("192.168.0.1/24")
【问题讨论】:
如果我提供的答案回答了这个问题,请这样标记。 【参考方案1】:问题是你的超时时间太短了。它当前设置为 1,因此您当前不需要等待某些响应。你也可以使用 scapy 内置的 arping 来进行 arp 扫描。
您可以修改代码进行迭代,直到找到产生最多响应的超时:
import scapy.all as scapy
def scan(subnet):
i = 0
prev = 0
while True:
i+=1
ans, unans = scapy.arping(subnet, timeout=i, verbose=0)
num_responses = len(ans)
print("Got responses in seconds".format(num_responses, i))
if num_responses > prev:
prev = num_responses
else:
break
print("You should set your timeout to seconds".format(i-1))
scan("192.168.0.0/24")
运行这个,我们看到 4 秒对于我的 LAN 来说是一个很好的超时时间(即你的可能不同):
$ sudo python3 arping.py
Got 3 responses in 1 seconds
Got 6 responses in 2 seconds
Got 18 responses in 3 seconds
Got 19 responses in 4 seconds
Got 18 responses in 5 seconds
You should set your timeout to 4 seconds
【讨论】:
以上是关于scapy.srp 不给所有客户的主要内容,如果未能解决你的问题,请参考以下文章
用http.get()简单实现网络验证防止客户不给尾款_电脑计算机编程入门教程自学
如何使用 jquery 检查多个复选框而不给每个复选框一个 id?