Innehållsförteckning:

Hacka din garageport: 5 steg
Hacka din garageport: 5 steg

Video: Hacka din garageport: 5 steg

Video: Hacka din garageport: 5 steg
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, November
Anonim
Hacka din garageport
Hacka din garageport
Hacka din garageport
Hacka din garageport
Hacka din garageport
Hacka din garageport

Vem har aldrig drömt om att gå hem bara med en telefonapp, eller att kunna lyssna på och kopiera datatrafik? Jag är glad att kunna dela med mig av vad jag insåg, och hur jag gick tillväga. Jag startade det här projektet efter andra gången jag glömde mina nycklar …

Naturligtvis är kodningen, typen av modulering, bärarens frekvens, Bluetooth-anslutningsinformationen och datan som jag ska visa i exemplet inte originalen, jag föredrar att inte ha besökare;-).

Denna applikation gäller alla objekt som kan ta emot digital information med elektromagnetiska vågor (garageport, bil, några fönsterluckor …). Hela systemet består av ett objekt anslutet med bluetooth till en telefon, detta objekt kan skicka samma ramar som fjärrkontrollen associerad med det vi vill hacka. Jag placerade detta objekt i mitt garage, och jag kan ansluta till det från utsidan.

Steg 1: Utrustning

Utrustning
Utrustning
Utrustning
Utrustning

Språk som används: C ++, MATLAB, Typskript, C, html.

Grundläggande kunskaper inom digital elektronik och telekommunikation/signalbehandling.

Kostnad: mindre än $ 35.

Hårdvarukrav:

- NooELEC NESDR: för att fånga data. Denna mycket billiga modul utför en digital demodulering, därav dess höga bärbarhet. Denna modell är kompatibel med MATLAB. ($ 18,95)

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

- Wemos Lolin32 lite: denna esp32 är en billig mikrokontroller, utrustad med Wifi och Bluetooth. Vi kommer inte att använda Wifi i den här applikationen, men detta är i stort sett tänkbart. ($ 4,74)

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

- CDSENET cc1101: denna radiosändare ger oss en extrem flexibilitet, från den valda bärfrekvensen till typen av modulering. ($ 2,63)

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

- Ledningar, sidhuvuden, svetsutrustning, 3,7V lipobatteri för autonomi, eventuellt oscilloskop och/eller logikanalysator för felsökning och för övrigt en smartphone …

Programvarukrav:

- MATLAB/Simulink: för att fånga data. Andra gratis alternativa program kan användas, som Audacity för datavisualisering. (licens)

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

- esp-idf verktygskedja: detta kommer att användas för programmering av esp32. Arduino -idén kan också användas, men den tillåter inte lika mycket frihet som vad vi kommer att använda. (fri)

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

- TI SmartRF Studio: detta hjälper oss att konfigurera cc1101 -registren enligt våra specifikationer. (fri)

www.ti.com/tool/SMARTRFTM-STUDIO

- Joniskt: för att bygga appen. Du kan välja mellan att bygga inbyggda appar, men Ionic tillåter oss att köra vår app på både Android- och IOS -enheter, med en enda kod. Prestationen eftersträvas inte i vårt fall. (fri)

ionicframework.com/

- Din favorit idé …

Steg 2: Spionera fjärrkontrollen

Spionera fjärrkontrollen
Spionera fjärrkontrollen
Spionera fjärrkontrollen
Spionera fjärrkontrollen
Spionera fjärrkontrollen
Spionera fjärrkontrollen

Vi börjar med att observera data som fjärrkontrollens kommandon producerar. För att göra detta använder vi en rtl-sdr-dongel och antenn:

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

Genom att följa denna länk hittar du MATLAB -paketet, samt en gratisbok som förklarar alla förutsättningar med deras förklaring. För att sammanfatta vad som berör oss är transiteringsdata i form av en IQ-signal: en "I" -fasdata, kombinerad med en "Q" -kvadraturdata. Denna metod underlättar telekommunikation. Vi kommer bara att vara intresserade av att ta emot signalen i fas. Vi kommer nu att samla in fysisk och digital information på fjärrkontrollen. Om du kan hitta lite dokumentation om det, kommer det att bli lättare. Jag hittade ingen. För att temporärt kunna observera signalen måste vi först veta vad som är frekvensbäraren för den utsända signalen. Vi kommer att använda exemplet som medföljer paketdokumentationen "Spektralanalys med RTL-SDR-radio" för att veta exakt vid vilken frekvens vi observerar en toppeffekt när vi skickar ett kommando. I mitt fall är det 868,22 MHz. "Standard" -frekvenserna för denna typ av applikationer är cirka 868 MHz.

Med dessa indikationer kommer vi att kunna skriva en MATLAB -kod för att återställa data. Den här är bifogad på foto och kommenterad. Resultatet gör att vi kan hitta typen av modulering: genom att hämta rå information, visa resultatet strax efter att vi har återställt den verkliga delen av signalen, kan vi utläsa att det är en ASK / OOK modulation. Vi observerar faktiskt att frekvensen är invariant, men signalen har bara två amplituder: en noll och en fast. Resten av koden gör att vi kan återställa kuvertet för den mottagna signalen, som är lättare att läsa för att känna till spåren. När det väl visas kan vi bestämma basbandsmodulationen: detta är en Manchester -kodning (se bifogad bild). Vi kan också härleda överföringshastigheten (symboler per sekund). All denna information samlas in, vi kan känna dataramen. I mitt fall är de hittade bytena: 249, 39, 75, 178, 45, 200 och repeterade flera gånger för att säkerställa att kommandot mottas väl. Lyckligtvis rullar inte koden, dataramen är alltid densamma.

Steg 3: Skicka samma dataramar

Skicka samma dataramar
Skicka samma dataramar
Skicka samma dataramar
Skicka samma dataramar
Skicka samma dataramar
Skicka samma dataramar

Texas Instruments cc1101 är så flexibel att du fortfarande kommer att uppnå ditt mål, även om inställningarna du hittade i föregående steg är helt annorlunda än mina. Du kommer verkligen att se i dokumentationen, sidan 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) att den gör det möjligt att utföra NRZ, Manchester, FSK, ASK/OOK -modulering för att nå frekvenserna runt 433 MHz eller 868 MHz, och många andra saker. Jag råder dig att läsa dokumentationen för att bekanta dig med denna modul.

På den här länken hittar du som ett exempel Loboris arbete om konstruktion av funktioner med denna modul:

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

Vi kommer att skriva vår kod för vår esp32 med esp-idf verktygskedjan (se länkar i det första steget). Du kan lägga till filerna för länken i komponenternas underkatalog för ditt projekt. För att korrekt konfigurera vår cc1101 måste vi fixa dess register. Texas Instruments förser oss med programvara som ger oss värdet på registren enligt vår konfiguration: SmartRF Studio.

Angående mig indikerar jag för programvaran att jag önskar en Manchester -kodning, att min bärfrekvens är 868,22 MHz, att min typ av modulering är ASK / OOK … Jag låter dig ange dina parametrar. I det fall din basbandskodning inte är tillgänglig kan du överväga NRZ -kodning genom att korrekt öka baudhastigheten och anpassa datan.

När du har definierat dina värden har du flera val när det gäller användning av modulen: du kan använda de funktioner som jag har länkat till dig, eller vad jag gjorde, ta bara inspiration från denna kod för att konfigurera allt på ett mer brutalt sätt (se bifogade bilder), och använd bara det vi behöver.

Eftersom cc1101 -chipet kommunicerar med SPI, hittar du i länken till exempelkoden rubrikfilen "spi_master_lobo.h", som innehåller fler enklare funktioner för att använda SPI än om du bara måste använda den med verktygskedjan. Jag förenar dig med fotot schemat för CC1101 -kommunikationen i SPI, foto taget från sidan 30 i CC1101 -databladet. De fyra ledningar som presenteras är: CS (Chip Select eller SS: Slave Select, eller här CSn), CLK (eller SCLK, klockan, tillhandahållen av mastern), MISO (eller SO, Master In Slave Out) och MOSI (eller SI, Master Out Slave In). I vårt fall är master ESP32, och slaven är CC1101. Kommunikation startar när CS -pinnen är låg i allmänhet.

Glöm inte att aktivera kompileringsalternativen för menykonfigurationen C ++ - undantag för kompilering.

Steg 4: Anslut till systemet

Anslut till systemet
Anslut till systemet
Anslut till systemet
Anslut till systemet
Anslut till systemet
Anslut till systemet

Om din kod fungerar har du gjort det väsentliga. I den här delen kommer vi att fokusera på hur man skapar en telefonapp som är ansluten till systemet. Den mest intressanta lösningen är att ansluta via bluetooth, eftersom det tillåter användning av ett lågeffektsprotokoll: Bluetooth Low Energy (BLE). Hierarkiprofilen visas på den bifogade ritningen: vi kommer att läsa och skriva kommandot i en egenskap hos en tjänst. Och naturligtvis är vår esp32 och vår smartphone utrustad med bluetooth.

Det här steget är uppdelat i två delar: esp32 -delen och appdelen. Bilden bifogar visar och förklarar huvuddelarna i koderna.

Du kan generera dina UUID genom att följa denna länk:

www.uuidgenerator.net/

Det här är identifierarna som ger åtkomst till tjänsterna och funktionerna i vår BLE -profil.

Om esp32 BLE -koden gjorde Kolban ett bra arbete med att göra alla dessa C ++ - funktioner på hög nivå kompatibla:

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

Du kan lägga dessa filer i underkatalogen komponenter. Annars behöver du mer tid för att förstå hur du använder BLE med esp-idf verktygskedjan.

Sammanfattningsvis vad du ser i koden skapar vi en server, en tjänst och en egenskap med tillhörande UUID: er, och vi lägger till en omdefinierad återuppringningsklass, med en associerad metod för skrivning: när vi får "O" tecken, skickar vi ett skrivkommando till cc1101.

Naturligtvis, glöm inte att aktivera Bluetooth i komponentkonfigurationen i Menuconfig.

Om appdelen kommer vi att använda Framework Ionic. Du kan hitta mer information om det i länken som presenterades i det första steget och för mer information om hur du använder BLE med Ionic:

ionicframework.com/docs/native/ble/

Och exempel, skrivna av don:

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

Du kan till exempel redigera exemplet "Anslut". Vi skannar enheter på en första sida och når en andra sida om vi väljer vår enhet. Vi öppnar sedan ett gränssnitt där du kan lägga till en knapp med metoden som presenteras på bilden: den skickar vårt kommando "O" med lämpliga UUID: er. Du kan också lägga till konstruktören på den första sidan metoden "aktivera" och be om att aktivera bluetooth i början av applikationen.

Jag rekommenderar dig starkt att utforska den joniska webbplatsen och upptäcka alla komponenter (knappar, varningar, kryssrutor …) för att förbättra din applikation:

ionicframework.com/docs/components/#overvi…

Steg 5: Optimera strömförbrukningen

Optimera strömförbrukningen
Optimera strömförbrukningen
Optimera strömförbrukningen
Optimera strömförbrukningen

Vi började arbeta med låg förbrukning, så låt oss jobba igenom.

Verktygskedjan esp-idf låter oss använda ett konfigurations-GUI, menykonfigurationen: många parametrar kan sänka esp32-förbrukningen. Först och främst, eftersom vi inte behöver Wifi, kan vi inaktivera det i komponentkonfigurationen. I samma mapp, i FreeRTOS, kan du välja "Kör FreeRTOS endast på första kärnan. Sedan kan du i ESP-specifik sänka CPU-frekvensen till 80 MHz. Alla funktionaliteter fungerar fortfarande med denna klockhastighet. Slutligen kan du markera "Aktivera Ultra Low Power (ULP) coprocessor. Denna konfiguration gör att den nuvarande förbrukningen går från cirka hundra mA till cirka trettio mA. Det här är fortfarande för mycket …

ESP32 klarar djup sömn. Endast lågenergikärnan är på och väntar på att vakna.

Se denna länk nedan för mer information:

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

Tyvärr, i den senaste tillgängliga versionen av esp-idf verktygskedjan (3.0) är de enda vakna som finns tillgängliga av tidtagare och av GPIO-störningar. Lyckligtvis lovar Espressif oss att BLE vaknar i nästa version (3.1).

Du kan också sätta CC1101 i viloläge genom att skicka in SPI rätt kommando för att stänga av enheten (se cc1101 -datablad, SPWD -kommandot, sidan 51). För att sätta enheten i viloläge eller för att väcka den kan du sätta Chip Select -stiftet på SPI -stiften lågt och högt (mer information i databladet).

Dessa sista konfigurationer bör kunna få förbrukningen av systemet att passera under milliampere …

Slutligen, för att få systemet att hålla så länge som möjligt utan att ladda, eller till och med nå en månads autonomi, välj 3,7V-batteriet med flest milliampere per timme. Genom att mäta systemets strömförbrukning, med displayen av en generator eller en amperemeter ansluten i serie före din + pol på ditt system, kan du uppskatta den tid som ditt system kommer att hålla!

Rekommenderad: