36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
from scapy.all import TCP
|
|
|
|
class Extracteur:
|
|
def __init__(self, fichier_pcap):
|
|
pcap = rdpcap(fichier_pcap)
|
|
self.sessions = pcap.sessions()
|
|
self.responses = []
|
|
|
|
def trouver_reponses(self):
|
|
for session in self.sessions:
|
|
payload = b""
|
|
for paquet in self.sessions[session]:
|
|
try:
|
|
if paquet[TCP].dport == 80 or paquet[TCP].sport == 80:
|
|
payload += bytes(paquet[TCP].payload)
|
|
except IndexError:
|
|
pass
|
|
|
|
if payload:
|
|
header = extract_header(payload)
|
|
if header is None:
|
|
continue
|
|
self.responses.append(Response(header=header, payload=payload))
|
|
|
|
def ecrire_images(self):
|
|
os.makedirs(DOSSIER_SORTIE, exist_ok=True)
|
|
compteur = 0
|
|
for response in self.responses:
|
|
contenu, content_type = extract_content(response)
|
|
if contenu and content_type:
|
|
nom = os.path.join(DOSSIER_SORTIE, f"image_{compteur}.{content_type}")
|
|
with open(nom, "wb") as f:
|
|
f.write(contenu)
|
|
print(f" {nom}")
|
|
compteur += 1
|
|
print(f"\n{compteur} images extraites") |