Python 使用Scapy动态修改数据包?
有可能这样做吗Python 使用Scapy动态修改数据包?,python,scapy,packet-sniffers,Python,Scapy,Packet Sniffers,有可能这样做吗 from scapy.all import * def action(packet): print packet[0][1].src + "==>" + packet[0][1].dst print "Rerouting to localhost" packet[0][1].dst = '127.0.0.1' print packet[0][1].src + "==>" + packet[0][1].dst sendp(pac
from scapy.all import *
def action(packet):
print packet[0][1].src + "==>" + packet[0][1].dst
print "Rerouting to localhost"
packet[0][1].dst = '127.0.0.1'
print packet[0][1].src + "==>" + packet[0][1].dst
sendp(packet)
sniff(filter="dst host 203.105.78.163",prn=action)
类似这样,但是有没有一种方法可以将数据包发送到localhost并将发送的数据包丢弃到203.105.78.163?(不使用iptables)没有办法做到这一点,因为Scapy在不干扰主机IP堆栈的情况下嗅探数据包 您可以根据嗅探到的数据包发送另一个数据包,但不能使用Scapy“丢弃数据包” 在Linux下,我能想到的唯一解决方案是iptables+libnfqueue及其Python绑定+Scapy。但显然,如果您只想重新路由一个数据包,光是iptables就足够了,而且要好得多 在任何其他操作系统下,您都需要某种防火墙软件来将数据包传递给用户端程序(比如Linux下的libnfqueue,在这里您可以使用Scapy魔术)或篡改数据包本身 也许你可以看看IPS软件(suricata?),因为基于某些标准的篡改数据包是IPS的功能所在