使用scapy的DNS服务器

2024-06-28 19:50:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Scapy编写了一个python DNS服务器,我遇到了一个问题。 我嗅探一个DNS包(通过过滤器到a或PTR类型),然后我想发送一个相关的响应。在

我使用两台计算机,其中一台使用nslookupwww.google.com 它显示“请求超时错误”-超时为2秒。 BYW我收到了这个包裹,我发了一个!!但我猜另一台电脑没有按时收到。在

我试着把超时改为20秒,但它只是等了20秒。。然后显示了一个错误。。 我的服务器在这20秒后收到包。在

我怎样才能解决这个问题,是什么原因造成的!!在

感谢预付款:)

以下是我的一些代码(在5月份的相关部分):

def filter_dns(packet):
return DNS in packet and packet[DNS].opcode == 0 and (packet[DNSQR].qtype == 1 or packet[DNSQR].qtype == 12)



server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((MY_IP, PORT))
print "Server started successfully! Waiting for data..."

packets = sniff(count=1, lfilter=filter_dns)

def send_typeA(packet, result):
    mypacket = IP(dst=Ip_Client) / DNS() / DNSRR()
    mypacket[DNSRR].rrname = packet[DNSQR].qname
    mypacket[DNSRR].rdata = result   # result is the ip of the domain name
    mypacket[DNSRR].ttl = 100
    print mypacket.show()
    send(mypacket)

Tags: and服务器serverpacketdnsdef错误socket