Sto facendo un flag CTF per il mio progetto scolastico con un flag PCAP basato su questo articolo di CTF: eindbazen.net - Plaid CTF 2012 - Torrent
Ho impostato un file torrent locale contenente un file .mp3 (l'audio è la chiave della mia bandiera) che è condiviso tra due laptop. Ho seguito esattamente gli stessi passaggi trovati nel write-up sopra usando Tshark e uno script Python, e sono riuscito a seguire la stessa procedura.
Tuttavia, l'output finale di .mp3 dopo la ricostruzione è diventato più grande di 1 KB (la maggior parte dei valori è diverso dall'originale se visualizzato in WinHex) e l'audio è diventato confuso. Ho anche provato a utilizzare un file .zip come file torrent e sebbene 7zip riconosca la cartella e visualizzi correttamente i file originali all'interno, la cartella .zip ha anche ingrandito circa 35 KB. Quando tenti di estrarre i file all'interno, 7zip si lamenta di "an attempt was made to move the file pointer"
e / o "unsupported compression method for xxx.mp3"
Sospetto che lo script Python possa essere responsabile della modifica dei valori esadecimali e "corrompere" i file dopo averlo ricostruito dal PCAP. Tuttavia, sono un principiante di Python in quanto la mia scuola copre solo le basi dello scripting Python e non so come funzioni la logica di script nella scrittura CTF.
Di seguito è riportato lo script del write-up che ho utilizzato:
pieces = {}
for line in open('bomb'):
line = line.strip()
idx, data = line.split('\t')
data = data.replace(':','').decode('hex')
try:
pieces[idx] += data
except KeyError:
pieces[idx] = data
pieces = sorted([(int(p[0], 16), p[1]) for p in pieces.items()])
data = ''.join([p[1] for p in pieces])
open('bomber.out', 'w').write(data)
Apprezzerei se qualcuno potesse guidarmi / spiegarmi cosa mi manca nel ricostruire correttamente i dati bittorrent dal PCAP (usando Windows).