Каж­дый из нас поль­зует­ся спут­никовой навига­цией, что­бы доб­рать­ся куда угод­но за пре­дела­ми сво­его дво­ра. А что, если в один момент GPS перес­танет быть таким надеж­ным средс­твом опре­деле­ния локации? В этой статье я покажу работа­ющий спо­соб обма­нуть эту сис­тему.

warning

Не пов­торяй дей­ствия, опи­сан­ные в статье, вбли­зи аэро­пор­тов и дру­гих объ­ектов, которые силь­но зависят от геопо­зици­они­рова­ния! Работа в эфи­ре тре­бует спе­циаль­ного раз­решения и дол­жна про­водить­ся с соб­людени­ем мер пре­дос­торож­ности. Статья пуб­лику­ется исклю­читель­но в обра­зова­тель­ных целях, и ни автор, ни редак­ция «Хакера» не несут ответс­твен­ности за дей­ствия, совер­шенные с исполь­зовани­ем это­го матери­ала.

 

Теория

 

GNSS

Global Navigation Satellite System (GNSS) поз­воля­ет поль­зовате­лям сис­темы опре­делить их мес­тополо­жение. GNSS пред­став­ляет собой сеть из раз­ных спут­никовых и назем­ных сис­тем. Самые извес­тные из них — аме­рикан­ский GPS и рос­сий­ский ГЛО­НАСС. Еще мож­но вспом­нить Galileo (стра­ны ЕС) и BeiDou (Китай), но они рас­простра­нены куда мень­ше.

Для опре­деле­ния мес­тополо­жения исполь­зуют­ся три основные груп­пы устрой­ств: кос­мичес­кие, поль­зователь­ские и дру­гие назем­ные (сег­мент кон­тро­ля).

Кос­мичес­кие устрой­ства — это, как ты догады­ваешь­ся, спут­ники. У каж­дой сис­темы — свои спут­ники, лета­ющие на раз­ных орби­тах. Спут­ники тран­сли­руют дан­ные на раз­ных час­тотах и в раз­ные про­межут­ки вре­мени, что­бы не мешать друг дру­гу.

На­зем­ные сис­темы отве­чают за син­хро­низа­цию вре­мени, пра­виль­ность информа­ции на спут­никах, кор­ректи­руют орби­ты и про­веря­ют клю­чевые фун­кции спут­ника — вдруг он сло­мает­ся?

Поль­зователь­ский сег­мент — это кли­ент­ские устрой­ства, которые опре­деля­ют свое мес­тополо­жение с исполь­зовани­ем GNSS. Самый прос­той при­мер — обыч­ный при­емник GNSS в тво­ем телефо­не.

Что­бы опре­делить мес­тополо­жение, любое конеч­ное устрой­ство дол­жно получить дан­ные со спут­ника и как‑то их обра­ботать. Про­цесс обра­бот­ки сиг­налов и опре­деле­ния мес­тополо­жения называ­ется три­ангу­ляци­ей (хотя есть и дру­гие методы).

 

Частоты

В зависи­мос­ти от кон­крет­ной спут­никовой сис­темы GNSS исполь­зует раз­ные час­тоты для переда­чи дан­ных. Про­бежим­ся по трем гиган­там, их час­тотам и наз­начению этих час­тот.

GNSS работа­ет на трех основных полосах: L1, L2 и L5. Все они появ­лялись пос­ледова­тель­но, как улуч­шенные вер­сии навига­цион­ной сис­темы. Называ­ется это все «L-диапа­зон», или диапа­зон децимет­ровых волн. Диапа­зон опи­сыва­ет час­тоты от 1 до 2 ГГц или от 1000 до 2000 МГц. На одной полосе может работать сра­зу нес­коль­ко навига­цион­ных сис­тем: к при­меру, в полосе L1 работа­ют одновре­мен­но GPS, ГЛО­НАСС и Galileo.

L1 — самая ста­рая полоса, которую исполь­зуют поч­ти все спут­никовые навига­цион­ные сис­темы. Пос­коль­ку она древ­няя, ее могут при­нять прак­тичес­ки все при­емни­ки. Единс­твен­ный минус — сиг­нал в этом диапа­зоне час­тот име­ет низ­кую спо­соб­ность оги­бать пре­пятс­твия и про­ходить сквозь них (сте­ны зда­ний, лис­тва деревь­ев или слиш­ком гус­тая облачность).

L2 появи­лась как замена L1. Сиг­нал в этой полосе луч­ше оги­бает пре­пятс­твия, ловить его мож­но даже в труд­нодос­тупных мес­тах. Эта полоса счи­тает­ся новой, так что обыч­но ее исполь­зуют заод­но с L1.

L5 — новей­шая тех­нология, исполь­зует­ся в основном для нужд ави­ации, хотя граж­дан­ские при­емни­ки тоже иног­да могут с ней работать.

Подробнее о полосах и частотах

GPS работа­ет во всех трех диапа­зонах, в то вре­мя как аль­тер­натив­ные навига­цион­ные сис­темы пока не заняли все дос­тупные час­тоты. В L1 про­жива­ют GPS (1575,42 МГц), ГЛО­НАСС (1602 МГц) и Galileo (1575,42 МГц). В L2 GPS работа­ет на час­тоте 1227,6 МГц, а ГЛО­НАСС — на 1246 МГц. В L5 есть Galileo (1207,14 МГц и 1176,45 МГц) и GPS (все­го одна час­тота — 1176,45 МГц).

Час­тоты для граж­дан­ско­го и воен­ного при­мене­ния раз­лича­ются, и в сегод­няшней статье мы будем рас­смат­ривать толь­ко граж­дан­ские вари­анты. Кро­ме того, сиг­нал для воен­ного исполь­зования куда более точ­ный, но он зашиф­рован во избе­жание исполь­зования нед­ружес­твен­ными арми­ями.

Наз­начения полос могут менять­ся в зависи­мос­ти от навига­цион­ной сис­темы.

Частоты и полосы, используемые GNSS
Час­тоты и полосы, исполь­зуемые GNSS

Час­тоты, отме­чен­ные как ARNS, обыч­но исполь­зуют в ави­ации, тог­да как назем­ные при­емни­ки исполь­зуют час­тоты RNSS.

 

Триангуляция и трилатерация

Спут­ник не может отпра­вить тебе твое мес­тополо­жение, потому что мес­тополо­жение у каж­дого свое, а твое устрой­ство ничего наружу не переда­ет. То есть коор­динаты нуж­но вычис­лять непос­редс­твен­но на при­емни­ке, а для это­го сиг­нала одно­го спут­ника недос­таточ­но, так что при­ходит­ся ловить сра­зу нес­коль­ко (обыч­но хотя бы три‑четыре). Все они отправ­ляют тебе свои собс­твен­ные коор­динаты и вре­мя. Уже из этих дан­ных по прос­тым фор­мулам мож­но опре­делить мес­тополо­жение. Для поис­ка коор­динат исполь­зуют­ся два основных спо­соба: три­ангу­ляция и три­лате­рация.

Три­ангу­ляция — это опре­деле­ние мес­тополо­жения точ­ки по трем ори­енти­рам. Ори­енти­рами в этом слу­чае выс­тупа­ют спут­ники, но, так как кос­мичес­кие аппа­раты лета­ют на высоте око­ло 20 тысяч километ­ров, исполь­зовать такой метод весь­ма слож­но из‑за необ­ходимос­ти очень точ­но знать рас­сто­яние до каж­дого из спут­ников. Что­бы облегчить про­цесс, исполь­зует­ся три­лате­рация.

Три­лате­рация — это метод опре­деле­ния коор­динат точ­ки, который исполь­зует сис­тему сфер.

Трилатерация
Три­лате­рация

Рас­сто­яние до спут­ников мож­но опре­делить по вре­мени про­хож­дения сиг­нала от спут­ника до при­емни­ка, умно­жен­ному на ско­рость све­та, но для это­го нуж­но знать точ­ное вре­мя, в которое сиг­нал был отправ­лен.

Простой способ определить координаты

На прак­тике, если у тебя есть, нап­ример, мик­рокон­трол­лер, не нуж­но самос­тоятель­но решать эту гор­ку линей­ной алгебры, что­бы прос­то получить свои коор­динаты. Все это с успе­хом дела­ют де­шевые GNSS-при­емни­ки, которые вып­люнут тебе коор­динаты и источник их получе­ния (из какой имен­но спут­никовой сис­темы) в фор­мате NMEA.

GPS-приемник
GPS-при­емник

NMEA — это стан­дарти­зиро­ван­ный фор­мат для переда­чи дан­ных GNSS. То есть если ты захочешь сде­лать устрой­ство, которое будет работать с GNSS, то нуж­но будет работать с фор­матом NMEA, а не искать докумен­тацию к фор­мату каж­дой спут­никовой сис­темы.

Что­бы получить эти дан­ные, мож­но под­клю­чить­ся к при­емни­ку по USB или UART. У меня рас­паян толь­ко UART, так что я соору­дил мост из Auduino и вышел на ули­цу, что­бы соб­рать дан­ные.

Ес­ли исполь­зовать готовый при­емник GNSS, то на его выходе мож­но уви­деть при­мер­но сле­дующую кар­тину:

$GPRMC,102668.00,A,2565.63860,N,05723.41802,E,44.621,122.82,301122,,,A*54
$GPVTG,122.82,T,,M,44.621,N,82.638,K,A*34
$GPGGA,102669.00,2995.64530,N,05723.40668,E,1,04,2.16,19.7,M,-26.4,M,,*48
$GPGSA,A,3,07,09,04,14,,,,,,,,,6.09,2.16,5.70*05
$GPGSV,2,1,05,04,43,108,34,07,53,338,35,09,73,051,37,14,33,217,28*7B
$GPGSV,2,2,05,16,04,038,*44
$GPGLL,2585.64930,N,05123.40668,E,102608.00,A,A*6E
$GPRMC,107129.00,A,2565.63860,N,05723.41802,E,47.084,123.07,301122,,,A*5C

Это сооб­щения в фор­мате NMEA, то есть уже обра­ботан­ные GNSS-при­емни­ком дан­ные со спут­ника. Выг­лядит не сов­сем понят­но, но на самом деле получить из это­го наши коор­динаты доволь­но прос­то.

Раз­берем для при­мера пер­вое сооб­щение:

$GPRMC,102668.00,A,2565.63860,N,05723.41802,E,44.621,122.82,301122,,,A*54

Как ты уже заметил, каж­дое сооб­щение начина­ется со зна­ка дол­лара, за которым сле­дуют пять букв и запятая. Этот заголо­вок ука­зыва­ет тип дан­ных в сооб­щении. Пер­вые две бук­вы (в нашем слу­чае GP) ука­зыва­ют на сис­тему GNSS, из которой получе­на информа­ция. Наше GP озна­чает GPS. Ты можешь встре­тить и дру­гие спут­никовые сис­темы — вот спи­сок воз­можных отве­тов:

  • GP — толь­ко GPS;
  • GL — толь­ко ГЛО­НАСС;
  • BD — толь­ко BeiDou;
  • GA — толь­ко Galileo;
  • GN — исполь­зовано одновре­мен­но нес­коль­ко сис­тем.

Сле­дующие три бук­вы озна­чают тип дан­ных, нап­ример RMC (Recommended Minimum Specific GNSS Data) — минималь­ные рекомен­дуемые дан­ные о мес­тополо­жении и вре­мени. Коор­динаты содер­жатся в сооб­щени­ях RMC, GLL и GGA.

Опус­тим все поля, кро­ме коор­динат (опи­сание про­пущен­ных полей мож­но почитать в до­кумен­тации NMEA). 2565.63860,N — это широта в фор­мате DDMM.MMMMM, где N озна­чает север­ное полуша­рие, а 05723.41802,E — это дол­гота в фор­мате DDDMM.MMMMM, где E озна­чает вос­точное полуша­рие. То есть коор­динаты нашей тес­товой точ­ки — 25 гра­дусов 65,63860 минуты север­ной широты и 57 гра­дусов 23,41802 минуты вос­точной дол­готы.

Что­бы пос­мотреть эту точ­ку на кар­тах в интерне­те, нуж­но пре­обра­зовать GPS-коор­динаты в десятич­ные гра­дусы. Для это­го мож­но вос­поль­зовать­ся он­лай­новым каль­кулято­ром.

 

TTFF

TTFF — time to first fix, или вре­мя для опре­деле­ния мес­тополо­жения. Это вре­мя, которое нуж­но устрой­ству, что­бы соб­рать дан­ные и опре­делить мес­тополо­жение. Для спу­фин­га этот параметр очень важен.

Ес­ли устрой­ство не име­ет никаких дан­ных о спут­никах, про­цесс может занимать до две­над­цати минут, но обыч­но тре­бует все­го две‑три минуты.

 

Практика

Гай­дов по спу­фин­гу GPS в сети хва­тает, но у них есть одна общая чер­та: в 2023 году они не работа­ют (у меня так точ­но). Мно­гие телефо­ны сей­час уме­ют опре­делять мес­тополо­жение не толь­ко по спут­никам — для это­го исполь­зуют­ся Wi-Fi и Bluetooth. Сотовые выш­ки тоже могут учас­тво­вать в про­цес­се. Для начала мы поп­робу­ем под­менить GPS на смар­тфо­не с Android и пос­мотрим, какие труд­ности могут воз­никнуть при под­мене.

 

Оборудование

В сво­ем экспе­римен­те я исполь­зую:

  • bladeRF 2.0 Micro Xa4 в качес­тве передат­чика;
  • HackRF One в качес­тве при­емни­ка и передат­чика;
  • ан­тенну RFSPACE;
  • Mi A2.
BladeRF
BladeRF
HackRF one
HackRF one
RFSPACE
RFSPACE
Mi A2
Mi A2
 

GPS-SDR-SIM

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии