4
DNS 트래픽을 디코드하고 쿼리/응답 데이터를 인쇄하려고하는데 파이썬/scapy를 사용하여 패킷을 디코딩합니다.scapy : 심볼릭/문자열 형식의 DNSQR/DNSRR 필드 값 얻기
코드 조각 :
def dns_sniff_v2(pkt):
if IP in pkt:
if pkt.haslayer(DNS):
dns = pkt.getlayer(DNS)
pkt_time = pkt.sprintf('%sent.time%')
if pkt.haslayer(DNSQR):
qr = pkt.getlayer(DNSQR) # DNS query
values = [ pkt_time, str(ip_src), str(ip_dst), str(dns.id), str(qr.qname), str(qr.qtype), str(qr.qclass) ]
print "|".join(values)
sniff(iface="eth0", filter="port 53", prn=dns_sniff_v2, store=0)
문제는 qr.qtype
또는 qr.qclass
나에게 열거의 내부 INT 표현 (1)지고 있다는 것입니다 대신 기호 문자열 값 ("A", 또는 "IN"). 응답 패킷의 DNSRR 섹션에도 동일하게 적용됩니다.
심볼 폼에서 DNSQR 또는 DNSRR 필드를 얻으려면 어떻게해야합니까?
해결책이 작동합니다. 감사합니다! –