Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 虚假DNS响应_Python_Sockets_Dns_Response_Scapy - Fatal编程技术网

Python 虚假DNS响应

Python 虚假DNS响应,python,sockets,dns,response,scapy,Python,Sockets,Dns,Response,Scapy,我想用scapy创建一个假的dns响应,但它不起作用。。。当我嗅探Wireshark中的数据包时,它显示数据包是正确的,但Windows只接受真实的响应数据包,尽管。。。 有人能告诉我怎么修吗? 谢谢 你只是嗅探数据包,如果你想操纵数据包,你应该把它们发送到一个函数,然后把它们转发到目的地。在嗅探中使用prn属性: packets = sniff(filter="port 53" , prn=func , count=1) def func(packet): if packet.has

我想用scapy创建一个假的dns响应,但它不起作用。。。当我嗅探Wireshark中的数据包时,它显示数据包是正确的,但Windows只接受真实的响应数据包,尽管。。。 有人能告诉我怎么修吗? 谢谢


你只是嗅探数据包,如果你想操纵数据包,你应该把它们发送到一个函数,然后把它们转发到目的地。在嗅探中使用prn属性:

packets = sniff(filter="port 53" , prn=func , count=1) 
def func(packet):
    if packet.haslayer(UDP) and packet.haslayer(DNS):
         manipulate your DNS packet here then forward it

“在此处操作您的DNS数据包,然后转发它”正是代码在
中所做的,而True则是
sendp
正是发送数据包的函数……当您嗅探数据包并将其分配给变量时,这意味着您获取数据包的信息并将其发送到目的地,之后您将发送一个伪数据包,但使用prn并将数据包发送到一个函数—您获取原始数据并操纵原始数据。@AliKargar您最后的评论是错误的:情况非常相似,除了使用
prn
使用相同的套接字实例,并且性能有所提高。也许真正的数据包比您的更快?您是否比较了这两个答复并发现了差异?
packets = sniff(filter="port 53" , prn=func , count=1) 
def func(packet):
    if packet.haslayer(UDP) and packet.haslayer(DNS):
         manipulate your DNS packet here then forward it