TETRAPOL-KIT

TETRAPOL-KIT

O české digitální síti typu Tetrapol, kterou využívají složky IZS je zde na webu několik článků, které popisují princip a fungování sítě. Pokud máte k dispozici SDR přijímač, můžete se ale také na provoz podívat živě a to bez porušování telekomunikačního tajemství.

Na internetu je možné nalézt software od skupiny pražských programátorů volnomyšlenkářů sdružujících se pod názvem BRMlab, který poodkrývá tajemství toho, co se v síti děje. Tento software jako takový v sobě nemá kryptoanalyzační nástroje na luštění hovorových a datových kódů v síti, ale umí zobrazit servisní data, která jsou vysílána na servisních kanálech všech buněk sítě.

V základu se jedná o překlad toho, co je veřejně dostupné v dokumentech o sítích Tetrapol obecně. Parta těchto šikovných lidí si vzala dokumenty (volně dostupné na internetu) popisující datovou komunikaci a stavovou signalizaci sítě. Zkusili pomocí softwarového GMSK demodulátoru, který je součástí programu Osmocom, zda vysílaná data odpovídají tomu, co je v dokumentech popsáno.

Tak jednoduché to samozřejmě nebylo. Jedním ze základních předpokladů bylo nalezení (a vytvoření systému hledání) “scrambling” kódu, což je jednoduchý 255 stavový kód, který zamezuje terminálům, aby se registrovaly do sítě, kam nemají příslušnost tím, že znemožňuje čtení servisních dat pro nepříslušné terminály. Tetrapol-kit hledá synchronizační rámce a poté hledá platný scrambling kód, aby mohl přečíst servisní data – tedy to, co dělá každý terminál, který má platný síťový scrambling kód má v sobě naprogramován.

Po pár týdnech se opravdu podařilo zjistit, že některá signalizace a struktura dat odpovídá tomu, co uvádí originální dokumenty. Jelikož se ale jedná o dokumenty staré 20 let, není v nich samozřejmě zanesen vývoj sítě. Pomocí těchto dokumentů lze tedy úspěšně přečíst řekněme dvě třetiny servisních dat, zbývající třetina jsou signalizace postupem času změněné. Znamená to tedy, že se některé stavové kódy již v síti nepoužívají a některé jsou naopak navíc.

Skupina vývojářů Tetrapol-kitu se ovšem rozhodla před nějakou dobou další vývoj softwaru ukončit. To, co po nich zbylo, je program, který funguje, ale chrlí na vás spoustu dat, která vám bez vhodného filtrování a překladů vůbec nic neřeknou. Aby se program stal nástrojem na rozumné sledování provozu v síti, je nutné značným způsobem výstupní data upravit a filtrovat.

Základní informace

Program Tetrapol-kit lze spustit zatím jen pod Linuxem. Dle mých zkušeností by neměl být větší problém pod distribucemi typu DEBIAN a jeho mutacím typu UBUNTU, MINT a to i ve variantách MATE. Lze jej ale nainstalovat úspěšně i pod ARM verzí RASPBIAN pro miniaturní počítač RASPBERRY PI.

Pod Windows 10 a jeho podporou Linuxu lze program zkompilovat a spustit, ale vzhledem k tomu, že není možné úspěšně nainstalovat GNURADIO resp. OSMOSDR , program nemá přístup k SDR přijímači a zdroji dat.

Tetrapol-kit umí ovladát přijímače, které jsou ovládány pomocí GNU rádia. Vyzkoušel jsem tedy jak klasickou RTL-SDR klíčenku, tak AirSpy. AirSpy má ovšem oproti klíčence jednu výhodu a tou je šířka pásma, při použití plné šířky můžete sledovat celé pásmo sítě PEGAS. Tento režim ovšem není vždy výhodný, protože přijímač nemá dostatečnou odolnost na to, aby zpracovával velmi slabé signály vedle velmi silných kmitočtově blízko sebe. V případě RTL-SDR je tedy výhodné samplovat jen pásmo 1MHz a v případě AirSpy menší rozsah 2,5 MHz. To má samozřejmě za následek problémy v případě, kdy chcete sledovat řídící kanály i hovorové současně, pokud jsou kmitočtově příliš daleko od sebe. Celé pásmo lze pomocí AirSpy Sledovat jen v případě, že dostatečně upravíte úroveň signálů na vstupu tak, aby se A/D převodník nezahlcoval, tedy za cenu nemožnosti dekódování slabých stanic.

Ovládací program přijímačů umí režim doladění kmitočtu (AFC). Pokud nejsou kmitočty buněk sítě přesně naladěné na definovaný kanál, umí program nastavit automaticky přesný kmitočet i v případě odchylky v řádech jednotek kHz.

Program lze provozovat v režimu aktivního zobrazování právě probíhajících událostí v síti a pomocí skritptů lze veškerý provoz také ukládat za účelem analýzy nebo archivace.

Kit umí zobrazovat jeden kanál nebo je možnost sledovat uživatelsky definovaný seznam kanálů. Tento režim je výhodný, pokud sledujete současně provoz na řídícím kanálu a hovorových kanálů, nebo sledujete provoz na více buňkách, které jsou v dosahu.

Zatížení procesoru není nijak vysoké, i vícekanálovou verzi lze provozovat na počítači typu Raspberry PI2.

Maximální vzdálenost je omezena, jelikož se nejedná o TDMA systém, jen kvalitou přijímací soustavy vs. umístění vysílačů. V praxi lze tedy bez větších problémů zachytit signály vzádlené i přes 100 km, ale znamená to, že se kmitočty buněk nepřekrývají a geograficky to možné je.

POSTUP INSTALACE

Nejprve je potřeba instalovat potřebné balíčky pro ovládání SDR přijímače (UBUNTU i MINT):

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install gnuradio gnuradio-dev gr-osmosdr rtl-sdr git autoconf libtool libncurses5-dev libxml2-dev cmake


Pokud používáte linux MINT je nutné doinstalovat ještě některé chybějící balíčky:

sudo apt-get install python-numpy automake xterm


Nyní instalace ovladače pro přijímač AirSpy:

sudo apt-get install build-essential cmake libusb-1.0-0-dev pkg-config

git clone git://github.com/airspy/host

cd host

mkdir build

cd build

cmake ../ -DINSTALL_UDEV_RULES=ON

make

sudo make install

sudo ldconfig


Pokud používáte klasickou klíčenku RTL-SDR je dobré udělat jednoduchý test:

cd rtl-sdr

rtl_test -t

Pokud test skončí chybou, je potřeba odstavit původní ovladače:

cd /etc/modprobe.d

sudo nano no-rtl.conf

Zde vložit:

blacklist dvb_usb_rtl28xxu

blacklist rtl2832

blacklist rtl2830

Uložit a zavřít pomocí CTRL+O CTRL+X a restartovat počítač.


Nyní přichází na řadu instalace původní neupravené verze tetrapol-kitu.

sudo apt-get install libcmocka-dev libcmocka0 libglib2.0-dev libjson0 libjson0-dev

git clone http://brmlab.cz/git/tetrapol-kit.git

cd tetrapol-kit

mkdir build

cd build

cmake ..

make

cd

Jako doplněk pro sledování více kanálů současně je potřeba instalovat také program FCL “Fast Channelizer”:

git clone https://jenda.hrach.eu/p/fcl

cd fcl

make

Pokud vše proběhne v pořádku, (pro zjednodušení) celý obsah adresáře “FCL” zkopírujte do “/tetrapol-kit/demod”.

Je dobré zkontrolovat, zda jsou soubory v adresáři “/tetrapol-kit/demod/” s označením “demod.py” a “demod2.py” označeny ve vlastnostech jako spustitelné.

Spouštěcí skript v jednokanálové režimu

Nyní je potřeba připravit základní spuštění programu. Pomocí širokopásmového přijímače je potřeba nalézt kmitočet servisního kanálu nejbližší buňky sítě Tetrapol. S analogovým skenerem servisní kanál identifikujete velmi jednoduše. Je to kanál, na kterém není “vrčení” v mezerách mezi hovory, defacto na něm neustále rotují data. Tento kmitočet si zaznamenejte a nyní je potřeba spočítat jeho číslo.

Tetrapol-kit počítá kmitočet kanálů dle reálných čísel udávaných sítí. Jelikož vychází technologie Tetrapol funkcí z analogových trunkových sítí, je princip počítání datových a hovorových kanálů stejný. Tozn. že systém počítá od kanálu číslo 1, který definovaný konkrétním kmitočtem a všechny aktivní kanály se počítají tak, že se vynásobí počtem definovaných kroků. V případě Tetrapolu v pásmu 395 MHz je nastavení takové, že první “base” kanál je 358,4 MHz a od něj se počítají v rastru 12,5 kHz kanály. Buňky sítě PEGAS (platí to ale například i pro SITNO) se vyskytují tedy v rozsahu kanálů 2530 (kanál 2528 slouží jen pro SOS signalizaci a 2529 jako ochranný proti rušení) až 2927.

Od kmitočtu vámi nalezeného datového kanálu tedy odečtete kmitočet 358,4 MHz, vydělíte krokem 0,0125 MHz. Tím vám rovnou vyjde číslo kanálu, který potřebujete pro spuštění programu.

Pokud používáte SDR přijímač RTL-SDR, budete také potřebovat znát hodnotu kmitočtové chyby “PPM”, jelikož je každá klíčenka originálem. Na zjištění hodnoty PPM existují různé finty, ale podle mne je nejjednodušší použít program GQRX, naladit nějakou blízkou stanici třeba typu VOLMET v leteckém pásmu a upravovat hodnotu PPM na střed signálu a tím budete znát alespoň orientační hodnotu PPM. Tetrapol kit umí doladit přesný kmitočet sám, ale díky správné hodnotě PPM mu to nebude trvat tak dlouho. Pokud používáte přijímač AirSpy nebo RTL-SDR s TCXO, nemusíte se problémem PPM zdržovat.

Program Tetrapol-kit byl v principu napsán pro ovládání pomocí SDR přijímače RTL-SDR, který jistá specifika oproti některým jiným přijímačům jako třeba AirSpy. Jedním z nich je ovládání zisku vstupního “front-endu”. Kit má v sobě dvě místa, kde uživatel může ovlinit parametr zisku. Jedním z nich je ve spouštěcím skriptu parametr “-g” (gain) a druhé je přímo ve skriptu “demod.py”. V hlavním skriptu je jako default určena hodnota “37” což znamená nastavení zisku na “AUTO”. Tuto hodnotu ovšem nezná přijímač AirSpy. Pokud jej tedy používáte, musíte si otevřít samotný skript “demod.py” a v něm vyhledat řádek “self.src.set_if_gain(37)” a změnit hodnotu v závorce na cokoliv v rozsahu 1-15, ideálně 10.

Samotný program Tetrapol kit se spouští volání parametrizovaného pythonového skriptu “demod.py”. Jelikož je ale parametrů více a je potřeba je zpočátku častěji měnit, je dobré vytvořit spouštěcí skript, ve kterému budete jednoduše měnit hodnoty.

Například na ploše (nebo kdekoliv chcete) vytvoříte prázdný soubor a do něj zapíšete následující dvě vámi upravené řádky:

cd /home/uživatel/tetrapol-kit/demod/

./demod.py -g xx -s yyyyyyy -p PP -c CHCH -O ‘../build/apps/tetrapol_dump 2>&1 >/dev/null -t TTT ‘

Kde je potřeba doplnit následující parametry dle vaší situace:

  • uživatel – jméno uživatele nebo případně přesně zadat cestu k adesáři “tetrapol-kit”
  • xx – je hodnota zesílení (1-37)
  • yyyyyyy – samplovací rychlost – v případě RTL-SDR ideálně “1024000” v případě AirSpy “2500000”
  • PP – hodnota PPM – v případě RTL-SDR s TCXO nebo AirSpy tento parametr úplně vynecháme, nebo “0”
  • CHCH – spočítané číslo kanálu
  • TTT – typ kanálu – možná volba jen CCH (Control CHannel) nebo TCH (Traffic CHannel)

Tento jednoduchý skript uložíte (například jako RUN.sh) a pomocí příkazu:

chmod +x RUN.sh

ho nastavíte jako spustitelný.

 

……….. dopsat ……………