Lo confieso. Siempre he intentado ampliar mis conocimientos y dedicarme a la observacion y la investigacion. Pero a pesar de mis esfuerzos hay areas en las que estoy absolutamente pez.
Como la gente ademas conoce mi inquietud al respecto, aprovechando el lanzamiento del blog un amigo me propuso adentrarme en uno de esos oceanos inexplorados para mi y que ademas fuera contando mis aventuras aqui. De este modo, y para no postergarlo mas, alla voy, a ver lo que soy capaz de aprender y descubrir en las comnicaciones por radio y el mundo de las ondas.
Para ello, me han prometido irme facilitando algunas herramientas que me vayan permitiendo avanzar en el camino.
La primera ha sido por duplicado, un par de receptores de television USB. Conocia su existencia pero ahora me tocaba pegarme un poco con ellos. La gracia que tienen es que por un modico precio (alrededor de 20-30 €) tienes un dispositivo de recepcion con muchas mas posibilidades aparte de ver el futbol. El nombre formal creo que es SDR (Software Defined Radio) porque le puedes configurar la frecuencia que quieres sintonizar y procesar digitalmente la señal recibida. Dependiendo del modelo exacto las capacidades y el chip exacto pueden variar un poco. Vamos a ver que descubrimos de estos. Esto es lo que me suelta el dmesg con el mas pequeño de ellos.
[ 9259.272693] usb 1-1.1: Product: RTL2838UHIDIR [ 9259.272696] usb 1-1.1: Manufacturer: Realtek |
Afortunadamente a nivel de software la Kali ya viene muy preparada para jugar con estos dispositivos. Empezare por las dos piezas que me han recomendado: rtl-sdr y gqrx-sdr
Se supone que con las herramientas de lineas de comandos del pack rtl-sdr podre hacer ciertas prebas (verificar que funciona, escuchar la radio, grabar una frecuencia a un fichero, etc..) y que gqrx es la herramienta basica sencilla y visual para explorar un poco el espectro.
Lo primero es verificar que el sistema reconoce el dispositivo, y la primera respuesta es NO.
# rtl_test Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001Using device 0: Generic RTL2832U OEMKernel driver is active, or device is claimed by second instance of librtlsdr. In the first case, please either detach or blacklist the kernel module (dvb_usb_rtl28xxu), or enable automatic detaching at compile time.usb_claim_interface error -6 Failed to open rtlsdr device #0. |
Afortunadamente Google tiene todas las respuestas, el propio kernel lo ha reconocido como un dispositivo de television y nos esta bloqueando el acceso. Asi que toca eliminar el modulo y ya tengo acceso.
~# rmmod dvb_usb_rtl28xxu ~# rtl_test Found 1 device(s): 0: Realtek, RTL2838UHIDIR, SN: 00000001Using device 0: Generic RTL2832U OEM Found Rafael Micro R820T tuner Supported gain values (29): 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6 Sampling at 2048000 S/s.Info: This tool will continuously read from the device, and report if samples get lost. If you observe no further output, everything is fine.Reading samples in async mode… ^CSignal caught, exiting!User cancel, exiting… Samples per million lost (minimum): 0 |
Ahora ya lo detecta adecuadamente y hemos averiguado el chipset que tiene. Lo siguiente es ver si podemos escuchar la radio con ello… Para ello me busco cual es la frecuencia en cualquier radio o web y lo pongo con el programa rtl_fm … esto nos dara los datos sintonizados, pero para convertirlo a audio y que suene hay que pasarlo por un reproduztor. Tras varias pruebas, el comando queda así:
rtl_fm -f 96.3e6 -M wbfm -s 200000 -r 48000 - | aplay -r 48k -f S16_LE |
Por cierto, que al receptor he tenido que enchufarle la antena, porque si no, no sintoniza nada y aun así con bastante ruido. Me temo que este sera el primer encontronazo de muchos otros en la importancia de las antenas :/
La siguiente herramienta en pasar por mis manos en el GQRX. Es un interfaz grafico para sintonizar el dispositivo, ver la intensidad de la señal e intentar algunos ejemplos basicos de demodulacion (AM, FM, etc). Sintonizando en las misma zona de frecencia que antes, es posible nuevamente escuchar la radio y ahí si, apreciar la poca calidad de la señal que recibimos. Para hacernos una idea, aqui os dejo dos capturas, una sin antena y otra con ella. Y eso que es la cutre super sencilla que venia con el receptor.
Tengo que reconocer que despues me he puesto a cotillear un poco por el espectro y despues de perder unas cuantas horas he llegado a una conclusion clara… no me entero de nada. Asi que volvi a recurrir a mi amigo a ver si me daba alguna pista de donde habia alguna onda interesante y que era todo aquello que había visto. No voy a reproducir literalmente su respuesta, pero basicamente me volvi con las manos vacias dandole vueltas a que podía hacer para tener una vision global de lo que hay en el espectro de ondas madrileño sin dejarme los ojos pegado a una pantalla avanzando de megaherzio en megaherzio.
Al final he optado por esta solucion, y la verdad es que ya os adelanto que estoy muy satisfecho. Se basa en el comando rtl-power que viene en el paquete rtl-sdr. A ese programa le podemos pasar un rango de frecuencias y unos tiempos de muestreo y total y te genera un archivo «crudo» en formato csv con las potencias de emision observadas en cada uno. Estupendo detalle pero inmanejable por si mismo. Para completarlo ya hay alguien que se ha currado una manera de visualizarlo en formato heatmap.
Para hacerlo nos tenemos que clonar el repositorio lo primero y luego alimentarlo con un fichero.
git clone https://github.com/keenerd/rtl-sdr-misc.git |
El comando que estoy usando para capturar los datos es el siguiente:
rtl_power -c 0.3 -f 88M:188M:2k -e 3h captured-sample.csv |
Basicamente lo que le estamos pidiendo es que durante 3 horas barra el rango de los 88 a los 188 Mhz en saltos de 2k y cada vez, descarte un 30% de las lecturas por los extremos (sin ello se veia que en esa zona la sensibilidad era mucho mas baja y salian unas estupendas bandas negras verticales). Con ello obtenemos un estupendo csv de unos 600 Mg. Este a su vez lo procesaremos con el heatmap.py que nos acabamos de bajar
python heatmap.py captured-sample.csv captured-sample.png |
Que nos dara algo así pero bastante más grande. En la primera pueden verse un par de canales de FM y en la segunda algun tipo de comunicacion intermitente (ya investigare)
Al final lo que he preparado un sencillo script para barrer el espectro de 100 en 100 Mghz y generar el grafiquito así como un pequeño thumbnail. Aqui os dejo unos cuantos, ojo con ellos que ocupan unos 80 Mg cada uno.
Ahora ya puedo explorarlos a ratos e ir viendo lo que me va llamando la atencion. Ya os ire contando mis desventuras mientras sigo mis observaciones. Eso si, por de pronto se puede ver que el aparato se vuelve totalmente sordo pasadas ciertas frecuencias. A ver si puedo a ir arrojando luz sobre lo que va apareciendo ahi
¿Alguien se anima a acompañarme en mis observaciones?