Ricostruzione dei dati bittorrent da PCAP

7

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

    
posta Captain Slow 02.05.2013 - 03:59
fonte

1 risposta

2

Durante la scrittura di dati di output binari prova invece con

  open('bomber.out', 'wb').write(data)

Non riesco a verificare se questo sarà d'aiuto ma potrebbe valere la pena provare.

    
risposta data 02.05.2013 - 10:18
fonte

Leggi altre domande sui tag