python - 使用scapy和netfilterqueue修改

标签 python scapy netfilter

我正在使用 Python 2.7 和 scapy/netfilterqueue 运行 Debian。

我在 iptables 中添加了以下内容:

iptables -A OUTPUT -p tcp --dport 5678 -j NFQUEUE --queue-num 1

这是我获取 HTTP 包以及更改 URL 和 PORT 的代码:

#! /usr/bin/env python2.7
from scapy.all import *
from netfilterqueue import NetfilterQueue

def modify(packet):
    pkt = IP(packet.get_payload())

    if pkt.haslayer(TCP) and pkt.getlayer(TCP).dport == 5678:
        pkt.dst = 'https://my-secure-domain.com'
        pkt.dport = 443

        del pkt[IP].chksum
        del pkt[TCP].chksum
        packet.set_payload(str(pkt))
    packet.accept()

nfqueue = NetfilterQueue()
nfqueue.bind(1, modify)
try:
    print "[*] waiting for data"
    nfqueue.run()
except KeyboardInterrupt:
    pass

运行代码确实检索到了正确的包,并且 .dst.dport 似乎已更改,但我收到以下错误:

Exception socket.gaierror: gaierror(-2, 'Name or service not known') in 'netfilterqueue.global_callback' ignored

我有点卡住了...

最佳答案

只需将 pkt.dst = 'https://my-secure-domain.com' 更改为 pkt[IP].dst = 'my-secure-domain.com'(这是 IP 目标,而不是 URL)。

关于python - 使用scapy和netfilterqueue修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46645142/

相关文章:

python - 在保持时间戳的同时将 XLSX 转换为 CSV

python - 在 numpy 数组中沿轴求和

python - 如果 __new__ 在没有参数的情况下调用,为什么 __init__ 不会被调用

python - TensorFlow、Keras、Flask - 无法通过 Flask 将我的 Keras 模型作为 Web 应用程序运行

c - 应用程序请求与 Linux 内核响应的在线匹配

python - Scapy发送ipv6数据包失败

scapy - 在 Gnu-Radio 流程图中管理多个信号速度

Scapy:属性错误: 'Tuple' 对象没有属性 'x'

c - 原始套接字和 NF_INET_POST_ROUTING

使用 Netfilter 检查 Linux 内核模块中的端口号