c1b3rwall / module2 Goto Github PK
View Code? Open in Web Editor NEWmodule 2 Exercises
module 2 Exercises
data: "8D34508F201432CF060000303030", 1090 MHz, SDR signal capture, module2{uppercase (Reg.ID + Callsign)} (flag to catch)
1st observation: it's a (kind off) hex string -> https://cryptii.com/pipes/hex-decoder -> [FAILED] = "Binary content can't be interpreted as text. Try switching to the bytes view. Invalid UTF-8 encoded text: unexpected continuation byte at 0x0" -> Q: Is it binary then? [OK]
search: [carrot2] "1090 MHz protocols" -> "Automatic dependent surveillance–broadcast (ADS–B)" -> https://en.wikipedia.org/wiki/Automatic_dependent_surveillance_%E2%80%93_broadcast (skimmed) -> search (Ctrl-F) "callsign" -> found "https://en.wikipedia.org/wiki/File:Adscapture.png" [An example of reception of ADS-B signals on a software-defined radio dongle. These signals are not encrypted. Very inexpensive hardware and free software can be used to display the speed,course, altitude, callsign and identification of an aircraft equipped with an ADS-B transponder.] -> A "mode S" capture is shown ... [OK]
search [carrot2] "how to interpret an ADS-B sequence" -> https://en.wikipedia.org/wiki/Aviation_transponder_interrogation_modes#Mode_S -> "Upon interrogation, Mode S transponders transmit information about the aircraft to the SSR system, to TCAS receivers on board aircraft and to the ADS-B SSR system. This information includes the call sign of the aircraft and/or the aircraft's permanent ICAO 24-bit address (which is represented for human interface purposes as six hexadecimal characters.) One of the hidden features of Mode S transponders is that they are backwards compatible; an aircraft equipped with a Mode S transponder can still be used to send replies to Mode A or C interrogations. This feature can be activated by a specific type of interrogation sequence called inter-mode." -> https://en.wikipedia.org/wiki/Aviation_transponder_interrogation_modes#ICAO_24-bit_address -> [CUL-DE-SAC]
search [carrot2] "ads-B mode S data" -> https://mode-s.org/decode/adsb/introduction.html [OK]
search [carrot2] "ads-B mode S data viewer python" -> https://pypi.org/project/pyModeS/2.1/ [OK] (?) (Let's see ...)
hint[PyModeS, flag format] -> CallSign with adsb.callsign [OK] and Reg.ID?? Is it ICAO or DF/CA?? (https://mode-s.org/decode/adsb/introduction.html) [DOUBT]
hint[https://mode-s.org/decode/adsb/introduction.html] -> "An unique ICAO address is assigned to each Mode-S transponder of an aircraft. Thus this is a unique identifier for each aircraft."
(de)code [pyModeS]
$ python3 -m venv ads-b
$ ls
ads-b
$ source ads-b/bin/activate
(ads-b) $ pip install pyModeS
Collecting pyModeS
Downloading pyModeS-2.8.tar.gz (165 kB)
|████████████████████████████████| 165 kB 2.3 MB/s
Collecting numpy
Downloading numpy-1.19.1-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
|████████████████████████████████| 14.5 MB 12.1 MB/s
Collecting pyrtlsdr
Downloading pyrtlsdr-0.2.92-py2.py3-none-any.whl (25 kB)
Collecting pyzmq
Downloading pyzmq-19.0.2-cp38-cp38-manylinux1_x86_64.whl (1.1 MB)
|████████████████████████████████| 1.1 MB 14.5 MB/s
[...]
Installing collected packages: numpy, pyrtlsdr, pyzmq, pyModeS
Running setup.py install for pyModeS ... done
Successfully installed numpy-1.19.1 pyModeS-2.8 pyrtlsdr-0.2.92 pyzmq-19.0.2
(ads-b) $ vim.tiny mod2flag.py
................................................................................
from pyModeS import adsb
ctf = "8D34508F201432CF060000303030"
flag = "{uppercase (Reg.ID + Callsign)}"
print('- data: {}\n- flag: {}'.format(ctf, flag))
print('module2({} {})'
.format(adsb.icao(ctf),
adsb.callsign(ctf)
)
)
...........................................................................
(ads-b) $ python mod2flag.py
Para poder identificar los tonos DTMF descarge una aplicación de la playstore y utilize el programa audacity.
Ingrese el archivo y dividi los audios, por partes reproduci múltiples veces una sola parte del audio de que contenia los tonos
Son 13 en total, escuchenlos uno por uno y que la aplicacion del celular los pueda identificar, los anotan secuencialmente y los ingresan a la respuesta
LISTO!!!!!!
Gracias a Roberto Perez que ha realizado este write-up, solo lo estoy compartiendo con todos vosotros. Todo el merito y agradecimiento es para El.
Documento original: https://mega.nz/file/NEFQiaoI#Jmr3ooBqiaHZJYtJLLoLLSn3hQ0yWkg5SeZHFvTGVuc
SOLUCION:
Se nos da una señal en formato raw y la abrimos en Audacity para ver de que se trata (importar datos en bruto) dejamos los parametros por defecto.
En la ventana de abajo podemos ver la señal (onda+espectro), es evidente (si aun no lo notamos mas adelante si) que la señal inferior es la portadora (data) sin embargo por los momentos no la descartamos.
Si hacemos un muestreo de los datos y lo exportamos podemos ver en el Inspectrum una alternativa para visualizar (ajustando los parametros) la amplitud, frecuencia y fase de la señal, entendiendo que la señal debemos demodularla para extraer la data descartamos este camino.
Conceptos básicos:
Para que una señal viaje a través de ondas de radio, primero debe modularse, lo que significa trasponerla a un ancho de banda de frecuencia y formato adecuados para el medio de transmisión. Las técnicas de modulación están estrechamente relacionadas con las telecomunicaciones y la teoría de la información, y es posible jugar con la modulación dentro de los límites de una computadora.
Passband
Una banda de paso es el rango de frecuencias o longitudes de onda que pueden pasar a través de un filtro. Por ejemplo, un receptor de radio contiene un filtro de paso de banda para seleccionar la frecuencia de la señal de radio deseada entre todas las ondas de radio captadas por su antena. La banda de paso de un receptor es el rango de frecuencias que puede recibir. Una señal con filtro de paso de banda (es decir, una señal con energía solo en una banda de paso) se conoce como señal de paso de banda, en contraste con una señal de banda base.
En telecomunicaciones, óptica y acústica, una banda de paso (una señal filtrada de paso de banda) es la parte del espectro de frecuencia que se transmite (con una pérdida relativa mínima o una ganancia relativa máxima) por algún dispositivo de filtrado. En otras palabras, es una banda de frecuencias que pasa por algún filtro o un conjunto de filtros. La figura adjunta muestra un esquema de una forma de onda que se filtra mediante un filtro de paso de banda que consta de un filtro de paso alto y uno de paso bajo. Los receptores de radio generalmente incluyen un filtro de paso de banda sintonizable con una banda de paso que es lo suficientemente amplia para acomodar el ancho de banda de la señal de radio transmitida por una sola estación.Una señal con filtro de paso de banda (es decir, una señal con energía solo en una banda de paso) se conoce como señal de paso de banda, en contraste con una señal de banda base.
Hay dos categorías principales de métodos de transmisión de comunicaciones digitales: banda base y banda de paso. En la transmisión de banda base, se utiliza codificación de línea, lo que da como resultado un tren de pulsos o una señal modulada en amplitud de pulso (PAM).En la transmisión de banda de paso, se emplean métodos de modulación digital de modo que sólo se utilice un rango de frecuencia limitado en algún canal filtrado de banda de paso. La transmisión de banda de paso se utiliza típicamente en comunicaciones inalámbricas y en canales filtrados de paso de banda como las líneas POTS. También permite la multiplexación por división de frecuencia. El flujo de bits digital se convierte primero en una señal de banda base equivalente y luego en una señal de RF. En el lado del receptor se utiliza un demodulador para detectar la señal e invertir el proceso de modulación. Un equipo combinado de modulación y demodulación se denomina módem.
Señal sin restricciones (diagrama superior). Filtro de paso de banda aplicado a la señal Higth pass filter- Low pass filter (diagrama del medio). Señal filtrada (diagrama inferior). A(f) es la función de frecuencia de la señal.
(wikipedia.org/wiki/Passband)
Evidentemente la señal necesita ser tratada para interpretarla, entendiendo estos conceptos regresamos a Audacity justamente como habiamos importado el raw. Si hacemos un acercamiento podemos ver que la señal superior no sufre ninguna alteración en el transcurso de la misma (tiene un patrón definido y constante) a diferencia de la inferior (que podria tener la codificación) separamos el audio (mono) y descartamos la superior.
La codificación de mensajes se basa en la codificación por desplazamiento de frecuencia, que es una técnica de modulación en la que una señal digital se convierte en analógica reemplazando el encendido y apagado o el uno lógico y el cero con dos frecuencias portadoras diferentes (por eso luego vamos duplicar esta señal para separar cada una en dos frecuencias distintas), en este caso la mayor de las dos frecuencias representa un 1 y la frecuencia más baja se usa para 0.
La modulación AM exige que la señal esté restringida a un ancho de banda, por lo que la señal modulada también "encajará" en una banda de frecuencia predeterminada. Entonces, necesitamos aplicar un filtro de paso (Passband) y definimos el corte a 6408 Hz.
Duplicamos la señal y aplicamos el Passband, Filtro de paso Alto en la señal superior y Filtro de paso bajo (equivalente a un condensador y una resistencia) en la inferior con 6408 Hz y 48db.
En este punto básicamente tenemos dos señales moduladas en amplitud donde la de arriba son los datos que queremos y el de abajo el inverso de eso (con la modulación de amplitud, la envolvente de la onda portadora es la señal de entrada).
Ahora con el indicador de Nyquist simplemente tomamos el valor absoluto del sonido usando este comando (s-abs sound) en cada una de las señales (es equivalente a ejecutar la señal a través de un puente rectificador).
Ya tenemos la señal demodulada, seguidamente aplicamos un filtro paso bajo de nuevo pero a las dos señales para obtener la envolvente (en los mismos parametros) y amplificamos (por separado cada señal, dejamos los valores por defectos).
Luego invertirmos la señal inferior (efectos>invertir), seleccionando ambas señales las mezclamos.
Finalmente obtenemos la señal filtrada.
Decodificamos
01101101 01101111 01100100 01110101 01101100 01100101 00110010 01111011
01101000 01100101 01110010 01100101 01011111 01101001 01110011 01011111
01110100 01101000 01100101 01011111 01010011 01000100 01010010 01011111
01100110 01101100 00110100 01100111 01111101
Nota: El procedimiento expuesto es la demodulación manual, hay otra alternativa para ahorranos todo este proceso con SDR Nyquist effect plugins para Audacity.
Un simple complemento de efectos Nyquist para convertir señales I / Q (en fase y en cuadratura) a Amplitud / Fase (señales de radio de decodificación AM). Analizar y decodificar señales On-Off-Keying (OOK) / Amplitude-Shift-Keying (ASK) grabadas por ej. Software RTL-SDR con Audacity
Roberto Perez
Lo primero que hice fue buscar en Google "decoding 1090Mhz". Pinché en el primer resultado, decoding 1090 Mhz riddle y leyendo esa guía, en el enlace basics, encontré una cadena de texto muy similar a la del ejercicio, donde explican su estructura y cómo decodificarla.
Siguiendo los pasos de esa página acabé en https://junzis.com/adb/ una base de datos de aeronaves, introduje ahi la dirección ICAO, y saque la primera parte de la respuesta, el Reg.ID de los datos devueltos por la consulta.
Aunque intenté decodificar el callsign manualmente siguiendo las instrucciones de la siguiente página, "Aircraft identification" he de reconocer que no fuí capaz y opté por usar la librería pyModeS, pyModeS, comentada al final de esa página para obtener la segunda parte de la respuesta, el callsign.
Parece un código de radioficionado o de un repetidor por los pitidos del final, detectamos un CW, así pues es un código de skimmer ... y con el Audacity podemos escuchar y resamplear a su frecuencia correcta 11025Hz, y con la ayuda del virtual cable pasarle la entrada a la salida del CW Skimmer, y sacar la flag en texto. Con el indicativo que te dan es lo que te lleva a deducirlo.
Por cierto el indicativo es muy monárquico... 😂😂😂 👑
Suerte 😜
Señal SSTV
No se puede reproducir directamente el archivo .wav con el programa MMSSTV
Es necesario recodificarlo a 11025Mhz con el audacity
Menu Tracks -> Resample (11025MHz) y exportarlo como formato WAV y extension .mmv
Entonces ya se puede abrir con el MMSSTV
lo primero es escuchar el archivo para ver que se trata de un codigo morse.
Después o bien se decodifica a mano o en una web qu enos permita ahcerlo tipo https://morsecode.world/international/decoder/audio-decoder-adaptive.html
Tras eso tenemos una serie de letras y números que tendremos que analizar.
En cuanto nos demos cuenta de que se trata de un código cesar ya tendremos la flag
Por Mav3r1ck2010 saludos
Utilizando el programa rtl_433 se puede realizar el análisis fácilmente
rtl_433 -a 4 -r file10.cf32
Nos dará todo el dump y obtendremos el id necesario para el flag
Buscando como decodificar señales FM, probé con audacity para ver en qué frecuencias se movía el payload (vista: espectrograma).
También encontré este tutorial en el que comentan una herramienta que funciona perfectamente:
https://www.rtl-sdr.com/signalseverywhere-decoding-digital-data-via-audacity-mulitmon-ng-and-minimodem/
En el último vídeo de esteganografía del módulo 2 se muestra un ejemplo de decodificación de una señal SSTV, que suena bastante similar a la señal del fichero 9 de los ejercicios.
Tras ello, procedo a usar el programa RX-SSTV (para sistemas Windows) para intentar decodificarla. Para poder introducir audio a decodificar desde un fichero al propio programa he tenido que usar la herramienta Virtual Audio Cable para redireccionar la salida del reproductor de audio a la entrada de RX-SSTV. (Como se dice en el vídeo de esteganografía también se puede usar la herramienta qsstv para sistemas Linux)
Por último, obtenemos una imagen clara aunque recortada (quizá con alguna modificación de la configuración del programa se pueda ver mejor) en la que podemos ver claramente gran parte de la flag. Los dos últimos caracteres de la misma se pueden intuir sabiendo que la señal es SSTV. No olvidar también añadir la } para terminar la flag.
Uso rtl_433 windows binaries, que podéis bajar aquí:
https://bintray.com/chzu/dist/rtl_433/20.02-124-g9c11752#files
Lo primero es analizar en frío el audio
rtl_433 -a 4 -r file4.raw
no sale nada (en otros casos sí), pero podemos probar a una decodificación ciega
rtl_433 -a 4 -r file4.raw -A
Hay que fijarse en las recomendaciones que te da en la salida:
Use a flex decoder with -X 'n=name,m=FSK_PCM,s=620,l=620,r=634880'
Simplemente añadirla al comando, cambiando comillas simples por dobles
rtl_433 -a 4 -r file4.raw -A -X "n=name,m=FSK_PCM,s=620,l=620,r=634880"
En la salida tenemos ya la solución en hex
Detected FSK package 2020-08-08 12:07:12.289678
{"time" : "2020-08-08 12:07:12.289678", "model" : "name", "count" : 1, "num_rows" : 1, "rows" : [{"len" : 224, "data" : "6d6f64756c65327b66736b5f656e636f6465645f4d3353533447337d"}], "codes" : ["{224}6d6f64756c65327b66736b5f656e636f6465645f4d3353533447337d"], "mod" : "FSK", "freq1" : 0.019, "freq2" : -0.013, "rssi" : -3.242, "snr" : 31.121, "noise" : -34.363}
data en ASCII
Por supuesto podemos modificar las opciones si la recomendación falla
Ejercicios Modulo 2 - Pregunta 3
El fichero de audio file3.mp3, contiene un mensaje de audio con una voz, en la que se escucha además una serie de "pitidos" durante la misma. La grabación está en dos pistas, la voz en la pista derecha y los pitidos en la pista izquierda. Los pitidos son de marcación por tonos, DTMF. Aislando esa pista, tendríamos esos tonos DTMF, que se pueden convertir a la secuencia numérica.
Yo he utilizado audacity (programa GNU multiplataforma) para aislar y grabar esa pista en formato WAV, y he utilizado un conversor online de audios que contengan DTMF a texto (secuencia numérica con intervalos entre tonos), y de ahí saque la flag.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.