SPECCY

WIFI Spectrum Analyser

Speccy is een python 1 script waarmee je compatibele WiFi adapters (zoals de atheros/Qualcomm ath9_htc) kunt gebruiken als een Spectrum Analyser. Dit zal voor de puristen onder ons niet 100% kwalificeren als een CLI-Tool omdat het een GUI venster (of X window) opent om de spectrum analyse te tonen (maar python zelf is wel een CLI tool).

Waarom gebruik je een spectrum analyser ?

Een spectrum analyser laat je al het “verkeer” op een bepaalde frequentie zien (in dit geval het verkeer op de 2.4Ghz frequentie die WiFi gebruikt, de ath9_htc is geen dual-band adapter zoals de ath10 en kan dus het verkeer op de 5Ghz frequentie niet tonen). Maar we weten nog steeds niet waarom het belangrijk is. De reden waarom het belangrijk is is simpelweg omdat het ons toestaat om bij problemen met WiFi te kijken of er geen storing (noise) is die onze problemen veroorzaakt.

Bijvoorbeeld: Een draadloze telefoon, wifi camera’s, microgolf-ovens/magnetron’s, etc. gebruiken ook deze frequenties (en natuurlijk al je buren die wifi gebruiken).

De ath9 of ath10 met Speccy is geen ideale oplossing, maar in vergelijking met commerciële spectrum analysers (zoals de Wi-Spy 2 adapter met Chanalizer software van Metageek) die tot meer dan € 1.000 kunnen kosten, is het een betaalbare oplossing voor ons Hobby gebruikers.

Wat hebben we nodig ?
  • Een WiFi adapter met compatibele chipset (onderaan deze Debian WIKI pagina staan er enkele vermeld). Zelf gebruik ik een N300 van Technoethical (dit is een re-branded TP-Link adapter (refurbished) waarvan Technoethical garandeert dat er een ath9 chipset in zit. Als je een “gewone” TP-Link adapter koopt kan het zijn dat deze een andere chipset hebben. De Technoethical adapter is wel niet de goedkoopste, maar ze schenken een deel van de opbrengst aan de Free Software Foundation. En het kan hýýl lang duren voor je de bestelde adapter thuis geleverd krijgt (was bij mij meer dan een maand, en ze worden verzonden vanuit Europa). Denk dus goed na voor je besluit een adapter te kopen, en misschien kun je in jouw locale computerwinkel wel eerst eens testen of de adapter de correcte chipset heeft, voordat je hem koopt.
  • Linux (natuurlijk ;-)).
  • De Atheros Firmware (hoewel de ath9_htc firmware free software is, zit deze in het atheros-firmware pakket in Debian non-free (dus je moet non-free toevoegen aan /etc/apt/sources.list
  • python en python-gi-cairo (o.a.) voor Speccy

    Speccy zelf natuurlijk : https://github.com/bcopeland/speccy

    Een kernel met debugfs support voor ath9 of ath9_htc. Dit is niet standaard bij een Debian kernel, dus je moet een “custom” kernel maken en zorgen dat debugfs aan staat in de nieuwe kernel.

    Als je een distro hebt waarbij debugfs standaard is voorzien hoef je geen custom kernel te maken (ik ben helaas niet op de hoogte over er distro’s zijn die dit standaard hebben).

Een probleem met deze adapter op Debian (Stretch en Buster) is dat deze door Debian een te lange naam worden gegeven (bijv. wlpx4d500f4543) het gevolg hiervan is dat de adapter niet zal werken. Je zal merken dat je de WiFi netwerken kunt vinden (SSID) en dat je verbinding kunt maken (na ingeven WPA wachtwoord bijv.) maar onmiddellijk na het maken van de verbinding wordt deze automatisch weer verbroken (dit kun je zien met DMESG). Het probleem blijkt de lange naam te zijn. Een optie die bij mij werkt is het volgende :

# ln -s /dev/null /etc/systemd/network/99-default.link

in mijn geval zorgt dit ervoor dat de atheros adapter nu de naam wlan1 krijgt en je de adapter nu wél kunt gebruiken (ook met aircrack-ng bijv. zo kun je de adapter ook in monitor modus zetten en in monitor modus scannen met airodump-ng).

Als alles correct geïnstalleerd is start je Speccy met het volgende commando: $ sudo python speccy.py wlan1

Ik ga er vanuit dat je dit doet vanuit de Speccy directory én dat jouw adapter de naam wlan1 heeft gekregen. Ook zal dit niet werken als de adapter in monitor modus staat !

Als alles correct geïnstalleerd is start je Speccy met het volgende commando: $ sudo python speccy.py wlan1

Figuur 1. $ sudo python speccy.py wlan1

Speccy heeft zeer weinig uitleg en geeft enkel aan welke toetsen wat doen, zonder echt uit te leggen wat bepaalde dingen precies inhouden. Hieronder staat een video van Speccy (speccy.mkv) in actie. In de grijze balk die soms op het scherm verschijnt wordt de toets weergegeven die word ingedrukt en in Speccy zul je dan het resultaat zien. videobestand

bekijk de manpages of infopages voor meer informatie

1 Python is een "geïnterpreteerde" programmeertaal, in tegenstelling tot bijv C en C++ welke "gecompileerde" programmeertalen zijn.
2 Deze zijn ook niet compatibel met Linux, dus zelfs al zou je deze optie overwegen zal je tenminste een Dual-Boot met Windows™ moeten hebben