如何使用Scapy计算捕获的数据包大小

时间:2019-08-06 10:16:06

标签: python scapy

最近,我开始使用Scapy进行编码。基于以下示例:

Scapy Sniffing with Custom Actions

我捕获了多播UDP数据报,但是除了每秒捕获的数据包数量之外,我还想存储每秒捕获的数据包的大小(以字节为单位)(将结果乘以8,然后有比特率)。 问题是data._id似乎是未定义的,但是我在capturedPacketsSize之前定义了它。

我试图在不同的地方定义def custom_action(),例如在capturedPacketsSize循环中嗅探之前。结果相同。

while 1

1 个答案:

答案 0 :(得分:0)

使用global关键字表示函数内部的变量名称-

def custom_action(packet):
    global capturedPacketsSize
    global packet_counts
    # Create tuple of Src/Dst in sorted order
    capturedPacketsSize += len(packet)     #here occurs error
    key = tuple(sorted([packet[0][1].src, packet[0][1].dst]))
    packet_counts.update([key])

您可以了解有关此关键字here

的更多信息