# Radio {{#include ../../banners/hacktricks-training.md}} ## SigDigger [**SigDigger** ](https://github.com/BatchDrake/SigDigger)は、未知の無線信号の情報を抽出するために設計された、GNU/LinuxおよびmacOS用の無料デジタル信号アナライザーです。SoapySDRを介してさまざまなSDRデバイスをサポートし、FSK、PSK、ASK信号の調整可能な復調、アナログビデオのデコード、バースト信号の分析、アナログ音声チャンネルのリアルタイムでの聴取を可能にします。 ### Basic Config インストール後、いくつかの設定を考慮することができます。\ 設定(2番目のタブボタン)で、**SDRデバイス**を選択するか、**ファイルを選択**して読み取り、同調する周波数とサンプルレート(PCがサポートしている場合は最大2.56Mspsを推奨)を設定できます。\\ ![](<../../images/image (245).png>) GUIの動作では、PCがサポートしている場合は、いくつかの設定を有効にすることをお勧めします: ![](<../../images/image (472).png>) > [!NOTE] > PCが情報をキャプチャしていない場合は、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>) - **ビットを回復した後、何らかの方法で処理する必要があるかもしれません**。たとえば、マンチェスター符号化では、上+下は1または0、下+上はもう一方になります。したがって、1と0のペア(上昇と下降)は、実際の1または実際の0になります。 - 信号がマンチェスター符号化を使用している場合(連続して2つ以上の0または1を見つけることは不可能です)、**プレアンブル内で複数の1または0を見つけることができるかもしれません**! ### Uncovering modulation type with IQ 信号に情報を格納する方法は3つあります:**振幅**、**周波数**、または**位相**を変調します。\ 信号をチェックしている場合、情報を格納するために何が使用されているかを特定するためのさまざまな方法があります(以下に他の方法があります)が、良い方法の1つはIQグラフを確認することです。 ![](<../../images/image (788).png>) - **AMの検出**:IQグラフに**2つの円**(おそらく1つは0、もう1つは異なる振幅にある)を見つけた場合、これはAM信号である可能性があります。これは、IQグラフで0と円の間の距離が信号の振幅であるため、異なる振幅が使用されているのを視覚化しやすいからです。 - **PMの検出**:前の画像のように、互いに関連しない小さな円を見つけた場合、位相変調が使用されている可能性があります。これは、IQグラフで、点と0,0の間の角度が信号の位相であるため、4つの異なる位相が使用されていることを意味します。 - 情報が位相の変化に隠されていて、位相自体には隠されていない場合、異なる位相が明確に区別されることはありません。 - **FMの検出**:IQには周波数を識別するためのフィールドがありません(中心からの距離は振幅で、角度は位相です)。\ したがって、FMを識別するには、このグラフで**基本的に円だけを見る必要があります**。\ さらに、異なる周波数は、IQグラフによって**円を横切る速度の加速**で「表現」されます(したがって、SysDiggerで信号を選択するとIQグラフが生成され、生成された円の加速や方向の変化が見つかると、これはFMである可能性があります): ## AM Example {% file src="../../images/sigdigger_20220308_165547Z_2560000_433500000_float32_iq.raw" %} ### Uncovering AM #### Checking the envelope [**SigDigger** ](https://github.com/BatchDrake/SigDigger)を使用してAM情報を確認し、**エンベロープ**を見て、異なる明確な振幅レベルを確認できます。使用されている信号は、AMで情報を送信するパルスを送信しており、1つのパルスは次のようになります: ![](<../../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変調**信号であり、**シンボルレート**が見つかり(この場合、何か上は1、何か下は0を意味することを知っているため)、信号にエンコードされた**ビットを取得する**のは非常に簡単です。したがって、情報のある信号を選択し、サンプリングと決定を設定し、サンプルを押します(**振幅**が選択されていること、発見された**シンボルレート**が設定されていること、**Gadnerクロック回復**が選択されていることを確認してください): ![](<../../images/image (965).png>) - **選択間隔に同期**は、以前にシンボルレートを見つけるために選択した間隔が使用されることを意味します。 - **手動**は、指定されたシンボルレートが使用されることを意味します。 - **固定間隔選択**では、選択する必要がある間隔の数を指定し、それに基づいてシンボルレートを計算します。 - **Gadnerクロック回復**は通常最良のオプションですが、いくつかの近似シンボルレートを指定する必要があります。 サンプルを押すと、次のようになります: ![](<../../images/image (644).png>) 次に、SigDiggerに**情報を持つレベルの範囲**を理解させるために、**下のレベル**をクリックし、最大のレベルまでクリックを維持する必要があります: ![](<../../images/image (439).png>) たとえば、**4つの異なる振幅レベル**があった場合、**シンボルあたりのビットを2に設定**し、最小から最大まで選択する必要があります。 最後に、**ズームを増やし**、**行のサイズを変更することで**ビットを確認できます(すべてを選択してコピーしてすべてのビットを取得できます): ![](<../../images/image (276).png>) 信号がシンボルあたり1ビット以上(たとえば2ビット)を持っている場合、SigDiggerには**どのシンボルが**00、01、10、11であるかを知る方法がないため、異なる**グレースケール**を使用してそれぞれを表現します(ビットをコピーすると、**0から3の数字**を使用し、処理する必要があります)。 また、**マンチェスター**などの**符号化**を使用し、**上+下**は**1または0**、**下+上**は1または0になる可能性があります。この場合、取得した上昇(1)と下降(0)を処理して、01または10のペアを0または1に置き換える必要があります。 ## FM Example {% file src="../../images/sigdigger_20220308_170858Z_2560000_433500000_float32_iq.raw" %} ### Uncovering FM #### Checking the frequencies and waveform FMで変調された情報を送信する信号の例: ![](<../../images/image (725).png>) 前の画像では、**2つの周波数が使用されている**ことがかなりよく観察できますが、**波形**を観察すると、**2つの異なる周波数を正しく識別できないかもしれません**: ![](<../../images/image (717).png>) これは、両方の周波数で信号をキャプチャしたため、1つは負の他の周波数に近いからです: ![](<../../images/image (942).png>) 同期された周波数が**他の周波数よりも1つの周波数に近い場合**、2つの異なる周波数を簡単に見ることができます: ![](<../../images/image (422).png>) ![](<../../images/image (488).png>) #### Checking the histogram 情報を持つ信号の周波数ヒストグラムを確認すると、2つの異なる信号を簡単に見ることができます: ![](<../../images/image (871).png>) この場合、**振幅ヒストグラム**を確認すると、**1つの振幅**しか見つからないため、**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}}