Introducción al análisis de señales
Ya hicimos una introducción a Arduino, mostrando como ejemplo la lectura de un EEPROM.
Ahora por lo tanto toca hablar sobre el análisis de señales.
Esto suele empezar así: “Oh! vaya… una señal curiosa; a veeeeer” xD
El ejemplo que voy a mostrar es el típico caso real de cualquiera que juega con señales, radio, etc. simplemente llega un día que por casualidad se encuentra con “algo” llamativo en su espectrograma, FFT o altavoz y con tiempo y ganas para investigarlo.
En este día le tocó a la banda ISM LPD433 que para entendernos, es una banda UHF (433.050 – 434.790 MHz) pensada para la comunicación entre integrados a cortas distancias y baja potencia (1 – 10mW).
- ¿Y qué nos podemos encontrar ahí?
De todo. Principalmente radioaficionados (es una banda compartida) pero se permite el uso sin licencia en los dispositivos que cumplan la LPD433, como pueden ser por ejemplo: llaves de coches, buscas, telemetrías varias, etc.
- ¿Y como se da con ello? Normalmente así:
Si estamos preparados en el momento justo; tendremos algún programa grabando cuando abra el SQL (squelch) y con suerte la tendremos ahí. Pero si buscamos una señal en concreto y sin posibles pérdidas, no queda otra que armarse con un buen disco duro y grabar en raw de continuo hasta que aparezca de nuevo la señal, si es que lo hace.
En este caso era repetitiva y constante (de hecho es una molestia) con lo que grabarla en condiciones es algo trivial. Una vez grabada pasamos al análisis de la misma.
Personalmente recomiendo el siguiente software, que es muy completo y avanzado, aunque al principio puede costar un poco hacerse a él. Signals Analyzer aunque la idea es armarse de unos cuantos, ya que cada uno tiene sus puntos fuertes.
Ahora, veamos la señal con el software SA:
<< Bien JR; menudo empedrado de imagen que nos has colado... xD >>
Tranquilos, por partes; vamos a leer la imagen de abajo a arriba, el primer paso es el de mas abajo, que simplemente es el fichero de audio (un wav) abierto con el programa. La señal se ve claramente, así que podemos seleccionarla y ampliarla con el botón de la lupa. En el segundo paso, ya se aprecia la señal; que parece una OOK repetida en bloques iguales de lo que podrían ser datos. Seleccionamos uno de los bloques y damos al botón de copia, lo que nos creará un nuevo fichero temporal con solo el tramo seleccionado.
Ya en el tercer paso, de ser una OOK, podremos ver en detalle la señal en nuestro espectrograma reduciendo el valor de la FFT y dividiendo el tamaño. El resultado… sí, parecen paquetes.
En el último paso, aplicamos una serie de filtros y damos valor al payload, parece que tiene sentido, más adelante veremos el detalle del análisis.
Ahora veremos lo mismo, pero en otro software: “GoldWave”.
Su misión no es tanto el análisis de señales, sino más bien el tratamiento de ficheros de sonido; desde mi punto de vista son dos software que se complementan muy bien. Pero como este caso es muy simple, desde GoldWave podríamos hacer todo el proceso.
El proceso hablando en modo profano, es mucho más simple; ampliar con la rueda del ratón, invertir la señal y ale!
Ahora al caso, me encuentro con un churro de unos y ceros, lo primero suele ser separarlo por bloques según te apetezca y experiencia personal e intentar buscar significado en HEX, DEC, ASCII, ITA2, hacer bruteforce con XOR, etc.
Si lo separamos por bloques de cuatro u ocho bits vemos que queda un bit suelto, buena señal, ya que podría ser perfectamente un bit de paridad; pasamos todo a hexadecimal y bueno, está claro que no hay texto, debe de ser una cabecera y un conjunto de cifras… ¿una telemetría tal vez?
Bueno, aquí lo lógico es pensar que seis ceros seguidos podrían perfectamente ser un padding de la cabecera, pero entonces quedaría poco hueco para datos; por lo que separamos en bloques de 8bits tomando como cabecera los dos primeros bloques y el resto como datos más padding con otro bloque al final de 8bits.
Ahí ya tenemos algo decente, dos posibilidades:
Tres números:
- 1
- 82
- 35
O dos números:
- 210
- 35
Como no se ve claro el que puede ser, llegado a este punto lo mejor es buscar sobre cacharros que trabajen en 433Mhz y manejen una estructura similar a la que tenemos como indicio. El resultado es contundente, estaciones meteorológicas
Y aunque no es ninguno de los modelos que aparecen en Internet, la estructura parece siempre la misma, la temperatura por diez en un campo seguida de la humedad relativa.
¿85 -> 8.5ºC en verano?! Va a ser que no.
Bingo.
Dejamos pasar el rato, las temperaturas suben y es lo que se refleja en la trama.
Por cierto, si, he dejado un bit que sobra en la temperatura; es por que me imagino que los valores de temperatura negativos serán marcando ese bit a 1. Cuando estemos a bajo cero actualizo la entrada.
Chicos, sed buenos.
73
Ahora por lo tanto toca hablar sobre el análisis de señales.
Esto suele empezar así: “Oh! vaya… una señal curiosa; a veeeeer” xD
El ejemplo que voy a mostrar es el típico caso real de cualquiera que juega con señales, radio, etc. simplemente llega un día que por casualidad se encuentra con “algo” llamativo en su espectrograma, FFT o altavoz y con tiempo y ganas para investigarlo.
En este día le tocó a la banda ISM LPD433 que para entendernos, es una banda UHF (433.050 – 434.790 MHz) pensada para la comunicación entre integrados a cortas distancias y baja potencia (1 – 10mW).
- ¿Y qué nos podemos encontrar ahí?
De todo. Principalmente radioaficionados (es una banda compartida) pero se permite el uso sin licencia en los dispositivos que cumplan la LPD433, como pueden ser por ejemplo: llaves de coches, buscas, telemetrías varias, etc.
- ¿Y como se da con ello? Normalmente así:
Si estamos preparados en el momento justo; tendremos algún programa grabando cuando abra el SQL (squelch) y con suerte la tendremos ahí. Pero si buscamos una señal en concreto y sin posibles pérdidas, no queda otra que armarse con un buen disco duro y grabar en raw de continuo hasta que aparezca de nuevo la señal, si es que lo hace.
En este caso era repetitiva y constante (de hecho es una molestia) con lo que grabarla en condiciones es algo trivial. Una vez grabada pasamos al análisis de la misma.
Personalmente recomiendo el siguiente software, que es muy completo y avanzado, aunque al principio puede costar un poco hacerse a él. Signals Analyzer aunque la idea es armarse de unos cuantos, ya que cada uno tiene sus puntos fuertes.
Ahora, veamos la señal con el software SA:
Tranquilos, por partes; vamos a leer la imagen de abajo a arriba, el primer paso es el de mas abajo, que simplemente es el fichero de audio (un wav) abierto con el programa. La señal se ve claramente, así que podemos seleccionarla y ampliarla con el botón de la lupa. En el segundo paso, ya se aprecia la señal; que parece una OOK repetida en bloques iguales de lo que podrían ser datos. Seleccionamos uno de los bloques y damos al botón de copia, lo que nos creará un nuevo fichero temporal con solo el tramo seleccionado.
Ya en el tercer paso, de ser una OOK, podremos ver en detalle la señal en nuestro espectrograma reduciendo el valor de la FFT y dividiendo el tamaño. El resultado… sí, parecen paquetes.
En el último paso, aplicamos una serie de filtros y damos valor al payload, parece que tiene sentido, más adelante veremos el detalle del análisis.
Ahora veremos lo mismo, pero en otro software: “GoldWave”.
Su misión no es tanto el análisis de señales, sino más bien el tratamiento de ficheros de sonido; desde mi punto de vista son dos software que se complementan muy bien. Pero como este caso es muy simple, desde GoldWave podríamos hacer todo el proceso.
El proceso hablando en modo profano, es mucho más simple; ampliar con la rueda del ratón, invertir la señal y ale!
Ahora al caso, me encuentro con un churro de unos y ceros, lo primero suele ser separarlo por bloques según te apetezca y experiencia personal e intentar buscar significado en HEX, DEC, ASCII, ITA2, hacer bruteforce con XOR, etc.
Si lo separamos por bloques de cuatro u ocho bits vemos que queda un bit suelto, buena señal, ya que podría ser perfectamente un bit de paridad; pasamos todo a hexadecimal y bueno, está claro que no hay texto, debe de ser una cabecera y un conjunto de cifras… ¿una telemetría tal vez?
Bueno, aquí lo lógico es pensar que seis ceros seguidos podrían perfectamente ser un padding de la cabecera, pero entonces quedaría poco hueco para datos; por lo que separamos en bloques de 8bits tomando como cabecera los dos primeros bloques y el resto como datos más padding con otro bloque al final de 8bits.
Ahí ya tenemos algo decente, dos posibilidades:
Tres números:
- 1
- 82
- 35
O dos números:
- 210
- 35
Como no se ve claro el que puede ser, llegado a este punto lo mejor es buscar sobre cacharros que trabajen en 433Mhz y manejen una estructura similar a la que tenemos como indicio. El resultado es contundente, estaciones meteorológicas
Y aunque no es ninguno de los modelos que aparecen en Internet, la estructura parece siempre la misma, la temperatura por diez en un campo seguida de la humedad relativa.
¿85 -> 8.5ºC en verano?! Va a ser que no.
Bingo.
Dejamos pasar el rato, las temperaturas suben y es lo que se refleja en la trama.
Por cierto, si, he dejado un bit que sobra en la temperatura; es por que me imagino que los valores de temperatura negativos serán marcando ese bit a 1. Cuando estemos a bajo cero actualizo la entrada.
Chicos, sed buenos.
73