Standard STQC dekodowanie
Poszukuje informacji o standardzie STQC
Witaj, znalazłem fajne opracowanie STQC, mam nadzieje ze CI pomoze. Dodatkowo jest tam implementacja co-dec.

Źródło: https://github.com/sq5bpf/multimon-ng-stqc/blob/master/README_STQC

### Polski: Protokół STQC ####

System ten jest wykorzystywany przez urządzenia firmy Digitex/Platan (wywołanie
selektywne do CB SW-xx, systemy profesjonalne DSP-xx).

Zawarte tu oprogrmowanie zawiera enkoder STQC, oraz moduł dekodera STQC do
programu multimon-ng. Dokumentacja do multimon-ng oraz Internet zawiera
liczne przyłady użycia tego programu, więc nie zostaną one tu przytoczone
(i tam odsyłam po odpowiedzi na ewentualne pytania). Program multimon-ng
można uruchomić pod systemami linux, *bsd (w tym macos), oraz windows (w
dwóch ostatnich przypadkach proszę nie kierować do mnie zapytań jak to zrobić).

System STQC składa się z 5 tonów:
0 - 980Hz
1 - 1197Hz
2 - 1446Hz
3 - 1795Hz
4 - 2105Hz
Sekwencja wywołania jest przeliczana na system czwórkowy, cyfry są używane do
wyboru tonów 0-3. Powtarzające się tony są zastępowane przez ton 4 (enkoder
zakłada, że najpierw zostało wysłane 0). Nieużywane cyfry zastępowane są
0. Tony mają długość 100ms. Cyfry nadawane są od najbardziej znaczącej.
Zwykle stosowane są sekwencje 7 i 8 tonowe. Całkowite wywołanie to
(zwykle) 7 tonów (prawdopodobnie adres odbiornika), 200ms przerwy i 8 tonów
(prawdopodobnie komenda).

Przykład (zakoduj 1231 jako sekwencja 8 tonów):
1231 (podstawa 10) = 00103033 (podstawa 4).
Zmiana powtapodstawacych się cyfr na 4: 40103034
Zmiana cyfr na tony [Hz]: 2105 980 1197 980 1795 980 1795 2105

Protokół jest tak prosty, że może być zaimplementowany nawet jako skrypt
shellowy. W razie wątpliwości polecam RTFS.

Prosta implementacja enkodera znajduje się w stqc.sh.
Enkoder ktory robi cale wywolanie stqc (7 tonow, przerwa 200ms, 8 tonow)
znajduje sie w stqc2.sh.

Prosta implementacja dekodera w 1 linijce shella:
$ SEQ=40103034; echo "ibase=4; 0$SEQ"|sed -re 's/([0-3])4/\1\1/g'|bc -l
1231

Przykładowe tony można pozyskać np. z filmów na youtube (najprościej
szukać po nazwie "dsp-50").

Aby odkodować należy użyć np multimon-ng -c -a STQC

# Uwaga dla strażaków

Wiele osób chciałoby zrobić dekoder, aby mieć własne powiadomienie,
niezależne od syreny OSP. Powiadomienie takie można wykonać za pomocą
multimon-ng z obsługą STQC. Jako odbiornik można wykorzystać zarówno
sprzętowy odbiornik (np. stary transceiver na pasmo 2m, może być z
uszkodzonym nadajnikiem) i monitorować jego wyjście za pomocą karty
dźwiękowej. Można też wykorzystać tani tuner DVB-T z układem RL2832 jako
odbiornik SDR (proszę szukać w internecie przykładów integracji multimon-ng
np z rtl_fm, gnuradio lub innym odbiornikiem SDR). Częstotliwości są
opublikowane w internecie, można też je samemy znaleźć. Wyjście z multimon-ng
można śledzić za pomocą programu expect i w zależności od pojawiających
się sekwencji uruchamiać skrypty realizujące powiadamianie (np. wysłanie
sms, maila, odtwarzanie dźwięku, wysłanie komunikatu na jakiś serwis
społecznościowy itp. wykorzystanie systemu linux daje tu prawie nieograniczone
możliwości prostej integracji za pomocą skryptów, bez tworzenia dedykowanego
do tego oprogramowania).

Za pomocą enkodera STQC (skrypt stqc.sh) można wygenerować sekwencję tonów.
Taką sekwencję można najprawdopodobniej zaprogrmować w strażackich
radiotelefonach służbowych, co umożliwiłoby sygnalizację w przypadku klęski
żywiołowej (jeśli nie działałby system wysyłający powiadomienia).

Jeśli to oprogrmowanie zostanie użyte z pożytkiem dla strażaków lub innych,
prosiłbym o informację.

Uwaga: to oprogramowanie nie może zastąpić normalnego systemu powiadamiania.


# Bezpieczeństwo STQC

W przypadku użycia systemu wywołania o stałej sekwencji w kanale radiowym
(dotyczy to każdego publicznie dostepnego kanału komunikacji),
każdy ma możliwość nasłuchu tej sekwencji (nasłuchu a nie podsłuchu, ponieważ
transmisja nie jest w jakikolwiek sposób zabezpieczona technicznie).
Daje to nieograniczone możliwości jej ponownego wykorzystania, nawet bez
znajomości szczegółów protokołu (replay attack). M.in. z takich powodów
tego typu systemy nie są już używane w sytuacjach gdzie trzeba zapewnić
jakiekolwiek bezpieczeństwo (przykładowo systemy ze zmiennym kodem są
powszechnie używane w pilotach do samochodów od lat '90).

Jeśli kanał komunikacyjny nie jest publicznie dostępny (np linia
telefoniczna), to system ten może być dalej stosowany.

Protokół został rozpracowany na podstawie opublikowanej w internecie listy
sekwencji tonów dla liczb 0-21: http://forum.atnel.pl/topic4641.html , oraz
publicznie dostępnych w internecie filmów przedstawiających działanie centralki
DSP-50 (zawierających sekwencje tonów). Nie testowałem oprogramowania na
danych uzyskanych z nasłuchu, ponieważ w mojej okolicy (chyba) nie ma takich
systemów.

Używanie systemów posiadających te (podstawowe) podatności (publicznie
dostępny kanał, stała sekwencja sterująca) jest faktem. Optymizm skłania
do wniosku, że jest to wynik starannej analizy (zagrożeń, kosztów itp), a
nie inercji.

Powyższa analiza jest moją własną. Jeśli ktoś ma inne zdanie/argumenty chętnie
bym je poznał. Zapraszam do _konstruktywnej_ dyskusji.

73 de Jacek Lipkowski <sq5bpf@lipkowski.org>


MLI


  PRZEJDŹ NA FORUM