Write-up: Credit and Debit (PlaidCTF 2012)

Write-up: Credit and Debit (PlaidCTF 2012)

Para este reto entregaron el archivo llamado credit, el cual al ser reproducido solo se escucha un sonido parecido al de un scratch. Pasamos entonces a abrir el archivo de audio con Audacity y lo que se aprecia es una pista muy pequeña de tipo mono (Audio de un solo canal.)

Analizando lo que se ve, se encuentra un patrón que se repite, es decir la onda toma un valor según se le interprete, en un rango de una oscilación o periodo. Lo primero que se hace es la interpretación de forma binaria ya que los valores que sobresalen son sólo dos:

Se procede a decodificar la cadena a binario:

No se muestra nada con un formato lógico para una respuesta (los intentos no solo fueron de 8 caracteres sino también se intento de 7 y 6 e invirtiendo las cadenas sin encontrar nada claro o con sentido).

Intento de respuesta (se me fue un '0' en la última partexD)
Entonces se procede a buscar en Google «decode signal data credit and debit cards» de donde salieron varias páginas con información que orientaba hacia una posible solución o respuesta, de las cuales era mas clara la siguiente web, que contenía la siguiente tabla:

--Data Bits-- Parity b1 b2 b3 b4 b5 Character Function
 0 0 0 0 1 0 (0H) Data
 1 0 0 0 0 1 (1H) "
 0 1 0 0 0 2 (2H) "
 1 1 0 0 1 3 (3H) "
 0 0 1 0 0 4 (4H) "
 1 0 1 0 1 5 (5H) "
 0 1 1 0 1 6 (6H) "
 1 1 1 0 0 7 (7H) "
 0 0 0 1 0 8 (8H) "
 1 0 0 1 1 9 (9H) "
 0 1 0 1 1 : (AH) Control
 1 1 0 1 0 ; (BH) Start Sentinel
 0 0 1 1 1 < (CH) Control
 1 0 1 1 0 = (DH) Field Separator
 0 1 1 1 0 > (EH) Control
 1 1 1 1 1 ? (FH) End Sentinel
 ***** 16 Character 5-bit Set *****
 10 Numeric Data Characters
 3 Framing/Field Characters
 3 Control Characters

Esta tabla y con el resultado «01101011001100001100111001111001000010101111001111101000000000…» el cual se limpia y divide como se indica dando la siguiente cadena:
11010 11001 10000 11001 11001 11100 10000 10101 11100 11111

Ahora solo es reemplazar cada grupo de caracteres por los de la tabla obteniendo:

;31337157?

Resultado que se asemeja a una respuesta clara (además que todo quedo perfecto xD), sabiendo que el primer y ultimo carácter solo son los que delimitan el principio y el fin se descarta lo demás «010000000000000000…» porque está después del carácter «End Sentinel». Ahora lo que se ingresa según esto seria 31337157 que da correct key. en la siguiente imagen se ve el procedimiento final:

Final

Me gustan los wargames, Programar en PHP con mysql y sql server, Trabajar en : Electricidad, Electronica, Informatica, Programador de Pic's..

Deja un comentario

Your email address will not be published. Required fields are marked *

You may use these <abbr title="HyperText Markup Language">HTML</abbr> tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>