使用scapy和netfilterqueue进行修改

问题描述 投票:0回答:1

我正在使用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

我有点卡住......

python scapy netfilter
1个回答
2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.