# Radio {{#include ../../banners/hacktricks-training.md}} ## SigDigger [**SigDigger** ](https://github.com/BatchDrake/SigDigger) є безкоштовним аналізатором цифрових сигналів для GNU/Linux та macOS, призначеним для витягування інформації з невідомих радіосигналів. Він підтримує різноманітні SDR пристрої через SoapySDR і дозволяє регулювати демодуляцію FSK, PSK та ASK сигналів, декодувати аналогове відео, аналізувати сплескові сигнали та слухати аналогові голосові канали (все в реальному часі). ### Basic Config Після встановлення є кілька речей, які ви можете розглянути для налаштування.\ У налаштуваннях (друга кнопка вкладки) ви можете вибрати **SDR пристрій** або **вибрати файл** для читання та частоту для синхронізації, а також частоту дискретизації (рекомендується до 2.56Msps, якщо ваш ПК це підтримує) ![](<../../images/image (245).png>) У поведінці GUI рекомендується активувати кілька речей, якщо ваш ПК це підтримує: ![](<../../images/image (472).png>) > [!NOTE] > Якщо ви помітили, що ваш ПК не захоплює сигнали, спробуйте вимкнути OpenGL і знизити частоту дискретизації. ### Uses - Просто **захопити деякий час сигналу та проаналізувати його**, просто утримуйте кнопку "Push to capture" стільки, скільки потрібно. ![](<../../images/image (960).png>) - **Тюнер** SigDigger допомагає **захоплювати кращі сигнали** (але він також може їх погіршити). Ідеально почати з 0 і продовжувати **збільшувати**, поки ви не знайдете, що **шум**, який ви вводите, є **більшим**, ніж **покращення сигналу**, яке вам потрібно. ![](<../../images/image (1099).png>) ### Synchronize with radio channel З [**SigDigger** ](https://github.com/BatchDrake/SigDigger) синхронізуйтеся з каналом, який ви хочете почути, налаштуйте опцію "Baseband audio preview", налаштуйте ширину смуги, щоб отримати всю інформацію, що надсилається, а потім встановіть Тюнер на рівень, перед тим як шум почне дійсно зростати: ![](<../../images/image (585).png>) ## Interesting tricks - Коли пристрій надсилає сплески інформації, зазвичай **перша частина буде преамбулою**, тому вам **не потрібно** **турбуватися**, якщо ви **не знайдете інформацію** там **або якщо там є деякі помилки**. - У кадрах інформації ви зазвичай повинні **знайти різні кадри, добре вирівняні між собою**: ![](<../../images/image (1076).png>) ![](<../../images/image (597).png>) - **Після відновлення бітів вам, можливо, потрібно буде обробити їх якимось чином**. Наприклад, у манчестерській кодуванні up+down буде 1 або 0, а down+up буде іншим. Таким чином, пари 1s і 0s (ups і downs) будуть реальним 1 або реальним 0. - Навіть якщо сигнал використовує манчестерське кодування (неможливо знайти більше ніж два 0s або 1s підряд), ви можете **знайти кілька 1s або 0s разом у преамбулі**! ### Uncovering modulation type with IQ Існує 3 способи зберігати інформацію в сигналах: модуляція **амплітуди**, **частоти** або **фази**.\ Якщо ви перевіряєте сигнал, є різні способи спробувати з'ясувати, що використовується для зберігання інформації (знайдіть більше способів нижче), але хороший спосіб - перевірити графік IQ. ![](<../../images/image (788).png>) - **Виявлення AM**: Якщо на графіку IQ з'являються, наприклад, **2 кола** (можливо, одне в 0, а інше на іншій амплітуді), це може означати, що це AM сигнал. Це тому, що на графіку IQ відстань між 0 і колом є амплітудою сигналу, тому легко візуалізувати різні амплітуди, що використовуються. - **Виявлення PM**: Як на попередньому зображенні, якщо ви знайдете маленькі кола, які не пов'язані між собою, це, ймовірно, означає, що використовується фазова модуляція. Це тому, що на графіку IQ кут між точкою та 0,0 є фазою сигналу, тому це означає, що використовуються 4 різні фази. - Зверніть увагу, що якщо інформація прихована в тому, що фаза змінюється, а не в самій фазі, ви не побачите чітко різні фази. - **Виявлення FM**: IQ не має поля для ідентифікації частот (відстань до центру - це амплітуда, а кут - це фаза).\ Тому, щоб ідентифікувати FM, ви повинні **бачити в основному коло** на цьому графіку.\ Більше того, інша частота "представляється" графіком IQ через **прискорення швидкості по колу** (тому в SysDigger, вибираючи сигнал, графік IQ заповнюється, якщо ви знайдете прискорення або зміну напрямку в створеному колі, це може означати, що це FM): ## AM Example {{#file}} sigdigger_20220308_165547Z_2560000_433500000_float32_iq.raw {{#endfile}} ### Uncovering AM #### Checking the envelope Перевіряючи AM інформацію з [**SigDigger** ](https://github.com/BatchDrake/SigDigger) і просто дивлячись на **оболонку**, ви можете побачити різні чіткі рівні амплітуди. Використовуваний сигнал надсилає імпульси з інформацією в AM, ось як виглядає один імпульс: ![](<../../images/image (590).png>) І ось як виглядає частина символу з формою хвилі: ![](<../../images/image (734).png>) #### Checking the Histogram Ви можете **вибрати весь сигнал**, де знаходиться інформація, вибрати режим **Амплітуда** та **Вибір** і натиснути на **Гістограму**. Ви можете спостерігати, що 2 чіткі рівні знаходяться лише ![](<../../images/image (264).png>) Наприклад, якщо ви виберете Частоту замість Амплітуди в цьому AM сигналі, ви знайдете лише 1 частоту (немає способу, щоб інформація, модуляція в частоті, використовувала лише 1 частоту). ![](<../../images/image (732).png>) Якщо ви знайдете багато частот, це, ймовірно, не буде FM, ймовірно, частота сигналу була просто змінена через канал. #### With IQ У цьому прикладі ви можете побачити, як є **велике коло**, але також **багато точок у центрі**. ![](<../../images/image (222).png>) ### Get Symbol Rate #### With one symbol Виберіть найменший символ, який ви можете знайти (щоб ви були впевнені, що це лише 1) і перевірте "Selection freq". У цьому випадку це буде 1.013kHz (тобто 1kHz). ![](<../../images/image (78).png>) #### With a group of symbols Ви також можете вказати кількість символів, які ви збираєтеся вибрати, і SigDigger розрахує частоту 1 символу (чим більше символів вибрано, тим краще, ймовірно). У цьому сценарії я вибрав 10 символів, і "Selection freq" становить 1.004 Khz: ![](<../../images/image (1008).png>) ### Get Bits Знайшовши, що це **AM модуляційний** сигнал і **символьна частота** (і знаючи, що в цьому випадку щось up означає 1, а щось down означає 0), дуже легко **отримати біти**, закодовані в сигналі. Отже, виберіть сигнал з інформацією та налаштуйте дискретизацію та рішення, а потім натисніть зразок (перевірте, що **Амплітуда** вибрана, виявлена **Символьна частота** налаштована, а **Gadner clock recovery** вибрана): ![](<../../images/image (965).png>) - **Sync to selection intervals** означає, що якщо ви раніше вибрали інтервали для знаходження символної частоти, ця символна частота буде використана. - **Manual** означає, що вказана символна частота буде використана - У **Fixed interval selection** ви вказуєте кількість інтервалів, які повинні бути вибрані, і вона розраховує символну частоту з цього - **Gadner clock recovery** зазвичай є найкращим варіантом, але вам все ще потрібно вказати приблизну символну частоту. Натискаючи зразок, з'являється це: ![](<../../images/image (644).png>) Тепер, щоб змусити SigDigger зрозуміти **де знаходиться діапазон** рівня, що несе інформацію, вам потрібно натиснути на **нижній рівень** і утримувати натиснутим до найбільшого рівня: ![](<../../images/image (439).png>) Якщо б, наприклад, було **4 різні рівні амплітуди**, вам потрібно було б налаштувати **Біти на символ 2** і вибрати від найменшого до найбільшого. Нарешті, **збільшуючи** **Масштаб** і **змінюючи розмір рядка**, ви можете побачити біти (і ви можете вибрати всі та скопіювати, щоб отримати всі біти): ![](<../../images/image (276).png>) Якщо сигнал має більше ніж 1 біт на символ (наприклад, 2), SigDigger **не має способу знати, який символ є** 00, 01, 10, 11, тому він використовуватиме різні **сірі відтінки**, щоб представити кожен (і якщо ви скопіюєте біти, він використовуватиме **числа від 0 до 3**, вам потрібно буде їх обробити). Також використовуйте **кодування**, такі як **Манчестер**, і **up+down** може бути **1 або 0**, а down+up може бути 1 або 0. У таких випадках вам потрібно **обробити отримані ups (1) і downs (0)**, щоб замінити пари 01 або 10 на 0s або 1s. ## FM Example {{#file}} sigdigger_20220308_170858Z_2560000_433500000_float32_iq.raw {{#endfile}} ### Uncovering FM #### Checking the frequencies and waveform Приклад сигналу, що надсилає інформацію, модуляцію в FM: ![](<../../images/image (725).png>) На попередньому зображенні ви можете досить добре спостерігати, що **використовується 2 частоти**, але якщо ви **спостерігаєте** за **формою хвилі**, ви, можливо, **не зможете правильно ідентифікувати 2 різні частоти**: ![](<../../images/image (717).png>) Це тому, що я захопив сигнал на обох частотах, тому одна приблизно є негативною іншої: ![](<../../images/image (942).png>) Якщо синхронізована частота **ближча до однієї частоти, ніж до іншої**, ви можете легко побачити 2 різні частоти: ![](<../../images/image (422).png>) ![](<../../images/image (488).png>) #### Checking the histogram Перевіряючи гістограму частот сигналу з інформацією, ви можете легко побачити 2 різні сигнали: ![](<../../images/image (871).png>) У цьому випадку, якщо ви перевірите **Гістограму амплітуди**, ви знайдете **лише одну амплітуду**, тому це **не може бути AM** (якщо ви знайдете багато амплітуд, це може бути через те, що сигнал втратив потужність по каналу): ![](<../../images/image (817).png>) А це була б гістограма фази (яка чітко показує, що сигнал не модуляційний у фазі): ![](<../../images/image (996).png>) #### With IQ IQ не має поля для ідентифікації частот (відстань до центру - це амплітуда, а кут - це фаза).\ Тому, щоб ідентифікувати FM, ви повинні **бачити в основному коло** на цьому графіку.\ Більше того, інша частота "представляється" графіком IQ через **прискорення швидкості по колу** (тому в SysDigger, вибираючи сигнал, графік IQ заповнюється, якщо ви знайдете прискорення або зміну напрямку в створеному колі, це може означати, що це FM): ![](<../../images/image (81).png>) ### Get Symbol Rate Ви можете використовувати **ту ж техніку, що й у прикладі AM**, щоб отримати символну частоту, як тільки ви знайдете частоти, що несуть символи. ### Get Bits Ви можете використовувати **ту ж техніку, що й у прикладі AM**, щоб отримати біти, як тільки ви **знайдете, що сигнал модуляційний у частоті** і **символьна частота**. {{#include ../../banners/hacktricks-training.md}}