paquetes de RF de ingeniería inversa

3

Tengo un Blue Line Innovations PowerCost Monitor . Envía paquetes a una unidad de pantalla a través de un enlace de RF de 433.92 MHz. Hay un código ( Power Monitor , incompleto) para detectar estos paquetes con un RF Link 4800bps Receiver y un Arduino.

Definitivamente estoy obteniendo algo del transmisor, pero los paquetes no parecen tener sentido. ¿Cómo podría uno descifrar datos de un dispositivo como este?

( Update / Aside 2014-07: un usuario de github ha descifrado completamente el protocolo y ha incluido el paquete rtl_433 para que los dongles de SDR lo lean: radredgreen / rtl_433 .)

( Update / Aside 2014-08: Otro usuario de github implementó esto en Arduino: CapnBry / Powermon433 )

    
pregunta scruss

2 respuestas

6

Entonces, el problema con el que probablemente te encuentres es que el espectro de radio sin licencia es ruidoso. Hay muchas cosas que se transmiten allí, especialmente la electrónica inalámbrica barata como timbres inalámbricos, controladores inalámbricos de LED y este monitor de "costo de energía" que estás viendo. ¿Estás seguro de que no estás simplemente abrumado por el ruido? El receptor al que está vinculado se escala automáticamente para que el ruido se vea como una señal. ¿Qué sale cuando el monitor de potencia no está conectado? Si aún parece el mismo galimatías que has estado recibiendo, ahí tienes tu problema.

Notarás la gran cantidad de quejas de ese receptor por parte de personas que dicen "¡No puedo conectarlo!" o "da datos basura" y un montón más dando consejos sobre cómo solucionarlo. Es probable que el dispositivo que está intentando leer haya diseñado un esquema similar para codificar correctamente sus datos.

Para tratar de "aplicar ingeniería inversa" al protocolo, esto suele ser aburrido y lento, pero metódico y lógico.

Comience simplemente por tomar el receptor que tiene y conectarlo a algo como un osciloscopio en un modo de disparo y luego conecte el receptor que viene con su monitor. Luego, cuando el paquete codificado proviene del monitor de costos, guarde la forma de onda de su osciloscopio y lo que correspondía a la salida del software. Luego, cuando llegue el próximo paquete, compare lo que cambió en la forma de onda con los datos que recibió. Lentamente, deberías poder descubrir qué está pasando.

En general, la razón por la que no ve demasiados trabajos de ingeniería inversa amateur es porque hay mucha intuición relacionada con la ingeniería inversa de estas cosas. Por ejemplo: es probable que vea que incluso con un solo cambio en los datos (es decir, un nuevo paquete viene solo con un cambio de temperatura en 1 grado) puede haber múltiples cambios en el paquete. Esto podría ser de un paquete de suma de comprobación, pero ¿cómo se formó? ¿Es un CRC16? ¿O simplemente una suma de todos los bits en el paquete?

Una herramienta que podría ayudar sería una barata. analizador lógico .

¡Buena suerte! Espero que eso ayude.

    
respondido por el Kit Scuzz
1

Esta es una respuesta parcial, ya que todavía no he descodificado los paquetes, pero he aprendido mucho sobre cómo funcionan las placas RF en el último año.

Si bien el comentario de Kit Scuzz sobre los analizadores lógicos es útil, puede que no lo sean tanto aquí:

  1. Los receptores de 433.92 MHz aplican AGC a la señal de entrada, amplificándola para que la placa emita un máximo cada pocos milisegundos. Esto haría muy difícil establecer un disparador en un analizador lógico.
  2. Los paquetes vienen aproximadamente cada 32 segundos. Ningún analizador lógico que pueda permitirme puede capturar espacios tan largos entre paquetes.

La herramienta que he encontrado más útil es Protocol Analyzer . Utiliza su tarjeta de sonido como un solo canal, dispositivo de captura de datos lento (ish). Tiene algunas limitaciones (la precisión está limitada por el ancho de muestra mínimo de aproximadamente 22 µs de la tarjeta de sonido) y algunos errores molestos, pero es utilizable tal como está.

Ojalá hubiera sabido más sobre la codificación de Manchester cuando estaba empezando. La nota de aplicación de Atmel " Manchester Coding Basics " es muy útil. También fue muy instructivo poder comprar otro medidor de potencia y desarmarlo, ya que entonces podía tomar señales directamente del µc del transmisor pines .

    
respondido por el scruss

Lea otras preguntas en las etiquetas