在windows中使用python scapy捕获网络流量

问题描述 投票:0回答:1

大家早上好

我正在尝试用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

python scapy packet-sniffers sniffing
1个回答
0
投票

您在

iface=None
中提到的问题可能无法捕获数据包,因为它默认为第一个可用的网络接口。您应该明确指定要捕获的网络接口。您可以使用
scapy.get_if_list()
查看可用接口,然后选择合适的接口。

您可以使用

get_if_list()
来列出可用接口,但请确保根据您的要求选择正确的接口。

© www.soinside.com 2019 - 2024. All rights reserved.