gpt4 book ai didi

python - 如何存储scapy包数据?

转载 作者:行者123 更新时间:2023-11-28 17:20:15 25 4
gpt4 key购买 nike

我有一个用 Scapy 构建的 DNS 数据包嗅探器,我想从中存储数据包数据。

据我了解,数据包数据存储为字典,这应该使其非常适合存储在另一个字典或数组中。我可以使用 pkt[0].summary 看到数据是正确的,并且我收到了数据包,但我不知道如何正确存储它。

由于我是 Python/Scapy 的新手,我的问题是如何在数据包通过时将此数据包数据存储/附加到字典或数组。

代码如下:

#!/usr/bin/env python

from scapy.all import *
from datetime import datetime
import time
import datetime
import sys

# Select interface and ports of interest
interface = 'ens33'
bpf = 'udp and port 53'

# SELECT/FILTER MSGS
def select_DNS(pkt):
pkt_time = pkt.sprintf('%sent.time%')


# SELECT/FILTER DNS MSGS
try:

dict = []

# queries
if DNSQR in pkt and pkt.dport == 53:
domain = pkt.getlayer(DNS).qd.qname.decode() # .decode() gets rid of the b''
print('Q - Time: ' + pkt_time + ' , source IP: ' + pkt[IP].src + ' , domain: ' + domain)

# responses
elif DNSRR in pkt and pkt.sport == 53:
domain = pkt.getlayer(DNS).qd.qname.decode()
print('R - Time: ' + pkt_time + ' , source IP: ' + pkt[IP].src + ' , domain: ' + domain)

except:
pass

# START SNIFFER
sniff(iface=interface, filter=bpf, store=0, prn=select_DNS)

最佳答案

我相当确定数据包结构不是字典,即使它提供了一些类似字典的功能(覆盖切片符号)。

如果您想将数据包存储在列表(数组)中,只需将它们附加到您的位置即可。

cache = []
def select_DNS(pkt):
cache.append(pkt)

如果您想将数据包存储到磁盘,我建议使用 wrpacp function 将它们写出以“pcap”格式保存它们。

wrpcap("temp.cap",pkts)

关于python - 如何存储scapy包数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41948639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com