我是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
目前没有回答
相关问题 更多 >
编程相关推荐