Files
live-campus-mcs-p-2027.2/Semaine_09/Scapy_test/extractor.py
T
gauvainboiche ce1f0e513a feat: Semaine 9
2026-05-15 16:24:56 +02:00

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")