1
나는 패킷 데이터를 저장하고 싶다고 Scapy로 구축 된 DNS 패킷 스니퍼를 가지고있다.scapy 패킷 데이터를 저장하는 방법은 무엇입니까?
나는 패킷 데이터가 다른 사전이나 배열에 저장하는 것이 이상적이어야하는 사전으로 저장된다는 것을 알고 있습니다. 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)
감사합니다. 완벽하게 작동했습니다. – arcade16