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

时间:2015-12-03 21:10:49

标签: python linux http scapy netfilter

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

然而,当我从'set-ed'数据包中轮询有效负载(在下面的代码片段中简称为'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()

我正在使用令人敬畏的fqrouter

的NetfilterQueue分叉

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

0 个答案:

没有答案