Inhaltsverzeichnis:

Hacken Sie Ihr Garagentor - Gunook
Hacken Sie Ihr Garagentor - Gunook

Video: Hacken Sie Ihr Garagentor - Gunook

Video: Hacken Sie Ihr Garagentor - Gunook
Video: Garagentor Hack + Anleitung 3D Druck DIY 2024, Juli
Anonim
Hacken Sie Ihr Garagentor
Hacken Sie Ihr Garagentor
Hacken Sie Ihr Garagentor
Hacken Sie Ihr Garagentor
Hacken Sie Ihr Garagentor
Hacken Sie Ihr Garagentor

Wer hat noch nie davon geträumt, nur mit einer Telefon-App nach Hause zu gehen oder Datenbahnen zu hören und zu kopieren? Ich freue mich, Ihnen mitteilen zu können, was ich realisiert habe und wie ich vorgegangen bin. Ich habe dieses Projekt gestartet, nachdem ich zum zweiten Mal meine Schlüssel vergessen hatte…

Natürlich sind die Kodierung, die Modulationsart, die Frequenz des Trägers, die Bluetooth-Verbindungsinformationen und die Daten, die ich im Beispiel zeigen werde, nicht die Originale, ich ziehe es vor, keine Besucher zu haben;-).

Diese Anwendung gilt für jedes Objekt, das digitale Informationen durch elektromagnetische Wellen empfangen kann (Garagentor, Auto, einige Fensterläden …). Das gesamte System besteht aus einem Objekt, das über Bluetooth mit einem Telefon verbunden ist, wobei dieses Objekt die gleichen Frames senden kann wie die Fernbedienung, die mit dem verknüpft ist, was wir hacken möchten. Ich habe dieses Objekt in meiner Garage platziert und kann mich von außen damit verbinden.

Schritt 1: Ausrüstung

Ausrüstung
Ausrüstung
Ausrüstung
Ausrüstung

Verwendete Sprachen: C++, MATLAB, Typescript, C, HTML.

Grundkenntnisse in digitaler Elektronik und Telekommunikation/Signalverarbeitung.

Kosten: weniger als 35 $.

Hardware-Anforderungen:

- NooELEC NESDR: zum Erfassen der Daten. Dieses sehr preiswerte Modul führt eine digitale Demodulation durch, daher seine hohe Portabilität. Dieses Modell ist mit MATLAB kompatibel. (18,95 $)

www.nooelec.com/store/sdr/sdr-receivers/nes…

- Wemos Lolin32 lite: dieser esp32 ist ein billiger Mikrocontroller, ausgestattet mit Wifi und Bluetooth. Wir werden in dieser Anwendung kein WLAN verwenden, dies ist jedoch weitgehend denkbar. ($4,74)

wiki.wemos.cc/products:lolin32:lolin32_lit…

- CDSENET cc1101: Dieser Funksender bietet uns eine extreme Flexibilität, von der gewählten Trägerfrequenz bis zur Modulationsart. ($2,63)

www.aliexpress.com/item/2PC-Lot-E07-868MS1…

- Drähte, Stiftleisten, Schweißgeräte, 3,7-V-Lipo-Batterie für die Autonomie, möglicherweise Oszilloskop und / oder Logikanalysator für die Fehlersuche und nebenbei ein Smartphone …

Software Anforderungen:

- MATLAB/Simulink: zum Erfassen der Daten. Andere kostenlose alternative Software kann verwendet werden, wie Audacity zur Datenvisualisierung. (Lizenz)

fr.mathworks.com/products.html?s_tid=gn_ps

- esp-idf-Toolchain: Dies wird für die Programmierung des esp32 verwendet. Die Arduino-Ide kann auch verwendet werden, lässt jedoch nicht so viel Freiheit wie das, was wir verwenden werden. (kostenlos)

esp-idf.readthedocs.io/en/latest/get-starte…

- TI SmartRF Studio: Dies hilft uns, die cc1101-Register gemäß unseren Spezifikationen zu konfigurieren. (kostenlos)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: zum Erstellen der App. Sie können wählen, ob Sie native Apps erstellen möchten, aber Ionic ermöglicht es uns, unsere App mit einem einzigen Code sowohl auf Android- als auch auf IOS-Geräten auszuführen. Die Leistung wird in unserem Fall nicht gesucht. (kostenlos)

ionicframework.com/

- Deine Lieblingsidee…

Schritt 2: Ausspionieren der Fernbedienung

Ausspähen der Fernbedienung
Ausspähen der Fernbedienung
Ausspähen der Fernbedienung
Ausspähen der Fernbedienung
Ausspähen der Fernbedienung
Ausspähen der Fernbedienung

Wir beginnen mit der Beobachtung der Daten, die die Befehle der Fernbedienung erzeugen. Dazu verwenden wir einen rtl-sdr-Dongle und eine Antenne:

fr.mathworks.com/hardware-support/rtl-sdr….

Wenn Sie diesem Link folgen, finden Sie das MATLAB-Paket sowie ein kostenloses Buch, das alle Prinzipien mit ihrer Erklärung erklärt. Um zusammenzufassen, was uns betrifft, liegen die Transitdaten in Form eines IQ-Signals vor: ein "I"-In-Phase-Daten, kombiniert mit einem "Q"-Quadratur-Daten. Dieses Verfahren erleichtert die Telekommunikation. Wir werden nur daran interessiert sein, das Signal in Phase zu empfangen. Wir werden nun die physischen und digitalen Informationen auf der Fernbedienung zusammentragen. Wenn Sie eine Dokumentation dazu finden, wird es einfacher. Ich habe keine gefunden. Um das Signal zeitlich beobachten zu können, müssen wir zunächst den Frequenzträger des ausgesendeten Signals kennen. Anhand des Beispiels aus der Paketdokumentation „Spektralanalyse mit RTL-SDR-Funk“wissen wir genau, auf welcher Frequenz wir beim Senden eines Befehls eine Spitzenleistung beobachten. In meinem Fall sind es 868,22 MHz. Die "Standard"-Frequenzen für diese Art von Anwendungen liegen bei 868 MHz.

Mit diesen Angaben können wir einen MATLAB-Code schreiben, um die Daten wiederherzustellen. Dieser ist als Foto beigefügt und kommentiert. Das Ergebnis ermöglicht es uns, die Art der Modulation zu finden: Durch Abrufen der Rohinformationen und Anzeigen des Ergebnisses direkt nach der Wiederherstellung des realen Teils des Signals können wir ableiten, dass es sich um ein ASK / OOK. handelt Modulation. Tatsächlich beobachten wir, dass die Frequenz invariant ist, das Signal hat jedoch nur zwei Amplituden: eine Null und eine feste. Der Rest des Codes ermöglicht es uns, die Hüllkurve des empfangenen Signals wiederherzustellen, die leichter zu lesen ist, um die Tram zu kennen. Einmal angezeigt, können wir die Basisbandmodulation bestimmen: Dies ist eine Manchester-Codierung (siehe angehängtes Foto). Wir können auch auf die Baudrate (Symbole pro Sekunde) schließen. Wenn all diese Informationen gesammelt werden, können wir den Datenrahmen kennen. In meinem Fall sind die gefundenen Bytes: 249, 39, 75, 178, 45, 200 und werden mehrmals wiederholt, um sicherzustellen, dass der Befehl gut ankommt. Glücklicherweise rollt der Code nicht, der Datenrahmen ist immer der gleiche.

Schritt 3: Senden Sie die gleichen Datenrahmen

Senden Sie die gleichen Datenrahmen
Senden Sie die gleichen Datenrahmen
Senden Sie die gleichen Datenrahmen
Senden Sie die gleichen Datenrahmen
Senden Sie die gleichen Datenrahmen
Senden Sie die gleichen Datenrahmen

Der Texas Instruments cc1101 ist so flexibel, dass Sie Ihr Ziel auch dann erreichen, wenn die Einstellungen, die Sie im vorherigen Schritt gefunden haben, völlig anders sind als meine. Tatsächlich werden Sie in der Dokumentation, Seite 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) sehen, dass es ermöglicht, NRZ-, Manchester-, FSK-, ASK / OOK-Modulation durchzuführen, um zu erreichen die Frequenzen um 433 MHz oder 868 MHz und vieles mehr. Ich empfehle Ihnen, die Dokumentation zu lesen, um sich mit diesem Modul vertraut zu machen.

Unter diesem Link finden Sie als Beispiel die Arbeit von Loboris zur Konstruktion von Funktionen mit diesem Modul:

github.com/loboris/ESP32_CC1101/tree/maste…

Wir werden unseren Code für unseren esp32 mit der esp-idf-Toolchain schreiben (siehe Links im ersten Schritt). Sie können die Dateien des Links im Komponenten-Unterverzeichnis Ihres Projekts hinzufügen. Um unseren cc1101 richtig zu konfigurieren, müssen wir seine Register reparieren. Texas Instruments stellt uns eine Software zur Verfügung, die uns den Wert der Register gemäß unserer Konfiguration liefert: SmartRF Studio.

Was mich betrifft, gebe ich der Software an, dass ich eine Manchester-Codierung wünsche, dass meine Trägerfrequenz 868,22 MHz ist, dass meine Modulationsart ASK / OOK ist … Ich lasse Sie Ihre Parameter eingeben. Falls Ihre Basisbandcodierung nicht verfügbar ist, können Sie eine NRZ-Codierung in Betracht ziehen, indem Sie die Baudrate richtig erhöhen und die Daten anpassen.

Nachdem Sie Ihre Werte definiert haben, haben Sie mehrere Möglichkeiten zur Verwendung des Moduls: Sie können die Funktionen verwenden, die ich Ihnen verlinkt habe, oder was ich getan habe, lassen Sie sich nur von diesem Code inspirieren, um alles in einer mehr brutale Weise (siehe angehängte Fotos), und verwenden Sie nur das, was wir brauchen.

Da der cc1101-Chip per SPI kommuniziert, finden Sie im Link des Beispielcodes die Header-Datei "spi_master_lobo.h", die einfachere Funktionen für die Verwendung des SPI enthält, als wenn Sie es nur mit der Toolchain verwenden müssten. Ich schließe mich Ihnen im Foto das Schema der CC1101-Kommunikation in SPI an, Foto von Seite 30 des CC1101-Datenblatts. Die vier vorgestellten Drähte sind: CS (Chip Select oder SS: Slave Select, oder hier CSn), CLK (oder SCLK, die Uhr, die vom Master bereitgestellt wird), MISO (oder SO, Master In Slave Out) und MOSI (oder SI, Master Out Slave In). In unserem Fall ist der Master der ESP32 und der Slave der CC1101. Die Kommunikation beginnt im Allgemeinen, wenn der CS-Pin niedrig ist.

Vergessen Sie nicht, in den Compiler-Optionen der menuconfig die C++-Ausnahmen für das Kompilieren zu aktivieren.

Schritt 4: Verbinden mit dem System

Mit dem System verbinden
Mit dem System verbinden
Mit dem System verbinden
Mit dem System verbinden
Mit dem System verbinden
Mit dem System verbinden

Wenn Ihr Code funktioniert, haben Sie das Wesentliche getan. In diesem Teil konzentrieren wir uns darauf, wie Sie eine mit dem System verbundene Telefon-App erstellen. Die interessanteste Lösung ist die Verbindung über Bluetooth, da sie die Verwendung eines Low-Power-Protokolls ermöglicht: Bluetooth Low Energy (BLE). Das Hierarchieprofil ist in der beigefügten Zeichnung dargestellt: Wir werden den Befehl in einem Merkmal eines Dienstes lesen und schreiben. Und natürlich sind unser esp32 und unser Smartphone mit Bluetooth ausgestattet.

Dieser Schritt ist in zwei Teile unterteilt: den esp32-Teil und den App-Teil. Das beigefügte Foto zeigt und erklärt die wichtigsten Teile der Codes.

Sie können Ihre UUIDs generieren, indem Sie diesem Link folgen:

www.uuidgenerator.net/

Dies sind die Kennungen, die den Zugriff auf die Dienste und Funktionen unseres BLE-Profils ermöglichen.

In Bezug auf den esp32 BLE-Code hat Kolban großartige Arbeit geleistet, um all diese High-Level-C++-Funktionen kompatibel zu machen:

github.com/nkolban/esp32-snippets/tree/mas…

Sie können diese Dateien im Komponenten-Unterverzeichnis ablegen. Andernfalls benötigen Sie mehr Zeit, um zu verstehen, wie BLE mit der esp-idf-Toolchain verwendet wird.

Zusammenfassend zu dem, was Sie im Code sehen werden, erstellen wir einen Server, einen Dienst und ein Merkmal mit den zugehörigen UUIDs und fügen eine neu definierte Callback-Klasse mit einer zugehörigen Methode beim Schreiben hinzu: Wenn wir das "O" erhalten Zeichen senden wir einen Schreibbefehl an den cc1101.

Vergessen Sie natürlich nicht, Bluetooth in der Komponentenkonfiguration der Menuconfig zu aktivieren.

Über den App-Teil werden wir das Framework Ionic verwenden. Weitere Informationen dazu finden Sie in dem im ersten Schritt vorgestellten Link und weitere Details zur Verwendung von BLE mit Ionic:

ionicframework.com/docs/native/ble/

Und Beispiele, geschrieben von don:

github.com/don/ionic-ble-examples/tree/mas…

Sie können beispielsweise das Beispiel "Verbinden" bearbeiten. Wir scannen Geräte auf einer ersten Seite und erreichen eine zweite Seite, wenn wir unser Gerät auswählen. Wir greifen dann auf eine Schnittstelle zu, auf der Sie eine Schaltfläche mit der im Foto dargestellten Methode hinzufügen können: Sie sendet unseren Befehl "O" mit den entsprechenden UUIDs. Sie können im Konstruktor der ersten Seite auch die Methode "enable" hinzufügen, die beim Start der Anwendung auffordert, das Bluetooth zu aktivieren.

Ich empfehle Ihnen dringend, die Ionic-Website zu erkunden und alle Komponenten (Schaltflächen, Warnungen, Kontrollkästchen…) zu entdecken, um Ihre Anwendung zu verbessern:

ionicframework.com/docs/components/#overvi…

Schritt 5: Optimieren Sie den Stromverbrauch

Optimieren Sie den Stromverbrauch
Optimieren Sie den Stromverbrauch
Optimieren Sie den Stromverbrauch
Optimieren Sie den Stromverbrauch

Wir haben angefangen, an einem niedrigen Verbrauch zu arbeiten, also lass uns durcharbeiten.

Die esp-idf-Toolchain ermöglicht es uns, eine Konfigurations-GUI, die menuconfig, zu verwenden: Viele Parameter können den esp32-Verbrauch senken. Da wir kein Wifi benötigen, können wir es zunächst in der Komponentenkonfiguration deaktivieren. Im selben Ordner können Sie in FreeRTOS "Run FreeRTOS only on first core" auswählen. Dann können Sie in ESP-spezifisch die CPU-Frequenz auf 80 MHz senken. Alle Funktionen funktionieren weiterhin mit dieser Taktrate. Schließlich können Sie Aktivieren Sie "Ultra-Low-Power-Coprozessor (ULP) aktivieren. Diese Konfiguration lässt den Stromverbrauch von ungefähr hundert mA auf ungefähr dreißig mA steigen. Das ist noch zu viel…

ESP32 kann mit Tiefschlaf umgehen. Nur der Low-Energy-Core ist eingeschaltet und wartet auf ein Aufwachen.

Weitere Informationen finden Sie unter diesem Link unten:

esp-idf.readthedocs.io/en/latest/api-refere…

Leider sind in der letzten verfügbaren Version der esp-idf-Toolchain (3.0) nur Timer und GPIOs-Unterbrechungen verfügbar. Glücklicherweise verspricht Espressif uns, dass BLE in der nächsten Version (3.1) aufwacht.

Sie können den CC1101 auch in einen Schlafmodus versetzen, indem Sie in SPI den entsprechenden Befehl zum Ausschalten des Geräts senden (siehe cc1101 Datenblatt, der SPWD-Befehl, Seite 51). Um das Gerät in den Schlafmodus zu versetzen oder aufzuwecken, können Sie den Chip Select Pin der SPI Pins auf Low und dann High setzen (mehr Infos im Datenblatt).

Diese letzten Konfigurationen sollten in der Lage sein, den Verbrauch des Systems unter das Milliampere zu bringen…

Um die Lebensdauer des Systems ohne Aufladen so lange wie möglich zu halten oder sogar einen Monat Autonomie zu erreichen, wählen Sie die 3,7-V-Batterie mit den meisten Milliampere pro Stunde. Durch die Messung des Stromverbrauchs Ihrer Anlage, mit der Anzeige eines Generators oder eines Amperemeters in Reihe vor Ihrem + Pol Ihrer Anlage, können Sie die Lebensdauer Ihrer Anlage abschätzen!

Empfohlen: