如何输入用户定义的值,如 IP 地址或使用 python 捕获数据包的计数

How to enter user defined values like IP Address or count for capturing packets using python

我正在尝试使用 python 构建一个 GUI 来收集 udp 数据包。

我已经成功地从我正在工作的机器上收集数据包。

现在我正在为此构建一个 GUI,我如何为用户提供输入以选择数据包计数、源和目标 IP 地址以使用 sniff 命令收集数据包?

或者除了嗅探还有其他方法吗?

我已成功构建用于提供用户输入的 GUI,但无法在 sniff 命令中过滤它们。

我使用了下面的代码,并且能够获取 udp 数据包。

def pkt_callback(pkt):
    self.S = pkt.summary()
    logger.info("Information of collected packets: %s",self.S)

    self.P = sniff(count = 10, filter="udp", prn=pkt_callback )
    logger.info("Collected packets are: %s",self.P)

预期结果:显示从 X 源 IP 到 Y 目标 IP 收集的 n 个数据包
其中 n:用户提供的计数
X: 来源IP
Y: 目标 IP

实际结果:显示来自我正在编码的机器的 C 个数据包。

C 计数在嗅探命令中给出。

您只需扩展您的过滤器即可处理此问题。查看 BPF 格式:http://biot.com/capstats/bpf.html

例如:

>>> sniff(count=10, filter="dst host 192.168.0.1 or src host 192.168.0.12 and udp")

或更一般地说:

>>> src = "192.168.0.12"
>>> dst = "192.168.0.1"
>>> c = 10
>>> sniff(count=c, filter="dst host %s and src host %s and udp" % (dst, src))