Я пытался создать сетевой сканер, похожий на netdiscover.Я использовал Python и модуль Scapy для этого.Я запускаю свой скрипт на Kali Linux на виртуальной коробке, и когда я сканирую свою сеть NAT, созданную Virtual Box, он показывает устройства, которые подключены, но когда я использую беспроводной адаптер для сканирования своей сети Wi-Fi, сканер не можетнайти любые устройства, что странно, потому что netdiscover находит их тонны.Однако, когда я использую функцию arping, реализованную Scapy, устройства также отображаются, но когда я запускаю свой код, он не обнаруживает никаких устройств.Почему это так?
Я использовал код, предложенный в документации Scapy, и он все еще не показывает никаких устройств.Только функция Scapy arping обнаруживает любые устройства вообще
import scapy.all as scapy
import subprocess as sub
import re
def get_IP():
output=sub.check_output("route -n",shell=True)
ips={}
for row in output.split("\n")[2:]:
found=re.findall("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",row)
device=re.findall("[a-z]{2,10}\d$",row)
for ip in found:
if ("0.0.0" not in ip and "255.255.255" not in ip):
ips[device[0]]=ip
for device,ip in ips.items():
print("Device: {}\tIP: {}".format(device,ip))
device = raw_input("Choose a device > ")
return(ips[device][:-1]+"1/24")
def scan(ip):
#My code
print("Scanning...")
arp_request=scapy.ARP(pdst=ip)
brodcast=scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
arp=brodcast/arp_request
answered=scapy.srp(arp, timeout=1,verbose=False)[0]
for element in answered:
print("IP:{}".format(element[1].psrc))
print("MAC address: {}\n".format(element[1].hwsrc))
def scan2(ip):
#Code from scapy documentation and it's also not detecting any devices
ans, unans = scapy.srp(scapy.Ether(dst="ff:ff:ff:ff:ff:ff")/scapy.ARP(pdst=ip),timeout=2)
ans.summary(lambda (s,r): r.sprintf("%Ether.src% %ARP.psrc%") )
def scan3(ip):
#This works
scapy.arping(ip)
ip = get_IP()
scan(ip)
scan2(ip)
scan3(ip)