Tabla de contenido:
- Paso 1: Equipamiento
- Paso 2: espiar el control remoto
- Paso 3: envíe los mismos marcos de datos
- Paso 4: conéctese al sistema
- Paso 5: Optimice el consumo de energía
Video: Hackea la puerta de tu garaje: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
¿Quién nunca ha soñado con volver a casa solo con una aplicación de teléfono, o poder escuchar y copiar tranvías de datos? Estoy feliz de poder compartir con ustedes lo que me di cuenta y cómo procedí. Comencé este proyecto después de la segunda vez que olvidé mis llaves …
Por supuesto, la codificación, el tipo de modulación, la frecuencia de la portadora, la información de conexión bluetooth y los datos que voy a mostrar en el ejemplo no son los originales, prefiero no tener visitas;-).
Esta aplicación se aplica a cualquier objeto capaz de recibir información digital mediante ondas electromagnéticas (puerta de garaje, coche, algunas persianas…). Todo el sistema consta de un objeto conectado por bluetooth a un teléfono, pudiendo este objeto enviar los mismos frames que el mando asociado a lo que queremos hackear. Coloqué este objeto en mi garaje y puedo conectarme a él desde el exterior.
Paso 1: Equipamiento
Idiomas utilizados: C ++, MATLAB, Typecript, C, html.
Conocimientos básicos en electrónica digital y telecomunicaciones / procesamiento de señales.
Costo: menos de $ 35.
Requisitos de hardware:
- NooELEC NESDR: para la captura de datos. Este módulo muy económico realiza una demodulación digital, de ahí su alta portabilidad. Este modelo es compatible con MATLAB. ($ 18,95)
www.nooelec.com/store/sdr/sdr-receivers/nes…
- Wemos Lolin32 lite: este esp32 es un microcontrolador barato, equipado con Wifi y Bluetooth. No usaremos Wifi en esta aplicación, pero esto es en gran parte concebible. ($ 4.74)
wiki.wemos.cc/products:lolin32:lolin32_lit…
- CDSENET cc1101: este transmisor de radio nos brinda una flexibilidad extrema, desde la frecuencia portadora elegida hasta el tipo de modulación. ($ 2.63)
www.aliexpress.com/item/2PC-Lot-E07-868MS1…
- Cables, cabezales, equipo de soldadura, batería lipo de 3,7 V para autonomía, posiblemente osciloscopio y / o analizador lógico para depuración y, de paso, un smartphone …
Requisitos de Software:
- MATLAB / Simulink: para capturar los datos. Se pueden utilizar otros softwares alternativos gratuitos, como Audacity para la visualización de datos. (licencia)
fr.mathworks.com/products.html?s_tid=gn_ps
- cadena de herramientas esp-idf: se utilizará para programar el esp32. También se puede usar el ide de Arduino, pero no permite tanta libertad como la que usaremos. (gratis)
esp-idf.readthedocs.io/en/latest/get-starte…
- TI SmartRF Studio: esto nos ayudará a configurar los registros cc1101, según nuestras especificaciones. (gratis)
www.ti.com/tool/SMARTRFTM-STUDIO
- Ionic: para construir la aplicación. Puede elegir crear aplicaciones nativas, pero Ionic nos permite ejecutar nuestra aplicación tanto en dispositivos Android como IOS, con un único código. El rendimiento no se busca en nuestro caso. (gratis)
ionicframework.com/
- Tu ide favorito …
Paso 2: espiar el control remoto
Empezaremos observando los datos que producen los comandos del mando a distancia. Para hacer esto, usaremos un dongle rtl-sdr y una antena:
fr.mathworks.com/hardware-support/rtl-sdr….
Siguiendo este enlace, encontrará el paquete MATLAB, así como un libro gratuito que explica todos los precios con su explicación. Para resumir lo que nos preocupa, los datos de tránsito tienen la forma de una señal IQ: un dato en fase "I", combinado con un dato en cuadratura "Q". Este método facilita las telecomunicaciones. Solo nos interesará recibir la señal en fase. Ahora recopilaremos la información física y digital del mando a distancia, si puedes encontrar alguna documentación sobre él, te resultará más fácil. No encontré ninguno. Para poder observar temporalmente la señal, primero debemos saber cuál es la frecuencia portadora de la señal emitida. Usaremos el ejemplo proporcionado con la documentación del paquete "Análisis espectral con radio RTL-SDR", para saber exactamente a qué frecuencia observamos un pico de potencia cuando enviamos un comando. En mi caso es 868,22 MHz. Las frecuencias "estándar" para este tipo de aplicaciones rondan los 868 MHz.
Con estas indicaciones, podremos escribir un código MATLAB para recuperar los datos. Este se adjunta en foto y se comenta, el resultado nos permite encontrar el tipo de modulación: recuperando la información en bruto, mostrando el resultado justo después de haber recuperado la parte real de la señal, podemos deducir que se trata de un ASK / OOK modulación. De hecho, observamos que la frecuencia es invariante, sin embargo, la señal tiene solo dos amplitudes: una nula y una fija. El resto del código nos permite recuperar la envolvente de la señal recibida, facilitando la lectura para conocer el trame. Una vez mostrada, podemos determinar la modulación de banda base: esta es una codificación Manchester (ver foto adjunta). También podemos deducir la velocidad en baudios (símbolos por segundo). Toda esta información recopilada, podemos conocer el marco de datos. En mi caso, los bytes encontrados son: 249, 39, 75, 178, 45, 200 y se repiten varias veces, para asegurar que el comando sea bien recibido. Afortunadamente, el código no funciona, el marco de datos es siempre el mismo.
Paso 3: envíe los mismos marcos de datos
El Texas Instruments cc1101 es tan flexible que aún logrará su objetivo, incluso si la configuración que encontró en el paso anterior es completamente diferente a la mía. De hecho, verá en la documentación, página 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) que permite realizar modulación NRZ, Manchester, FSK, ASK / OOK, para alcanzar las frecuencias alrededor de 433 MHz o 868 MHz, y muchas otras cosas. Le aconsejo que lea la documentación para familiarizarse con este módulo.
En este enlace encontrará como ejemplo el trabajo de Loboris relativo a la construcción de funciones utilizando este módulo:
github.com/loboris/ESP32_CC1101/tree/maste…
Vamos a escribir nuestro código para nuestro esp32 con la cadena de herramientas esp-idf (ver enlaces del primer paso). Puede agregar los archivos del enlace en el subdirectorio de componentes de su proyecto. Para configurar correctamente nuestro cc1101, necesitaremos arreglar sus registros. Texas Instruments nos proporciona un software que nos da el valor de los registros según nuestra configuración: SmartRF Studio.
En lo que a mí respecta, le indico al software que deseo una codificación Manchester, que mi frecuencia portadora es 868.22 MHz, que mi tipo de modulación es ASK / OOK… te dejo ingresar tus parámetros. En el caso de que su codificación de banda base no esté disponible, puede considerar la codificación NRZ aumentando adecuadamente la velocidad en baudios y adaptando los datos.
Una vez que hayas definido tus valores, tienes varias opciones con respecto al uso del módulo: puedes usar las funciones que te he vinculado, o lo que hice, solo inspírate en este código, para configurar todo de una manera más forma brutal (ver fotos adjuntas), y solo usamos lo que necesitamos.
Como el chip cc1101 se comunica por SPI, encontrará en el enlace del código de ejemplo el archivo de encabezado "spi_master_lobo.h", que contiene funciones más fáciles para usar el SPI que si tuviera que usarlo solo con la cadena de herramientas. Me uno a ustedes en foto el esquema de la comunicación CC1101 en SPI, foto tomada de la página 30 de la ficha técnica CC1101. Los cuatro cables presentados son: CS (Chip Select, o SS: Slave Select, o aquí CSn), CLK (o SCLK, el Reloj, proporcionado por el maestro), MISO (o SO, Master In Slave Out) y MOSI (o SI, Master Out Slave In). En nuestro caso, el maestro es el ESP32 y el esclavo es el CC1101. Las comunicaciones comienzan cuando el pin CS está bajo, en general.
No olvide habilitar en las opciones del compilador del menú configurar las excepciones de C ++ para compilar.
Paso 4: conéctese al sistema
Si su código funciona, ha hecho lo esencial. En esta parte, nos centraremos en cómo crear una aplicación de teléfono conectada al sistema. La solución más interesante es la de conectarse por bluetooth, porque permite el uso de un protocolo de bajo consumo: Bluetooth Low Energy (BLE). El perfil de jerarquía se muestra en el dibujo adjunto: leeremos y escribiremos el comando en una Característica de un Servicio. Y por supuesto, nuestro esp32 y nuestro smartphone están equipados con bluetooth.
Este paso se divide en dos partes: la parte esp32 y la parte de la aplicación. La foto adjunta muestra y explica las partes principales de los códigos.
Puede generar sus UUID siguiendo este enlace:
www.uuidgenerator.net/
Estos son los identificadores que proporcionarán acceso a los servicios y características de nuestro perfil BLE.
Acerca del código BLE esp32, Kolban hizo un gran trabajo al hacer compatibles todas estas funciones de C ++ de alto nivel:
github.com/nkolban/esp32-snippets/tree/mas…
Puede poner estos archivos en el subdirectorio de componentes. De lo contrario, necesitará más tiempo para comprender cómo usar BLE con la cadena de herramientas esp-idf.
En resumen de lo que verá en el código, creamos un Servidor, un Servicio y una Característica, con los UUID asociados, y agregamos una clase de devolución de llamada redefinida, con un método de escritura asociado: cuando recibimos la "O" carácter, enviamos un comando de escritura al cc1101.
Por supuesto, no olvide habilitar Bluetooth en la configuración de componentes de Menuconfig.
Sobre la parte de la aplicación, usaremos Framework Ionic. Puede encontrar más información al respecto en el enlace presentado en el primer paso, y para obtener más detalles sobre cómo usar BLE con Ionic:
ionicframework.com/docs/native/ble/
Y ejemplos, escritos por don:
github.com/don/ionic-ble-examples/tree/mas…
Puede editar por ejemplo el ejemplo "Conectar". Escaneamos dispositivos en una primera página, y llegamos a una segunda página si seleccionamos nuestro dispositivo. Luego accedemos a una interfaz donde se puede agregar un botón con el método presentado en la foto: envía nuestro comando "O" con los UUID apropiados. También puede agregar en el constructor de la primera página el método "enable", pidiendo activar el bluetooth al inicio de la aplicación.
Te recomiendo que explores el sitio web de Ionic y descubras todos los componentes (botones, alertas, casillas de verificación …) para mejorar tu aplicación:
ionicframework.com/docs/components/#overvi…
Paso 5: Optimice el consumo de energía
Empezamos a trabajar en el bajo consumo, así que trabajemos.
La cadena de herramientas esp-idf nos permite usar una GUI de configuración, menuconfig: muchos parámetros pueden reducir el consumo de esp32. En primer lugar, como no necesitamos Wifi, podemos desactivarlo en la configuración del componente. En la misma carpeta, en FreeRTOS, puede seleccionar "Ejecutar FreeRTOS solo en el primer núcleo. Luego, en ESP específico, puede reducir la frecuencia de la CPU a 80 MHz. Todas las funciones aún funcionan a esta velocidad de reloj. Por último, puede marque "Habilitar coprocesador de energía ultrabaja (ULP)". Esta configuración hace que el consumo de corriente pase de unos cien mA a unos treinta mA. Esto todavía es demasiado …
ESP32 puede soportar el sueño profundo. Solo el núcleo de baja energía está encendido y espera un despertar.
Consulte este enlace a continuación para obtener más detalles:
esp-idf.readthedocs.io/en/latest/api-refere…
Desafortunadamente, en la última versión disponible de la cadena de herramientas esp-idf (3.0), los únicos despertares disponibles son los temporizadores y las interrupciones de GPIO. Afortunadamente, Espressif nos promete que BLE se despertará en la próxima versión (3.1).
También puede poner el CC1101 en modo de suspensión enviando en SPI el comando adecuado para apagar el dispositivo (consulte la hoja de datos cc1101, el comando SPWD, página 51). Para poner el dispositivo en modo de suspensión o para reactivarlo, puede poner bajo y luego alto el pin Chip Select de los pines SPI (más información en la hoja de datos).
Estas últimas configuraciones deben poder hacer que el consumo del sistema pase por debajo del miliamperio …
Finalmente, para que el sistema dure el mayor tiempo posible sin recargar, o incluso alcanzar un mes de autonomía, elige la batería de 3.7V con más miliamperios por hora. Al medir el consumo de energía de su sistema, con la pantalla de un generador o un amperímetro conectado en serie antes de su polo + de su sistema, ¡puede estimar el tiempo que durará su sistema!
Recomendado:
Puerta de garaje controlada por Alexa con Arduino Esp8266: 6 pasos
Puerta de garaje controlada por Alexa con Arduino Esp8266: La idea de este proyecto me vino de un antiguo proyecto en el que había trabajado hace un tiempo. Había conectado un circuito de pulsador simple que enciende un LED cuando se presiona un botón junto a la puerta del garaje. Este método resultó poco confiable y no tan útil
Abre-puerta de garaje inteligente y económico: 6 pasos (con imágenes)
Abridor de puerta de garaje inteligente y barato: crédito Copié prácticamente la implementación de Savjee, pero en lugar de usar un Shelly, usé un Sonoff Basic. ¡Visite su sitio web y su canal de YouTube! Https: //www.savjee.be/2020/06/make-garage-door-ope…https: //www.youtube.com/c/Savjee/AssumptionsYou h
Abre-puerta de garaje con comentarios usando Esp8266 como servidor web: 6 pasos
Abridor de puerta de garaje con comentarios usando Esp8266 como servidor web: Hola, le mostraré cómo hacer una manera simple de hacer un abridor de puerta de garaje.-ESP8266 está codificado como servidor web, la puerta se puede abrir en cualquier parte del mundo-Con comentarios, sabrá si la puerta está abierta o cerrada en tiempo real: simple, solo un atajo para hacer i
Control remoto invisible para puerta de garaje: 7 pasos (con imágenes)
Control remoto invisible de la puerta del garaje: Una vez dejamos nuestro automóvil estacionado afuera del garaje y un ladrón rompió una ventana para llegar al control remoto de la puerta del garaje. Luego abrieron el garaje y robaron algunas bicicletas. Así que decidí esconder el control remoto colocándolo en el cenicero del auto. Funciona para
Truco de luz de estado de puerta de garaje: 3 pasos
Truco de luz de estado de la puerta del garaje: Vivo en una casa donde no es fácil ver si la puerta del garaje está abierta o cerrada. Tenemos un botón en la casa, pero la puerta no está a la vista. La idea de diseñar algún tipo de interruptor y fuente de alimentación era indeseable debido a la alta pr