{"id":368,"date":"2017-06-24T21:38:53","date_gmt":"2017-06-24T21:38:53","guid":{"rendered":"https:\/\/klubnl.pl\/wpr\/?p=368"},"modified":"2017-07-12T20:51:58","modified_gmt":"2017-07-12T20:51:58","slug":"dekodowanie-7-znakowej-wiadomosci-na-6470hz","status":"publish","type":"post","link":"https:\/\/klubnl.pl\/wpr\/2017\/06\/24\/dekodowanie-7-znakowej-wiadomosci-na-6470hz\/","title":{"rendered":"Dekodowanie 7-znakowej wiadomo\u015bci na 6470Hz"},"content":{"rendered":"<p>3 lipca 2017 roku Stefan DK7FC nada\u0142 7-godzinn\u0105 transmisj\u0119 ebnaut zawieraj\u0105c\u0105 7 znak\u00f3w. Poprzednio by\u0142em w stanie zdekodowa\u01072-3 znakowe transmisje wys\u0142ane w podobnym czasie, wi\u0119c 7 znak\u00f3w wydawa\u0142o si\u0119 by\u0107 nie do odebrania. Artyku\u0142 pokazuje w jaki spos\u00f3b ta transmisja zosta\u0142a jednak zdekodowana i mo\u017ce by\u0107 ciekawym przewodnikiem dla os\u00f3b kt\u00f3re zaczynaj\u0105 uzywa\u0107 linuxa i\/lub vlfrx-tools.<br \/>\n<!--more--><br \/>\nTransmisja mia\u0142a takie parametry:<\/p>\n<pre>f = 6470.100000 Hz\r\nStart time: 03.Jun.2017   3:00:00 UTC\r\nSymbol period: 24 s\r\nCharacters: 7\r\nCRC bits: 5\r\nCoding 16K21A\r\nDuration: 7h, 8min, 48 sec\r\nAntenna current: ~ 440 mA<\/pre>\n<p>Do odbioru u\u017cy\u0142em skryptu opisanego tu: <a href=\"https:\/\/klubnl.pl\/wpr\/index.php\/artykuly\/uzywanie-vlfrx-tools\/\">U\u017cywanie vlfrx-tools<\/a><\/p>\n<p>Niestety komunikat nie zosta\u0142 zdekodowany poprawnie z ustawieniami vtblank jakich zwykle u\u017cywam (-a2 -d0 -t 10). Plik resampled_file jest plikiem wygenerowanym przez skrypt do dekodowania ebnaut opisany w U\u017cywanie vlfrx-tools. Przetworzy\u0142em ten plik za pomoca vtraw i ebnaut z dodan\u0105 opcj\u0105 -f9 (skopiowa\u0142em ostatni\u0105 linijk\u0119 skryptu i doda\u0142em parametr -f9 i logowanie do pliku o nazwie decwy):<\/p>\n<pre>$ vtraw -oa &lt; resampled_file | .\/ebnaut -d -N7 -p 16K21A -S 24 -k 5 -r240 -c2 -PS -v -L 20000 2&gt;&amp;1 |tee decwy<\/pre>\n<p>Spr\u00f3bujmy wyodr\u0119bni\u0107 z tego pliku wszystkie mo\u017cliwe komunikaty, posortowa\u0107 je i wybra\u0107 tylko te unikalne i policzy\u0107 je. Niestety przy tylko 5 bitach CRC mamy wiele mo\u017cliwych komunikat\u00f3w:<\/p>\n<pre>$ grep found decwy |cut -d \\[ -f 2 |cut -d \\] -f 1 |sort -u | wc -l\r\n67495<\/pre>\n<p>67495 unikalnych komunikat\u00f3w to jest za du\u017co aby obejrze\u0107 ka\u017cdy w nich i zadecydowa\u0107 kt\u00f3ry z nich wygl\u0105da &#8222;poprawnie&#8221;.<\/p>\n<p>Spr\u00f3bujmy troch\u0119 oszuka\u0107:\u00a0 Paul Nicholson (kt\u00f3ry poprawnie zdekodowa\u0142 ten komunikat) napisa\u0142 \u017ce jest to s\u0142awne nazwisko. Mo\u017cemy przyj\u0105\u0107 hipotez\u0119, \u017ce komunikat zawiera tylko litery. Spr\u00f3bujmy policzy\u0107 wszystkie mo\u017cliwe komunikaty kt\u00f3re zawieraj\u0105 tylko litery:<\/p>\n<pre>$ grep found decwy |cut -d \\[ -f 2 |cut -d \\] -f 1 |sort -u |egrep '^[A-Z]+$' |wc -l\r\n352<\/pre>\n<p>352 komunikat\u00f3w to nie tak du\u017co, wi\u0119c mo\u017cemy je obejrze\u0107 i zadecydowa\u0107 kt\u00f3ry wygl\u0105da &#8222;sensownie&#8221;:<\/p>\n<pre>$ grep found decwy |cut -d \\[ -f 2 |cut -d \\] -f 1 |sort -u |egrep '^[A-Z]+$' | less<\/pre>\n<p>Jedyny komunikat kt\u00f3ry wygl\u0105da sensownie to: MARCONI \ud83d\ude42<\/p>\n<p>Z logu dekodera (plik decwy) wyci\u0105gn\u0105\u0142em najlepszy przypadek kiedy zdekodowa\u0142 si\u0119 ten komunikat:<\/p>\n<pre>found rank 13961 ber 4.0858e-01 Eb\/N0 -1.4 M -8.404992819e-01 [MARCONI] ps[ 83 -90 -60 -90 -60]\r\ncarrier phase: 5.1 deg\r\ncarrier Eb\/N0: -4.1 dB\r\ncarrier Es\/N0: -18.44 dB\r\ncarrier S\/N: 11.87 dB in 38.9 uHz, -32.24 dB in 1Hz, -66.22 dB in 2.5kHz\r\nelapsed 1334<\/pre>\n<p>Spr\u00f3bujmy teraz znale\u017a\u0107 optymalne ustawienia ogranicznika trzask\u00f3w (vtblank). Te kt\u00f3rych u\u017cywa\u0142em by\u0142y optymalne dla 8270Hz, dla 6470Hz najlepsze mog\u0105 by\u0107 zupe\u0142nie inne warto\u015bci. Wyodr\u0119bnimy plik o nazwie wskazanej przez zmienn\u0105 PLIK2 zawieraj\u0105cy segment 3kHz w okolicy 6470.1Hz. Nast\u0119pnie wypr\u00f3bujemy kombinacje parametr\u00f3w vtblank\u00a0 -a (wypr\u00f3bowa\u0142em 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6) i -t (wypr\u00f3bowa\u0142em 10 i 100) , zresamplujemy wynik do 240 sampli\/s i umie\u015bcimy wynik w oddielnych plikach o nazwie takiej jak PLIK2, ale z dodanym do nazwy _A_T e (gdzie A jest warto\u015bci\u0105 parametru -a ,\u00a0 T jets warto\u015bci\u0105 parametru -t).<\/p>\n<p>Poni\u017cszy skrypt wykonuje te czynno\u015bci:<\/p>\n<pre>#!\/bin\/bash\r\n\r\nPLIK2=plik_dk7fc_20170603_1_raw1\r\nFREQ=6470.1\r\nTT=2017-06-03_03:00:00,+25728\r\nvtread -T$TT \/mnt\/rawvlf | vtfilter -h bp,f=${FREQ},w=3000 &gt; $PLIK2\r\n\r\nfor a in 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6\r\ndo\r\nfor t in 10 100\r\ndo\r\n echo a=$a t=$t\r\n vtblank -v -a$a -d0 -t$t &lt; $PLIK2 | \\ vtmult -f ${FREQ} | \\ vtresample -r 240 &gt; ${PLIK2}_${a}_${t}\r\ndone\r\ndone<\/pre>\n<p>Stworzone zosta\u0142y pliki o nazwach plik_dk7fc_20170603_1_raw1_XX_YY (gdzie XX jest parametrem -a vtblank , a YY jest parametrem -t vtblank). Dla ka\u017cdego z tych plik\u00f3w sprawd\u017amy nasz\u0105 hipotez\u0119 \u017ce komunikato to MARCONI. U\u017cyjemy do tego ebnaut w trybie analizy:<\/p>\n<pre>$ for i in plik_dk7fc_20170603_1_raw1_*; do echo $i; vtraw -oa &lt; $i | .\/ebnaut -d -N7 -p 16K21A -S 24 -k 5 -r240 -c2 -PS -v -L 20000 -f15 -f16 -M MARCONI;\r\necho; done<\/pre>\n<p>&#8230; skrypt pokazuje analiz\u0119 dla ka\u017cdego z tych plik\u00f3w. W\u015br\u00f3d tych plik\u00f3w ten wydaje si\u0119 by\u0107 najlepszy (carrier Eb\/N0 i carrier S\/N s\u0105 najlepsze):<\/p>\n<pre>plik_dk7fc_20170603_1_raw1_1.4_100\r\npadded 0.267 seconds at end\r\ninitial reference phase -0.2 amplitude 2.277e-02\r\ncarrier phase: 2.4\r\ncarrier Eb\/N0: -2.7 dB\r\ncarrier S\/N: 13.28 dB in 38.9 uHz<\/pre>\n<p>Spr\u00f3bujmy zdekodowa\u0107\u00a0 plik_dk7fc_20170603_1_raw1_1.4_100 bez opcji -f9 i zobaczmy czy dekoder znajdzie komunikat:<\/p>\n<pre>$ vtraw -oa &lt; plik_dk7fc_20170603_1_raw1_1.4_100 | .\/ebnaut -d -N7 -p 16K21A -S 24 -k 5 -r240 -c2 -PS -v -L 200000\r\n\r\npadded 0.267 seconds at end\r\ninitial reference phase -0.2 amplitude 2.277e-02\r\nprep [ 0 0 0 0 0]\r\nfound rank 141 ber 4.1884e-01 Eb\/N0 -2.4 M -6.664184332e-01 [MARCONI] ps [ 0 0 0 0 0]\r\ncarrier phase: 2.6 deg\r\ncarrier Eb\/N0: -2.7 dB\r\ncarrier Es\/N0: -17.02 dB\r\ncarrier S\/N: 13.28 dB in 38.9 uHz, -30.82 dB in 1Hz, -64.80 dB in 2.5kHz\r\nelapsed 42<\/pre>\n<p>Jak wida\u0107 znalaz\u0142 komunikat MARCONI za pierwsz\u0105 pr\u00f3b\u0105. Okazuje si\u0119 \u017ce dla tej transmisji najlepsze ustawienia vtblank to -a1.4 -d0 -t100.<\/p>\n<p>Ostatnio pr\u00f3bowa\u0142em przeszukiwa\u0107 znacznie wi\u0119kszy zakres parametr\u00f3w vtblank dla innej transmisji na 6470.1Hz i okazuje si\u0119 \u017ce optymalne warto\u015bci by\u0142y du\u017co wi\u0119ksze: vtblank -a 1.7 -t 8050 -d0. By\u0107 mo\u017ce opisz\u0119 to w innym artykule.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>3 lipca 2017 roku Stefan DK7FC nada\u0142 7-godzinn\u0105 transmisj\u0119 ebnaut zawieraj\u0105c\u0105 7 znak\u00f3w. Poprzednio by\u0142em w stanie zdekodowa\u01072-3 znakowe transmisje wys\u0142ane w podobnym czasie, wi\u0119c 7 znak\u00f3w wydawa\u0142o si\u0119 by\u0107 nie do odebrania. Artyku\u0142 pokazuje w jaki spos\u00f3b ta transmisja zosta\u0142a jednak zdekodowana i mo\u017ce by\u0107 ciekawym przewodnikiem dla os\u00f3b kt\u00f3re zaczynaj\u0105 uzywa\u0107 linuxa i\/lub &hellip; <a href=\"https:\/\/klubnl.pl\/wpr\/2017\/06\/24\/dekodowanie-7-znakowej-wiadomosci-na-6470hz\/\" class=\"more-link\">Czytaj dalej<span class=\"screen-reader-text\"> \u201eDekodowanie 7-znakowej wiadomo\u015bci na 6470Hz\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-368","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"translation":{"provider":"WPGlobus","version":"3.0.1","language":"pl","enabled_languages":["pl","en"],"languages":{"pl":{"title":true,"content":true,"excerpt":false},"en":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/posts\/368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/comments?post=368"}],"version-history":[{"count":9,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/posts\/368\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/posts\/368\/revisions\/467"}],"wp:attachment":[{"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/media?parent=368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/categories?post=368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/klubnl.pl\/wpr\/wp-json\/wp\/v2\/tags?post=368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}