封装nfqueue netlink接口的快速python库。
fnfqueue的Python项目详细描述
fnfqueue
快速netfilter nfqueue python和c接口。从
- 避免内存分配
- 批处理读取(使用
recv_mmsg
)
它也不使用libnetfilter queue的类回调接口,并提供更类似python的迭代器接口。此外,它不假设任何内容,因此不会自动对数据包设置判决(不像debian中的python nfqueue在您从回调返回后接受所有内容……)
它可以从python中处理本地主机的ping -f
(如果月亮在正确的位置,甚至iperf
)。
重点是一个类似python的接口。
损坏数据包的简短示例:
iptables -A OUTPUT <filter here> -j NFQUEUE --queue-num 1
importfnfqueuequeue=1conn=fnfqueue.Connection()try:q=conn.bind(queue)q.set_mode(0xffff,fnfqueue.COPY_PACKET)exceptPermissionError:print("Access denied; Do I have root rights or the needed capabilities?")sys.exit(-1)whileTrue:try:forpacketinconn:packet.payload=packet.payload# modify the packet herepacket.mangle()exceptfnfqueue.BufferOverflowException:print("buffer error")passconn.close()# this can be called concurrently to cancel the above for loop
帮助以python文档的形式提供。
不需要C库。建筑需要CFFI。内核和libc必须足够新才能支持nfqueue
和recvmmsg
(linux 2.6.33,glibc 2.12-更新的内核提供更好的性能)。