WiFi Jammer met Raspberri Pi en Kali-Pi Sticky Fingers 2/3
Welkom bij het 2e deel van onze serie “WiFi Jammer met Raspberri Pi en Kali-Pi Sticky Fingers”. In de eerst post zijn we aan de slag gegaan om Kali-Pi Sticky Fingers te installeren en configureren op de Raspberry Pi. In deze post gaan we beginnen aan de echt leuke dingen. We gaan namelijk het Touch Screen verbinden en werkend maken. Ook gaan we Sticky Fingers configureren om te booten met de Raspberry Pi.
Zoals al gezegd gaan we het LCD scherm verbinden met de Raspberry Pi. Doe dit uiteraard pas als de Pi uitgeschakeld is.
Als we nu de Raspberry Pi opstarten hebben we slechts “wit” beeld:”
Laten we het beeldscherm eens configureren. Om dit te doen vullen we het commando “kalipi-tft-config” in.
Vervolgens kiezen we voor “Setup Display”. Op het vervolgscherm krijg je de keuze uit vele merken touchscreens. In mijn geval kies ik voor S020 – Adafruit.
Vervolgens kies ik voor 28c het “Adafruit 2.8” capacitive touchscreen”.
En ik kies er vervolgens voor om het scherm 90 graden te roteren (ROT000) zodat het “breedbeeld” wordt:
Als “home” directory gebruik ik de default, dus “/root”.
En vervolgens kies ik ervoor om de gemaakte setup te activeren:
Vervolgens gaan we uit de setup en rebooten we de Raspberry Pi. En voilà… we hebben een werkend scherm!
Nu het scherm werkt gaan we nog een paar tweaks doen. We starten weer het configuratieprogramma “kalipi-tft-config” en kiezen er nu voor optie 4 om de nieuwste overlays te downloaden:
Daarna kiezen we voor optie 6, “Update kalipi-tft-config”.
Nu starten we de normale config
Hier kiezen we ervoor om automatisch in te loggen na het booten in de console environment met de user “Pi”:
- 3 Boot Options
- B1 Desktop / CLI
- B2 Console Autologin
- Voer als gebruikersnaam “pi” in
Na het rebooten logt de Raspberry Pi automatisch in op de CLI met de user “pi”. Het profiel van de user “pi” is default al voor geconfigureerd om het KaliPi Sticky Menu te starten.
Om je TFT scherm tijdelijk uit te schakelen of om de weergave via de HDMI poort te laten sturen moet je het volgende bestand editten:
nano /home/pi/Kali-Pi/menu |
Om het Sticky Fingers menu handmatig te starten type je:
/home/pi/Kali-Pi/menu |
Nu hebben we het Sticky Fingers menu werken na het booten. Mooi! Nu moeten we de volgende taken nog uitvoeren:
- Maken Jammer script (en aansluiten TP-Link Dongel)
- Script koppelen aan het Sticky Fingers menu
- LED aansluiten en deze laten knipperen tijdens het uitvoeren van het Jammer script
- Het script zo maken dat we tijdens het Jammen ook handshakes kunnen achterhalen en opslaan
Het uiteindelijke script zal een Python script zijn. In deze post wil ik het Sticky Fingers menu alvast compleet maken en ervoor zorgen dat het script gekoppeld is. Op die manier kunnen we ons in Post 3 bekommeren om het script en de functies in het script. In deze post gaan we dus nog 3 taken doen.
- Aansluiten LED
- Aansluiten TP-Link WiFi Dongel
- Aanmaken script en koppelen aan Sticky Fingers
Aansluiten LED
Nu gaan we het LED lichtje koppelen. Het is een simpel rood LEDje welke we koppelen met signaalpin nummer 12 (18 is al in gebruikt door het TFT scherm). Pin 12 is net als 18 een PWM (Pulse Width Modulation) pin waarbij we kunnen schakelen tussen 0V, 3.3V en alle waardes ertussen. Een PWM pin kan dus ook het LEDje “dimmen”. Dit gaan we niet gebruiken in dit project maar wel als we dit project gaan uitbreiden. De korte pin sluiten we uiteraard aan op een ground aansluiting. Ook plaatsen we een transistor van 150/220 Ohm tussen het LEDje en de Raspberry Pi zodat het LEDje niet overbelast wordt en klapt.
In de testopstelling lijkt dit prima te werken:
De Python code die ik gebruikt heb om het LEDje te testen is:
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) GPIO.setup(12,GPIO.OUT) print "LED on" GPIO.output(12,GPIO.HIGH) time.sleep(10) print "LED off" GPIO.output(12,GPIO.LOW) |
Bovenstaande code schakelt het LEDje 10 seconde lang aan en schakelt hem daarna weer uit.
Het voordeel van het display is dat deze ook voorzien is van GPIO pinnen welke we kunnen gebruiken als het display is aangesloten (zonder deze zouden we geen GPIO pin meer overhebben na het aansluiten van het display):
Echter zijn de jumper kabels te hoog en zitten deze in de weg als het scherm aangesloten is. Daarom maken we onze eigen custom LED incl. transistor welke er wel prima tussen past:
En als we het nu testen werkt de aansturing prima:
Aansluiten TP-Link WiFi Dongel
Nu gaan we de TP-Link WiFi dongel aansluiten. Dit is uiteraard simpel. Stop de USB WiFi dongel in de Raspberry Pi.
Nu moeten we de WiFi dongel echter nog wel werkend krijgen. In Kali Linux is deze TP-Link TL-WN722N adapter echt plug & play. We zien hem namelijk als verbonden USB device. Dit kun je controleren met het “lsusb” commando:
En we zien hem als beschikbare netwerkadapter. Dit kun je controleren met het “ip link show” commando:
Mocht je USB WiFi dongle niet herkend worden dan is het raadzaam om eerst je OS te updaten en om vervolgens de juiste drivers te zoeken en te installeren.
Aanmaken script en koppelen aan Sticky Fingers
Nu wordt het zaak dat we een custom script kunnen koppelen aan het Sticky Fingers menu. Het script wordt een Python script. Laten we in dit voorbeeld het Python script gebruiken welke we zojuist gebruikt hebben om het LED lampje te testen. Deze staat in de “/opt/bin” folder en heet “controlled.py”.
Nu gaan we het menu aanpassen. Deze is te vinden op de volgende locatie:
/home/pi/Kali-Pi/Menus |
Hier bewerken we het eerste menu. Hier halen we de VNC Server button weg. We bewerken het volgende bestand:
nano menu-1.py |
Op regel 38 veranderen we de naam “VNS Server” naar “WiFi Jammer”:
Vervolgens passen we het block “if number == 5” v.a. regel 89 aan naar:
if number == 5: if button5.disable == 1: return # WiFi Jammer kalipi.run_cmd("pkill /opt/bin/controlled.py") |
We kunnen nu de LED besturen v.a. het menu:
Laten we het geheel wat opleuken door ook een script aan te maken waarmee we het LEDje kunnen uitschakelen als het script al draait.
Nu gaan we het menu script weer aanpassen. Allereerst veranderen we de VNC functie bovenin (regel 11) naar een WiFi Jammer status checker:
# Check WiFi Jammer status def check_jammer(): if 'python /opt/bin/controlled.py' in commands.getoutput('/bin/ps -ef'): return True else: return False |
Op regel 222 verander je ook de regel “if check_vnc():” naar “if check_jammer():”.
Ook veranderen we op regel 39 de button initialisatiecode naar vet volgende zodat de borders van de button ook rood zijn:
button5 = Button(labelPadding * " " + "WiFi Jammer", originX + buttonWidth + spacing, originY + buttonHeight + spacing, buttonHeight, buttonWidth, red, tron_whi, labelFont) |
Vervolgens veranderen we de zojuist gemaakt buttoncode v.a. regel 89 naar:
if number == 5: if button5.disable == 1: return # WiFi Jammer if check_jammer() == True: #Stop Jammer Script if running button5.fntColor = tron_whi button5.draw() kalipi.run_cmd("pkill python /opt/bin/controlled.py") pygame.display.update() else: #Start Jammer Script button5.fntColor = red button5.draw() pygame.display.update() #prog="python /opt/bin/controlled.py" script="python /opt/bin/controlled.py" kalipi.run_cmd(script) button5.fntColor = tron_whi button5.draw() pygame.display.update() #return |
Als het script draait zal de tekst rood worden tijdens de uitvoering. Als het script al draait op de achtergrond zal het script gestopt worden.
Op dit moment hebben we dus een prima werkende omgeving. Het is nu zaak dat we een WiFi Jammer script gaan maken en alles in elkaar puzzelen voor de gewenste werking. Dit alles kun je lezen in het volgende en laatste deel.
Stay tuned…