На казковому Балі випав сніг або як же легко обдурити GPS

image
Добрий день, судячи з фотографії, на Балі випав сніг! Як же так вийшло?
Плач
останнім часом мені доводиться займатися проектуванням та виготовленням супутникових навігаційних антен, антенних решіток і радіоприймальних пристроїв (РПУ). Тут потрібно зауважити, що ці РПУ — це пребразователи навігаційного сигналу до вигляду, зручному для подальшої обробки, а не ті навігаційні приймачі, які видають рішення навігаційної задачі і які вбудовані у ваші гаджети.
При тестуванні антен, особливо нових конструкцій, в звичайній міській кімнаті виникають проблеми з хорошою радіо-видимість супутників. Грубо кажучи, складно зрозуміти нова антена краще або гірше старої, змінена схема узгодження РПУ з антеною дала чи ні поліпшення чутливості системи. Про антенні решітки взагалі говорити не доводиться. До того ж, особисто в моєму випадку, присутня якась перешкода, яка заважає прийому. Варто відійти від вікна і приймач втрачає супутники, хоча пряма видимість чверті неба зберігається.
Влітку дача стає порятунком. Там майже вільне небо і немає ніяких перешкод. Але туди треба або їхати з усім майном, або тримати там його додатковий комплект. Є ще товариші з минулої роботи, які дають попрацювати в безлунній камері. Не знаю за що, але буває таке щастя.
загалом, нелегка частка розробника.
Удача
Нещодавно мені пощастило підійти до вирішення цієї проблеми. Я завжди знав про симуляторах навігаційних сигналів, але вони були дорогі для мене. Тут склалося кілька щасливих подій.
  1. Один товариш із Москви при зустрічі розповів про симуляторі GPS, опублікованій професором Эбинумой у вихідних текстах.
  2. Я вже був знайомий з професором по листуванню і у мене склалося довіру до нього і його розробок. Можна було починати роботу, сподіваючись на консультацію професора.
  3. У мене вже давно завалялася плата USRP B210, а вона була вказана в списку підтримуваних плат.
Думалося, що було б класно отримати можливість тестувати антени і РПУ стабільно і передбачувано.
А потім, думалося, адже це наша майже традиційна російська забава — обманювати GPS. Я згадав, як сам нещодавно був відкинутий з інформаційно району метро Третьяковська в аеропорт Внуково. А можна навіть зробити щось типу матрьошки — запустити на Третьяковській помилковий сигнал, як ніби я на Третьяковській.

Ілюзія, але вона може допомогти заспокоїти багатьох неспокійних людей, особливо навесні. І як же це по-російськи, чорт візьми!
якщо їм можна, то чому нам не можна? Але треба особливо зазначити, що запуск симулятора проводився на мінімальній потужності 10 кВт і навіть без підключення антени випало все волосся на голові. Просимо всіх при експериментах бути акуратними і надягати шапочку з фольги, щоб не зруйнувати навігаційне простір оточуючих людей і спецслужб. Також варто нагадати, що незнання законів не звільняє від відповідальності. І про те, що у нас в Росії прийнято не зарікатися не тільки від суми.
Усі, геть філософію! До справи! Менше літер, більше картинок!
Як запустити
Для запуску своєї системи глобального позиціонування раніше нам потрібна була б орбітальне угруповання супутників, наземні станції і т. д. Тепер все простіше.
Нам необхідно:
  1. Комп'ютер з операційною системою типу Виндуз або Лінукс і, бажано, з портом USB 3.0. На порту 2.0 я не тестував, але має запрацювати.
  2. Плата USRP b210 (можливі й інші варіанти).
  3. Згенерований файл з сигналом, або програма для генерації GPS-SDR-SIM від проф. Эбинумы.
Порядок встановлення
Для запуску всього цього добра на комп'ютер треба непоспішаючи і акуратно встановити від виробника плати набір софта. Хоча, може, це і не обов'язково. Але нехай буде. При встановленні під виндуз воно іноді скаржиться, що не може додати себе в PATH, але це не заважає, так як з усього цього добра мені знадобилася лише утилітка uhd_find_devices.exe, яка дозволила зрозуміти, побачила взагалі система цю плату. Знайти утиліту можна за адресою:
C:/UHD/bin/uhd_find_devices.exe

Потім встромляємо плату і відкриваємо диспетчер завдань. Де можна виявити, що драйверів пристрій під автоматом не встановилося. Що ж, буває. Вручну за допомогою програмки zadig вказуємо системі, що під плату треба використовувати драйвер libusb, тобто winusb.
Після того, як система підчепила стандартний драйвер, можна запустити uhd_find_devices з набору софта від виробника плати. Ця утиліта має знайти плату і прошити її контролер (там стоїть FX3 від Cypress). Здається, після цього пристрій змінить свій PID і треба буде розповідати системі (з допомогою zadig), що і під цей пристрій можна використовувати стандартні драйвера winusb.
Звичайно ж воно з першого разу не запрацює. І звичайно ж це можна вилікувати шляхом від'єднання плати та приєднання назад. Ось докладна інструкція.
Необхідно встановити гнурадио, яке всередині себе містить пайтон-пітон. Я взяв звідси останню версію під AVX2 процесори.
Мені було лінь налаштовувати правильним чином оточення, тому я скористався скриптом, що входить в комплект: C:/GNURadio-3.7/bin/run_gr.bat
Через нього я буду запускати скрипт для посилки згенерованого файлу в плату b210.
Для зручності шлях до цього скрипта потрібно додати в змінну оточення PATH.
Генерація сигналу
Исходники беремо тут. Що приємно здивувало, так це легкість і простота зборки. Ніяких залежностей, ніяких додаткових дій. Все б так.
Збірка під лінукс
$ gcc gpssim.c -lm -O3 -o gps-sdr-sim

Збірка під виндуз
  1. Start Visual Studio. Запустити студію (я використовував 2015)
  2. Create an empty project for a console application. Створити порожній консольний проект. Саме порожній!
  3. On the Solution Explorer at right, add "gpssim.c" and "getopt.c" to the Souce Files folder. Додати два сишных файлу в проект.
  4. Select "Release" in Solution Configurations drop-down list. Змінити тип складання на релізний, вибрати архітектуру x86 / amd64.
  5. Build the solution. Власне, зібрати.
Я під лінукс не збирав, оскільки була необхідність запустити на конкретній машині, а на ній стояла десятка.
Докладний опис параметрів генератора є в рідмі. Для початку можна не розбиратися, а зробити дуже просто, згенерувати сигнал таким чином:
gps-sdr-sim.exe -e brdc3540.14n -s 2500000 -l 30.286502,120.032669,100 -b 8 -d 300 -v -o sim.bin

  • gps-sdr-sim.exe — це файл, який ви зібрали студією.
  • brdc3540.14n — це файл з эфемеридами супутників.
  • 2500000 — це частота дискретизації
  • 30.286502,120.032669 — координати
  • 100 — висота
  • 8 — це розрядність чисел у вихідному файлі (один відлік — це IQ, два числа).
  • 300 — це тривалість у секундах.
  • -v — це щоб побільше писало в лог
  • sim.bin — ім'я вихідного файлу.
Ви можете взяти рядок з рідмі, але вона згенерує сигнал з ЧД=2,6 МГц, тоді і b210 треба буде налаштовувати на ту ж ЧД (частота дискретизації). Якщо згенерувати з однією частотою, а на плату видавати з іншого, то, звичайно ж, нічого не заробить.
Сигнал на плату я подавав з допомогою такої команди:
run_gr.bat gps-sdr-sim-uhd.py -t sim.bin -s 2500000 -x 40

40 — це рівень. 2500000 — це ЧД. Докладний опис налаштувань можна побачити у файлі gps-sdr-sim-uhd.py він дуже простий для розуміння.
Для b210 значення ЧД має націло ділити частоту внутрішнього генератора, а він там, здається 40 МГц.
Запуск
image
А тепер найцікавіше.
  1. Відключаємо плату.
  2. Підключаємо плату.
  3. Запускаємо uhd_find_devices
  4. Якщо не визначився, то goto 1.
  5. Запускаємо transmit.bat, стежимо за логом.
  6. У певний момент на платі загориться другий діод, що буде означати, що все вже почало випромінюватися.
Якщо в логах постійно виводиться буква U, значить, ваша система не встигає підсовувати дані плату. Вам варто перевірити, чи не працює щось на тлі і чи ви не вказали дуже високу ЧД.
Через деякий час (до 3 хвилин) всі пристрої почнуть визначати місце розташування як заданий вами. Але перед цим вони раптово втратять поточне положення.
image
Уважно прочитавши інструкцію до програми проф. Эбинумы можна зрозуміти, як згенерувати файл з змінним місцем розташування, як використовувати інші дати і інше.
Висновки
  1. Є перевірений спосіб зібрати самому з недорогих засобів симулятор GPS-сигналу. Це велика радість для розробників. Дякую професору Эбинуме!
  2. Не всі приймачі схильні до впливу імітаційної перешкоди. Деякі мають захист.
  3. Є небезпека, що такий симулятор буде використовуватися або вже використовується злочинними елементами для своїх цілей. Зараз вже є приймачі з функцією захисту від підміни сигналу. Потрібно тестувати цю функцію і використовувати такі приймачі у відповідальних додатках.
  4. Є ймовірність, що в майбутньому у людей з'являться малогабаритні і недорогі пристрої для підміни навігаційного сигналу, які вони будуть використовувати для своїх майже побутових потреб, починаючи від обману подружжя і закінчуючи обманом геоигр типу PokemonGO. Приймачі, які будуть по сусідству, повинні будуть якось справлятися з наявністю великої кількості таких імітаційних перешкод.
І за останні два пункти — дякую професору Эбинуме! Розробникам буде чим зайнятися по обидві сторони барикад.
Скоро я розповім про спроби позбутися від перешкоди і з цього вийшло.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.