Reconstruyendo los datos de bittorrent de PCAP

7

Estoy haciendo una bandera CTF para mi proyecto escolar con una bandera PCAP basada en esta redacción de CTF: eindbazen.net - Plaid CTF 2012 - Torrent

Configuro un archivo torrent local que contiene un .mp3 (el audio es la clave de mi marca) que se comparte entre dos computadoras portátiles. Seguí exactamente los mismos pasos que se encuentran en el artículo anterior usando Tshark y un script de Python, y logré seguir el mismo procedimiento.

Sin embargo, la salida final de .mp3 después de la reconstrucción se hizo 1KB más grande (la mayoría de los valores son diferentes de los originales cuando se ven en WinHex), y el audio se mezcló. También traté de usar un archivo .zip como mi archivo torrent y, aunque 7zip reconoce la carpeta y muestra correctamente los archivos originales, la carpeta .zip también aumentó 35KB. Al intentar extraer los archivos en el interior, 7zip se queja de "an attempt was made to move the file pointer" y / o "unsupported compression method for xxx.mp3"

Sospecho que la secuencia de comandos de Python puede ser responsable de hacer que los valores hexadecimales cambien y "corromper" los archivos al reconstruirlos desde el PCAP. Sin embargo, soy un novato total en Python, ya que mi escuela cubre solo los conceptos básicos de las secuencias de comandos de Python y no sé cómo funciona la lógica de secuencias de comandos en la redacción de CTF.

A continuación se muestra el script del artículo que utilicé:

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)

Apreciaría si alguien pudiera guiarme / explicarme lo que me estoy perdiendo en la reconstrucción correcta de los datos de Bittorrent desde el PCAP (usando Windows).

    
pregunta Captain Slow 02.05.2013 - 03:59
fuente

1 respuesta

2

Al escribir datos de salida binarios, intente usar

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

No puedo verificar si esto ayudará, pero podría valer la pena intentarlo.

    
respondido por el Christopher Käck 02.05.2013 - 10:18
fuente

Lea otras preguntas en las etiquetas