我正在尝试创建包嗅探器,它可以修改一些包(使用Netfilter Queue和Scapy)。在
首先,我的脚本添加了iptable规则iptables -t raw -A PREROUTING -j NFQUEUE --queue-num 1
。在
其次,我使用自定义处理程序创建队列
import netfilterqueue
from scapy.all import *
import socket
def handler(pkt):
hexdump(pkt.get_payload())
pkt.accept()
nfqueue = netfilterqueue.NetfilterQueue()
nfqueue.bind(1, handler)
s = socket.fromfd(nfqueue.get_fd(), socket.AF_PACKET, socket.SOCK_RAW)
try:
nfqueue.run_socket(s)
except KeyboardInterrupt:
pass
s.close()
nfqueue.unbind()
但我能从pkt.get_payload()
得到的只有IP帧(没有以太网帧)。在
我很困惑,因为scapy的sniff()
函数可以很容易地捕获以太网数据包。在
例如,sniff(prn=lambda pkt:pkt.show())
可以返回
是否可以使用nfqueue捕捉(和修改)例如源MAC地址?我试过用不同的插座类型,但都没用。在
目前没有回答
相关问题 更多 >
编程相关推荐