So I passed parsing compressed DNS without actually implementing it. I tried many ways to send compressed DNS packets to my server. But nothing seems to work. My best try was this script.
from scapy.all import *
from scapy.layers.dns import DNS, DNSQR
dns_server = '127.0.0.1'
port = 2053
dns_questions = DNSQR(qname='google.com', qtype='A') / DNSQR(qname='google.com', qtype='MX')
compressed_packet = DNS(rd=1, qdcount=3, qd=dns_questions).compress()
stack = (
IP(dst=dns_server) /
UDP(sport=RandShort(), dport=port) /
compressed_packet
)
response = sr1(stack)
response.show()
Please help if anyone were able to send compressed packet for testing purpose.
Also, scapy is not parsing my response as DNS packet