In dit bericht geef ik aan hoe je door middel van de Funcube dongle http://www.funcubedongle.com, osmocom TETRA software http://tetra.osmocom.org/trac/wiki/osmo-tetra en Wireshark http://www.wireshark.org mee kan kijken in een niet versleutelde TETRA protocolstroom.
Disclaimer:
Ongetwijfeld zullen er in deze tekst fouten, vergissingen en typfouten zitten of ben ik zaken vergeten te vermelden. Mocht er iets niet kloppen of heb je vragen, stuur dan een PB of mail, dan kan ik er naar kijken. Verwacht echter geen wonderen, ik doe dit in m'n vrije tijd.
Deze informatie is puur bedoeld voor educatief gebruik en voor eigen risico.
Let op:
- Meeluisteren met C2000 is met de hier beschreven software niet mogelijk. C2000 is versleuteld en de hier beschreven software voorziet niet in de decryptie. (Vraag mij niet om software die dat wel kan.)
- De osmocom software is vrij rudimentair van opzet en draait onder Linux. Enige kennis van dit OS is gewenst.
- Verwacht geen mooie GUIs met betrekking tot osmocom.
- Vooralsnog is meeluisteren niet mogelijk (tenminste: ik heb de codec al wel werkend maar nog niet kunnen testen met live verkeer.)
- PC met een USB aansluiting en een netwerkkaart (voor verbinding met het Internet) met daarop Linux als operating system.
- De Funcube dongle met software
- De osmocom software.
In mijn opstelling maak ik gebruik van Ubuntu 10.04 LTS en daar is deze uitleg op gebaseerd. Mijn ervaring met deze variant van Linux is dat deze vrij eenvoudig is te installeren (ook op een PC waar al Windows staat) en dat het laden van extra software (zogenaamde packages) eenvoudig met de package manager (bijvoorbeeld Synaptic) kan. Door middel van de package manager kan je eenvoudig de benodigde compilers, libraries en andere tools (python) installeren en gaat de installatie van de osmocom software probleemloos (de package manager heeft daar wel een Internetverbinding voor nodig).
Funcube dongle
De Funcube dongle is een SDR in USB dongle formaat. De SDR heeft een bereik van 64 tot 1.700 MHz en kan vanwege de USB interface op veel platformen worden toegepast. Er zijn geen bijzondere drivers voor nodig, omdat de dongle zich gedraagt als geluidskaart. De dongle kan worden besteld bij de maker via http://www.funcubedongle.com/?page_id=286, bij Martin Lynch http://www.mlands.co.uk/. De dongle kost bij de maker UKP 134,60 (circa EUR 155) inclusief verzending. In Nederland is de dongle verkrijgbaar bij http://www.hamshop.nl/.
Om de dongle te kunnen gebruiken is software nodig waarmee je de SDR instelt en de SDR eventueel van nieuwe firmware kan voorzien. Er zijn inmiddels diverse programma's beschikbaar voor o.a. Windows en Linux. Mijn ervaring is dat onder Linux de versie van Alexandre Csete het beste werkt. Hij heeft op Sourceforge een binary voor Linux beschikbaar gesteld (zie hieronder).
Het is raadzaam om de dongle van de laatste firmwareversie te voorzien. De firmware staat op de website van de dongle http://www.funcubedongle.com/?page_id=313.
Osmocom software
De software uit twee blokken: osmo-tetra en libosmocore. In het osmo-tetra pakket zitten softwareblokken die onder andere het TETRA signaal demoduleert, converteert en de daadwerkelijke TETRA ontvanger.
Installeren
- Download de besturingssoftware voor de dongle van Alexandre Csete via http://sourceforge.net/projects/qthid/f ... z/download
- Pak de software uit. Met het commando wordt het archief in de directory waar je staat uitgepakt.
Code: Selecteer alles
tar -xvzf qthid-3.1-linux-i686.tar.gz
- Linux zal moeten worden verteld wat te doen met de funcube dongle. Hiervoor moet een bestandje worden aangemaakt en wel als volgt:
Omdat je met dit commando een tekstverwerker opstart die een bestand aanmaakt in een beschermde directory zal nu om je wachtwoord worden gevraagd.
Code: Selecteer alles
sudo gedit /etc/udev/rules.d/20-fcd.rules
Vul het bestand met de volgende tekst en sla het bestand op:Vervolgens moet het OS de USB configuratie opnieuw laden. Dit doe je met het commandoCode: Selecteer alles
SUBSYSTEM=="usb" ATTRS{idVendor}=="04d8" ATTRS{idProduct}=="fb56" MODE:="0666" SYMLINK+="FCD"
Code: Selecteer alles
sudo udevadm control --reload-rules
- Sluit de Funcube dongle aan.
- Controleer welke hardware id de dongle heeft gekregen. Dit doe je door middel van het commando
Je krijgt dan een lijstje te zien waarin onder andere de funcube dongle staat (e.e.a. is afhankelijk van de hardware configuratie van je PC. Bijvoorbeeld:
Code: Selecteer alles
more /proc/asound/cards
Noteer de hardware id van de dongle want die heb je straks nodig om de osmocom software te kunnen gebruiken. In dit geval is dat dus 1.Code: Selecteer alles
0 [ICH5 ]: ICH4 - Intel ICH5 Intel ICH5 with AD1985 at irq 17 1 [default ]: USB-Audio - FUNcube Dongle V1.0 Hanlincrest Ltd. FUNcube Dongle V1.0 at usb-0000:00:1d.3-1, full spe 2 [Live ]: EMU10K1 - SB Live! 5.1 [SB0060] SB Live! 5.1 [SB0060] (rev.7, serial:0x80611102) at 0xdf80, irq 22 3 [Audigy2 ]: Audigy2 - SB Audigy 2 Platinum [SB0240P] SB Audigy 2 Platinum [SB0240P] (rev.4, serial:0x10021102) at 0xdf00, irq 23
- Maak twee named pipes aan. Dit is nodig om een aantal stukken osmocom software met elkaar te kunnen laten praten. De named pipes worden aangemaakt met de volgende commando's:
Code: Selecteer alles
mkfifo /tmp/out.float mkfifo /tmp/out.bits
- Als je een 'schone' linux installatie hebt, moet libtool worden geinstalleerd:
Code: Selecteer alles
sudo apt-get install libtool
- Download de osmocom software door middel van het commando (door middel van dit commando wordt een kopie gemaakt van de laatste versie van de software zoals de makers die beschikbaar stellen).
Code: Selecteer alles
git clone git://git.osmocom.org/osmo-tetra.git
- Download de libosmocore library door middel van het commando
Code: Selecteer alles
git clone git://git.osmocom.org/libosmocore.git
- Compileer en installeer de libosmocore library door middel van de commando's:
Code: Selecteer alles
cd libosmocore/ autoreconf -i ./configure make sudo make install cd ..
- Compileer en installeer de osmo-tetra software door middel van de commando's:
Code: Selecteer alles
cd osmo-tetra/ make cd ..
- Download en installeer de protocolanalyser Wireshark. Dit kan eenvoudig door middel van de package manager (gebruik de zoekfunctie).
- Start de funcube besturingssoftware. Ga naar de directory waarin de Qthid software is gezet en start qthid-3. op. Dat kan via de file manager of vanaf de command line met Als het goed is verschijnt nu de qthid console (GUI).
Code: Selecteer alles
./qthid &
- Stem de dongle af op een frequentie waar een ongecodeerd TETRA netwerk op uitzendt (bijvoorbeeld Entropia Digital TETRA).
Nu kunnen de diverse onderdelen van de osmocom software worden gestart. - Open een terminal window en ga naar de directory waar de osmo-tetra software is geinstalleerd.
- Met het commando: wordt de demodulator gestart. Let op de hw parameter, die moet overeenkomen met de id die je hebt genoteerd. Om het afstemmen van de dongle te vergemakkelijken kan je ook gebruik maken van het commando
Code: Selecteer alles
./src/demod/python/fcdp-tetra_demod.py -D hw:1,0 -o /tmp/out.float &
Er zal dan een window worden geopend met daarin een FFT display van het ontvangen signaal. Zorg ervoor dat het signaal netjes in het midden staat. (Mijn ervaring is dat enig experimenteren met de afstemming van de SDR nodig is.) Let op: als de variant zonder FFT display reeds draait moet die eerst gestopt worden, omdat die de geluidskaart in gebruik heeft.Code: Selecteer alles
./src/demod/python/fcdp-tetra_demod_fft.py -D hw:1,0 -o /tmp/out.float &
- Met het commando: wordt de output van de demodulator geschikt gemaakt voor de ontvanger (waarbij gebruik wordt gemaakt van de eerder aangemaakte named pipes).
Code: Selecteer alles
./src/float_to_bits /tmp/out.float /tmp/out.bits &
- Met het commando wordt de TETRA ontvanger gestart.
Code: Selecteer alles
./src/tetra-rx /tmp/out.bits &
Als er een goed TETRA signaal aanwezig is krijg je nu output te zien zoals dit:Je ziet in dit voorbeeld dat het een Nederlands TETRA-netwerk is (MCC 0011001100(204)) en de gebruikte frequenties (BNCH SYSINFO (DL 426331250 Hz, UL 416331250 Hz) in deze TETRA cel.Code: Selecteer alles
BURST CRC COMP: 0x1d0f OK SB1 00/00/3/000 type1: 000100000111100001010000000000000110011000000011111100110001 TMB-SAP SYNC CC 000001(0x01) TN 11(3) FN 10000(16) MN 101000(40) MCC 0011001100(204) MNC 00000111111001(505) TMV-UNITDATA.ind 40/16/3/000 BSCH CRC=1 SYNC TMV-UNITDATA.ind 40/16/3/000 AACH CRC=1 ACCESS-ASSIGN ACCESS-ASSIGN PDU: DL_USAGE: Unallocated UL_USAGE: Unallocated CRC COMP: 0x1d0f OK SB2 40/16/3/000 type1: 1000010000011101010001000000101001101110011000000111110011011010000101010100000000000000001110101111111111111111110101100101 TMV-UNITDATA.ind 40/16/3/000 UNKNOWN CRC=1 BROADCAST BNCH SYSINFO (DL 426331250 Hz, UL 416331250 Hz), service_details 0x0d65 Hyperframe 1997 Advanced link: 1 Air encryption: 0 SNDCP data: 1 unknown 0x8: 0 Circuit data: 0 Voice service: 1 Normal mode: 1 Migration supported: 0 Cell never uses minimum mode: 1 Priority cell: 0 De-registration mandatory: 1 Registration mandatory: 1 BURST TMV-UNITDATA.ind 40/16/4/000 AACH CRC=1 ACCESS-ASSIGN ACCESS-ASSIGN PDU: ACCESS1: A/10 ACCESS2: A/10 CRC COMP: 0x1d0f OK NDB 40/16/4/000 type1: 0000000000010000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 TMV-UNITDATA.ind 40/16/4/000 UNKNOWN CRC=1 RESOURCE RESOURCE Encr=0, Length=2 Addr=Null PDU() CRC COMP: 0x1d0f OK NDB 40/16/4/000 type1: 1000010000011101010001000000101001101110011000000111110011011010000101010100000000000000001110101111111111111111110101100101 TMV-UNITDATA.ind 40/16/4/000 UNKNOWN CRC=1 BROADCAST BNCH SYSINFO (DL 426331250 Hz, UL 416331250 Hz), service_details 0x0d65 Hyperframe 1997 Advanced link: 1 Air encryption: 0 SNDCP data: 1 unknown 0x8: 0 Circuit data: 0 Voice service: 1 Normal mode: 1 Migration supported: 0 Cell never uses minimum mode: 1 Priority cell: 0 De-registration mandatory: 1 Registration mandatory: 1
- Door nu Wireshark op te starten en die een capture te laten doen op de Lo interface kan je meekijken in de protocolstroom. Let op: om dit te kunnen doen heb je root rechten nodig. Start wireshark dus op via In Wireshark worden de pakketten zichtbaar als GSMTAP pakketten. Dit heeft te maken met de wijze waarop de makers van de osmocom software de informatie doorsturen naar Wireshark. In Wireshark kan je dieper in de pakketten kijken en de pakketten opslaan.
Code: Selecteer alles
sudo wireshark
Marco/PA1MOS.
[Edit 15sep2011: osmo-tetra met en zonder FFT]
[Edit 19sep2011: libtool toegevoegd, met dank aan qwerty]
[Edit 23jan2012: verwijzing naar C2000 aangepast]
[Edit 30mrt2012: aanpassing QTHID 3.1 en beschikbaarheid Funcube Dongle in Nederland]