Python Scapy和nfqueue更改传出的GET请求,设置有效负载不影响有效负载

2024-06-28 18:58:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是nfqueue新手,正在尝试使用它更改包的有效负载。在

但是,当我从'seted'包(在下面的片段中简单地命名为'packet')轮询有效负载时,我得到了更改之前包的原始负载。 即使当我读到scapkt[TCP].payload时,它的有效负载是正确的。 我哪里出错了?(change_image是回调)

def change_image(packet):

    scapkt = IP(packet.get_payload())

    #is a TCP packet
    if scapkt.proto == 6:

        data = str(scapkt[TCP].payload)

        getImage = re.search('GET [a-zA-Z0-9/]{1,}\.(jpg|JPG|jpeg|JPEG|png|PNG) HTTP/1.1\r\nHost: [a-zA-Z0-9\.]{1,}', data)
        if getImage != None:

            original_len = len(scapkt[TCP].payload)

            data = data.replace(getImage.group(), 'GET ' + image + ' HTTP/1.1\r\nHost: ' + host)

            scapkt[TCP].payload = data

            postMod_len = len(scapkt[TCP].payload)
            scapkt[IP].len = original_len + (postMod_len - original_len)

            del scapkt[IP].chksum
            del scapkt[TCP].chksum

            packet.set_payload(str(scapkt))

            print packet.get_payload()

    packet.accept()

我使用的NetfilterQueue fork由awesomefqrouter

仅供参考:我知道这段代码可能无法按预期工作,但我正在学习如何使用nfqueue,并试图编写一个简单的PoC


Tags: imageipdatagetlenifpacketchange