Talaan ng mga Nilalaman:

I-hack ang Iyong Garage Door: 5 Mga Hakbang
I-hack ang Iyong Garage Door: 5 Mga Hakbang

Video: I-hack ang Iyong Garage Door: 5 Mga Hakbang

Video: I-hack ang Iyong Garage Door: 5 Mga Hakbang
Video: Hacking tool exposed by master hacker OccupyTheWeb #hackingtools #cybersecurity 2024, Hulyo
Anonim
I-hack ang Iyong Garage Door
I-hack ang Iyong Garage Door
I-hack ang Iyong Garage Door
I-hack ang Iyong Garage Door
I-hack ang Iyong Garage Door
I-hack ang Iyong Garage Door

Sino ang hindi pinangarap na umuwi sa pamamagitan lamang ng isang app ng telepono, o makinig at makuhang muli ang mga data tram? Masaya akong maibabahagi sa iyo ang aking napagtanto, at kung paano ako nagpatuloy. Sinimulan ko ang proyektong ito pagkatapos ng pangalawang pagkakataon nakalimutan ko ang aking mga susi …

Siyempre, ang pag-encode, ang uri ng modulasyon, ang dalas ng carrier, ang impormasyon ng koneksyon ng bluetooth, at ang mga datas na ipapakita ko halimbawa ay hindi ang mga orihinal, mas gusto kong walang mga bisita;-).

Nalalapat ang application na ito sa anumang bagay na may kakayahang makatanggap ng digital na impormasyon sa pamamagitan ng mga electromagnetic na alon (pintuan ng garahe, kotse, ilang mga shutter…). Ang buong sistema ay binubuo ng isang bagay na konektado sa pamamagitan ng bluetooth sa isang telepono, ang object na ito ay makapagpadala ng parehong mga frame bilang ang remote na nauugnay sa kung ano ang nais naming i-hack. Inilagay ko ang bagay na ito sa aking garahe, at makakonekta ako rito mula sa labas.

Hakbang 1: Equipement

Kagamitan
Kagamitan
Kagamitan
Kagamitan

Mga wikang ginamit: C ++, MATLAB, Typescript, C, html.

Pangunahing kaalaman sa digital electronics at telecommunications / signal processing.

Gastos: mas mababa sa $ 35.

Mga kinakailangan sa hardware:

- NooELEC NESDR: para sa pagkuha ng data. Ang murang module na ito ay gumaganap ng isang digital demodulation, kaya't ang mataas na kakayahang dalhin. Ang modelo na ito ay katugma sa MATLAB. ($ 18.95)

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

- Wemos Lolin32 lite: ang esp32 na ito ay isang murang microcontroller, nilagyan ng Wifi at Bluetooth. Hindi namin gagamitin ang Wifi sa application na ito, ngunit ito ay higit na maiisip. ($ 4.74)

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

- CDSENET cc1101: ang radio transmitter na ito ay nagbibigay sa atin ng matinding kakayahang umangkop, mula sa napiling dalas ng carrier hanggang sa uri ng modulasyon. ($ 2.63)

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

- Mga wire, header, equipement ng hinang, 3.7V lipo na baterya para sa awtonomiya, posibleng oscilloscope, at / o analisador ng lohika para sa pag-debug, at hindi sinasadya, isang smartphone…

Mga kinakailangan sa software:

- MATLAB / Simulink: para sa pagkuha ng data. Maaaring magamit ang iba pang mga libreng alternatibong software, tulad ng Audacity para sa visualization ng data. (lisensya)

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

- esp-idf toolchain: gagamitin ito para sa pagprograma ng esp32. Maaari ring magamit ang ideyang Arduino, ngunit hindi nito pinapayagan ang mas maraming kalayaan kaysa sa gagamitin namin. (libre)

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

- TI SmartRF Studio: makakatulong ito sa amin na mai-configure ang mga rehistro ng cc1101, ayon sa aming mga pagtutukoy. (libre)

www.ti.com/tool/SMARTRFTM-STUDIO

- Ionic: para sa pagbuo ng app. Maaari kang pumili ng pagbuo ng mga katutubong app, ngunit pinapayagan kami ng Ionic na patakbuhin ang aming app sa parehong mga Android at iOS device, na may isang code lamang. Ang pagganap ay hindi hinahangad sa aming kaso. (libre)

ionicframework.com/

- Ang iyong paboritong id…

Hakbang 2: Spying the Remote Control

Ang pagpaniid ng Remote Control
Ang pagpaniid ng Remote Control
Ang pagpaniid ng Remote Control
Ang pagpaniid ng Remote Control
Ang pagpaniid ng Remote Control
Ang pagpaniid ng Remote Control

Magsisimula kami sa pamamagitan ng pagmamasid sa data na ginawa ng mga utos ng remote control. Upang magawa ito, gagamit kami ng isang rtl-sdr dongle at antena:

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

Sa pamamagitan ng pagsunod sa link na ito, mahahanap mo ang MATLAB package, pati na rin isang libreng libro na nagpapaliwanag sa lahat ng mga pricipes sa kanilang paliwanag. Upang buod kung ano ang may kinalaman sa amin, ang data ng transit ay nasa anyo ng isang senyas ng IQ: isang "I" na in-phase na data, na sinamahan ng isang "Q" na quadrature data. Ang pamamaraang ito ay nagpapadali sa telecommunications. Magiging interesado lamang kami sa pagtanggap ng signal sa phase. Magtipon kami ngayon ng pisikal at digital na impormasyon sa remote control. Kung makakahanap ka ng ilang dokumentasyon dito, mas madali ito. Wala akong nahanap. Upang ma-obserbahan ng pansamantala ang signal, dapat muna nating malaman kung ano ang dalas ng carrier ng nilalabas na signal. Gagamitin namin ang halimbawang ibinigay kasama ang dokumentasyon ng package na "Spectral Analysis sa RTL-SDR Radio", upang malaman nang eksakto kung aling dalas ang sinusunod namin ang isang rurok na lakas kapag nagpapadala kami ng isang utos. Sa aking kaso ito ay 868.22 MHz. Ang mga "pamantayan" na frequency para sa ganitong uri ng mga aplikasyon ay nasa paligid ng 868 MHz.

Sa mga pahiwatig na ito, makakagsulat kami ng isang MATLAB code upang mabawi ang data. Ang isang ito ay naka-attach sa larawan at nagkomento. Pinapayagan ka ng resulta na hanapin ang uri ng modulasyon: sa pamamagitan ng pagkuha ng hilaw na impormasyon, pagpapakita ng resulta pagkatapos lamang makuha ang totoong bahagi ng signal, mahihinuha natin na ito ay isang ASK / OOK modulasyon Sa katunayan, napagmasdan namin na ang dalas ay walang pagbabago, gayunpaman, ang signal ay may dalawang amplitude lamang: isang null, at isang naayos. Ang natitirang code ay nagbibigay-daan sa amin upang makuha ang sobre ng natanggap na signal, na ginagawang mas madaling basahin upang malaman ang trame. Kapag naipakita na, matutukoy natin ang pagbubuo ng baseband: ito ay isang Manchester coding (tingnan ang nakalakip na larawan). Maaari din nating mabawasan ang rate ng baud (mga simbolo bawat segundo). Ang lahat ng impormasyong ito ay natipon, maaari naming malaman ang frame ng data. Sa aking kaso, ang mga nahanap na byte ay: 249, 39, 75, 178, 45, 200, at na-repet ng maraming beses, upang matiyak na ang utos ay mahusay na natanggap. Sa kasamaang palad, ang code ay hindi lumiligid, ang data frame ay palaging pareho.

Hakbang 3: Ipadala ang Parehong Mga Frame ng Data

Ipadala ang Parehong Mga Frame ng Data
Ipadala ang Parehong Mga Frame ng Data
Ipadala ang Parehong Mga Frame ng Data
Ipadala ang Parehong Mga Frame ng Data
Ipadala ang Parehong Mga Frame ng Data
Ipadala ang Parehong Mga Frame ng Data

Ang Texas Instruments cc1101 ay napaka-kakayahang umangkop na makakamit mo pa rin ang iyong layunin, kahit na ang mga setting na iyong natagpuan sa nakaraang hakbang ay ganap na naiiba sa minahan. Sa katunayan, makikita mo sa dokumentasyon, pahina 2 (https://www.ti.com/lit/ds/symlink/cc1101.pdf) na pinapayagan nitong maisagawa ang modular na NRZ, Manchester, FSK, ASK / OOK, upang maabot ang mga frequency sa paligid ng 433 MHz o 868 MHz, at maraming iba pang mga bagay. Pinapayuhan ko kayo na basahin ang dokumentasyon upang maging pamilyar sa modyul na ito.

Sa link na ito makikita mo bilang isang halimbawa ang gawain ni Loboris hinggil sa pagtatayo ng mga pagpapaandar gamit ang modyul na ito:

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

Isusulat namin ang aming code para sa aming esp32 gamit ang esp-idf toolchain (tingnan ang mga link ng unang hakbang). Maaari mong idagdag ang mga file ng link sa subdirectory ng mga bahagi ng iyong proyekto. Upang maayos na mai-configure ang aming cc1101, kakailanganin naming ayusin ang mga rehistro nito. Nagbibigay sa amin ang Texas Instruments ng software na nagbibigay sa amin ng halaga ng mga rehistro ayon sa aming pagsasaayos: SmartRF Studio.

Tungkol sa akin, ipinapahiwatig ko sa software na nais ko ang isang pag-coding sa Manchester, na ang dalas ng aking carrier ay 868.22 MHz, na ang aking uri ng modulasyon ay ASK / OOK … Pinapayagan akong ipasok ang iyong mga parameter. Sa kaso kung saan hindi magagamit ang iyong pag-encode ng baseband, maaari mong isaalang-alang ang pag-encode ng NRZ, sa pamamagitan ng maayos na pagtaas ng rate ng baud, at pagbagay sa mga datas.

Kapag natukoy mo na ang iyong mga halaga, mayroon kang maraming mga pagpipilian hinggil sa paggamit ng module: maaari mong gamitin ang mga pagpapaandar na na-link ko sa iyo, o kung ano ang ginawa ko, kumuha lamang ng inspirasyon mula sa code na ito, upang mai-configure ang lahat nang higit pa brutal na paraan (tingnan ang mga nakalakip na larawan), at ginagamit lamang ang kailangan namin.

Tulad ng chip ng cc1101 na nakikipag-usap sa pamamagitan ng SPI, mahahanap mo sa link ng halimbawa ng code ang "spi_master_lobo.h" na header file, na naglalaman ng mas madaling mga pag-andar para sa paggamit ng SPI kaysa sa kung gagamitin mo lamang ito sa toolchain. Sumali ako sa iyo sa larawan ng iskema ng komunikasyon CC1101 sa SPI, larawan na kuha mula sa pahina 30 ng CC1101 datasheet. Ang apat na wires na ipinakita ay: CS (Chip Select, o SS: Slave Select, o dito CSn), CLK (o SCLK, ang Clock, na ibinigay ng master), MISO (o KAYA, Master In Slave Out), at MOSI (o SI, Master Out Slave In). Sa aming kaso, ang master ay ang ESP32, at ang alipin ay ang CC1101. Nagsisimula ang mga komunikasyon kapag mababa ang pin ng CS, sa pangkalahatan.

Huwag kalimutang paganahin sa mga pagpipilian ng tagatala ng menuconfig ang mga pagbubukod ng C ++ para sa pag-iipon.

Hakbang 4: Kumonekta sa System

Kumonekta sa System
Kumonekta sa System
Kumonekta sa System
Kumonekta sa System
Kumonekta sa System
Kumonekta sa System

Kung gumagana ang iyong code, nagawa mo na ang mahalaga. Sa bahaging ito, magtutuon kami sa kung paano lumikha ng isang app ng telepono na konektado sa system. Ang pinaka-kagiliw-giliw na solusyon ay upang kumonekta sa pamamagitan ng Bluetooth, sapagkat pinapayagan nito ang paggamit ng isang mababang-kapangyarihan na protocol: Bluetooth Low Energy (BLE). Ang hierarchy profile ay ipinapakita sa kalakip na pagguhit: babasahin at isusulat namin ang utos sa isang Katangian ng isang Serbisyo. At syempre, ang aming esp32 at ang aming smartphone ay nilagyan ng bluetooth.

Ang hakbang na ito ay nahahati sa dalawang bahagi: ang bahagi ng esp32, at ang bahagi ng app. Ang naka-attach na larawan ay nagpapakita at nagpapaliwanag ng mga pangunahing bahagi ng mga code.

Maaari kang makabuo ng iyong mga UUID sa pamamagitan ng pagsunod sa link na ito:

www.uuidgenerator.net/

Ito ang mga pagkakakilanlan na magbibigay ng pag-access sa mga serbisyo at tampok ng aming BLE profile.

Tungkol sa esp32 BLE code, ang Kolban ay gumawa ng isang mahusay na gawain sa paggawa ng lahat ng mga mataas na antas ng C ++ function na katugma:

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

Maaari mong ilagay ang mga file na ito sa subdirectory ng mga bahagi. Kung hindi man, kakailanganin mo ng mas maraming oras upang maunawaan kung paano gamitin ang BLE sa esp-idf toolchain.

Bilang buod ng kung ano ang makikita mo sa code, lumilikha kami ng isang Server, isang Serbisyo, at isang Katangian, kasama ang mga nauugnay na UUID, at nagdaragdag kami ng isang muling tinukoy na klase ng callback, na may isang kaugnay na pamamaraan sa pagsulat: kapag natanggap namin ang "O" character, nagpapadala kami ng isang sumulat na utos sa cc1101.

Siyempre, huwag kalimutang paganahin ang Bluetooth sa Component config ng Menuconfig.

Tungkol sa bahagi ng app, gagamitin namin ang Framework Ionic. Maaari kang makahanap ng higit pang mga infos tungkol dito sa link na ipinakita sa unang hakbang, at para sa higit pang mga detalye tungkol sa kung paano gamitin ang BLE sa Ionic:

ionicframework.com/docs/native/ble/

At mga halimbawa, isinulat ni don:

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

Maaari mong i-edit halimbawa ang halimbawang "Kumonekta". Sinusuri namin ang mga aparato sa isang unang pahina, at naabot ang pangalawang pahina kung pipiliin namin ang aming aparato. Pagkatapos ay mai-access namin ang isang interface kung saan maaari kang magdagdag ng isang pindutan kasama ang pamamaraang ipinakita sa larawan: nagpapadala ito ng aming utos na "O" kasama ang mga naaangkop na UUID. Maaari mo ring idagdag sa tagabuo ng unang pahina ang pamamaraang "paganahin", na hinihiling na buhayin ang bluetooth sa simula ng application.

Masidhing inirerekumenda ko sa iyo upang galugarin ang Ionic website, at upang matuklasan ang lahat ng mga Component (mga pindutan, alerto, checkbox …) upang mapahusay ang iyong aplikasyon:

ionicframework.com/docs/components/#overvi…

Hakbang 5: I-optimize ang Pagkonsumo ng Lakas

I-optimize ang Pagkonsumo ng Lakas
I-optimize ang Pagkonsumo ng Lakas
I-optimize ang Pagkonsumo ng Lakas
I-optimize ang Pagkonsumo ng Lakas

Nagsimula kaming magtrabaho sa mababang pagkonsumo, kaya't gumana tayo.

Pinapayagan kami ng toolchain ng esp-idf na gumamit ng isang pagsasaayos na GUI, ang menuconfig: maraming mga parameter ang maaaring magpababa ng pagkonsumo ng esp32. Una sa lahat, dahil hindi namin kailangan ang Wifi, maaari naming hindi paganahin ito sa config ng Component. Sa parehong folder, sa FreeRTOS, maaari mong piliin ang "Patakbuhin ang FreeRTOS lamang sa unang core. Pagkatapos, sa tukoy ng ESP, maaari mong babaan ang dalas ng CPU sa 80 MHz. Ang lahat ng mga functionnality ay gagana pa rin sa bilis ng orasan na ito. Sa wakas, maaari mo lagyan ng tsek ang "Paganahin ang Ultra Low Power (ULP) Coprocessor. Ginagawa ng pagsasaayos na ito ang kasalukuyang pagkonsumo mula sa halos isang daang mA hanggang sa tatlumpung mA. Sobra pa rin ito …

Kakayanin ng ESP32 ang mahimbing na pagtulog. Ang pangunahing lakas lamang na nasa at naghihintay para sa isang paggising.

Tingnan ang link na ito sa ibaba para sa higit pang mga detalye:

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

Sa kasamaang palad, sa huling magagamit na bersyon ng esp-idf toolchain (3.0), ang tanging magagamit na paggising ay sa pamamagitan ng mga timer at ng mga pagkagambala ng GPIO. Sa kabutihang palad, ipinangako sa amin ng Espressif na BLE gumising sa susunod na bersyon (3.1).

Maaari mo ring ilagay ang CC1101 sa isang mode ng pagtulog, sa pamamagitan ng pagpapadala sa SPI ng tamang utos upang magaan ang aparato (tingnan ang cc1101 datasheet, ang utos ng SPWD, pahina 51). Para sa paglalagay ng aparato sa mode ng pagtulog o para sa paggising nito, maaari mong mailagay nang mababa pagkatapos ay mataas ang Chip Select pin ng mga SPI pin (higit pang mga infos sa datasheet).

Ang mga huling pagsasaayos na ito ay dapat na magawa ang pagkonsumo ng system na pumasa sa ibaba ng milli-ampere…

Panghuli, upang ang sistema ay tumagal hangga't maaari nang hindi nag-recharging, o kahit na umabot sa isang buwan ng awtonomiya, piliin ang baterya ng 3.7V na may pinakamaraming milli-amperes bawat oras. Sa pamamagitan ng pagsukat sa pagkonsumo ng kuryente ng iyong system, kasama ang pagpapakita ng isang generator o isang ammeter na konektado sa serye bago ang iyong + poste ng iyong system, maaari mong tantyahin ang oras na tatagal ang iyong system!

Inirerekumendang: