python arp扫描_Python3利用scapy局域网实现自动多线程arp扫描功能
时间: 2023-06-29 14:14:48 浏览: 198
好的,你的问题是关于Python3利用Scapy局域网实现自动多线程ARP扫描功能。
首先,你需要安装Scapy库,可以使用以下命令:
pip install scapy
然后,你可以使用以下Python代码实现ARP扫描功能:
from scapy.all import *
from threading import Thread
def arp_scan(ip):
arp = ARP(pdst=ip)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp
result = srp(packet, timeout=3, verbose=0)[0]
if result:
return {'IP': result[0][1].psrc, 'MAC': result[0][1].hwsrc}
else:
return {'IP': ip, 'MAC': 'N/A'}
def scan_network(target_ip, threads):
ips = [target_ip + str(i) for i in range(1, 255)]
print("Scanning in progress...")
scan_results = []
for ip in ips:
t = Thread(target=lambda result_list: result_list.append(arp_scan(ip)), args=(scan_results,))
t.start()
if threading.activeCount() > threads:
t.join()
print("Scan complete.")
return scan_results
if __name__ == '__main__':
target_ip = '192.168.1.'
threads = 50
results = scan_network(target_ip, threads)
for result in results:
print(result['IP'], result['MAC'])
在这个示例中,我们定义了两个函数,arp_scan()和scan_network()。arp_scan()函数用于扫描单个IP地址,并返回IP地址和MAC地址。scan_network()函数用于扫描整个网络,并返回所有扫描结果。
我们还使用了Python的多线程功能来加快扫描速度,并限制了线程数以避免过度消耗系统资源。
最后,我们使用主函数来设置目标IP地址和线程数,然后调用scan_network()函数来执行扫描,并打印扫描结果。
相关推荐



















