大家早上好
我正在尝试用python编写一个脚本,使用scapy在Windows 11环境中执行数据包捕获。
如果我使用以下命令,脚本就会启动:
packet = scapy.sniff(iface=None, timeout=duration, filter="tcp")
但它没有记录任何内容。
如果我使用
packet = scapy.sniff(iface=if_to_sniff, timeout=duration, filter="tcp")
相反,我在打开界面时遇到错误。
这是我完整的测试脚本。
import os
import scapy.all as scapy
def sniff_traffic(filename, duration):
intrf = scapy.get_if_list()
intrf_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "documents", unique_code, "intrf.txt")
with open(intrf_path, "w") as f:
for item in intrf:
f.write(f"{item}\n")
if_to_sniff = scapy.get_if_list()[0]
writer = scapy.PcapWriter(filename)
while True:
packet = scapy.sniff(iface=if_to_sniff, timeout=duration, filter="tcp")
if packet is None:
break
writer.write(packet)
if __name__ == "__main__":
unique_code = "a425c5a1-c788-43db-ae2a-cb9be6e7cc6f"
pcap_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "documents", unique_code, "packets.pcap")
intrf_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "documents", unique_code, "intrf.txt")
duration = 5
sniff_traffic(pcap_path, duration)
有人可以给我任何建议吗?
如何在 Windows 11 上使用 Scapy 和 python
您在
iface=None
中提到的问题可能无法捕获数据包,因为它默认为第一个可用的网络接口。您应该明确指定要捕获的网络接口。您可以使用 scapy.get_if_list()
查看可用接口,然后选择合适的接口。
您可以使用
get_if_list()
来列出可用接口,但请确保根据您的要求选择正确的接口。