mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
203 lines
9.1 KiB
Markdown
203 lines
9.1 KiB
Markdown
# Radio
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|
||
|
||
## SigDigger
|
||
|
||
[**SigDigger** ](https://github.com/BatchDrake/SigDigger)是一个免费的数字信号分析仪,适用于GNU/Linux和macOS,旨在提取未知无线电信号的信息。它通过SoapySDR支持多种SDR设备,并允许可调的FSK、PSK和ASK信号解调,解码模拟视频,分析突发信号并实时收听模拟语音通道。
|
||
|
||
### Basic Config
|
||
|
||
安装后,有一些配置选项可以考虑。\
|
||
在设置(第二个标签按钮)中,您可以选择**SDR设备**或**选择一个文件**进行读取,以及要调谐的频率和采样率(如果您的PC支持,建议最高可达2.56Msps)。
|
||
|
||
.png>)
|
||
|
||
在GUI行为中,如果您的PC支持,建议启用一些选项:
|
||
|
||
.png>)
|
||
|
||
> [!NOTE]
|
||
> 如果您发现您的PC没有捕获到信号,请尝试禁用OpenGL并降低采样率。
|
||
|
||
### Uses
|
||
|
||
- 只需**捕获信号的一段时间并分析它**,只需按住“Push to capture”按钮,保持所需时间。
|
||
|
||
.png>)
|
||
|
||
- SigDigger的**调谐器**有助于**捕获更好的信号**(但也可能会降低信号质量)。理想情况下,从0开始,继续**增大**,直到您发现引入的**噪声**大于您所需的**信号改善**。
|
||
|
||
.png>)
|
||
|
||
### Synchronize with radio channel
|
||
|
||
使用[**SigDigger** ](https://github.com/BatchDrake/SigDigger)与您想要收听的频道同步,配置“基带音频预览”选项,配置带宽以获取所有发送的信息,然后将调谐器设置到噪声真正开始增加之前的水平:
|
||
|
||
.png>)
|
||
|
||
## Interesting tricks
|
||
|
||
- 当设备发送信息突发时,通常**第一部分是前导码**,因此您**不必担心**如果您**没有找到信息**或**那里有一些错误**。
|
||
- 在信息帧中,您通常应该**找到不同的帧彼此对齐**:
|
||
|
||
.png>)
|
||
|
||
.png>)
|
||
|
||
- **在恢复比特后,您可能需要以某种方式处理它们**。例如,在曼彻斯特编码中,上+下将是1或0,下+上将是另一个。因此,1和0的对(上和下)将是真实的1或真实的0。
|
||
- 即使信号使用曼彻斯特编码(不可能找到连续超过两个的0或1),您也可能在前导码中**找到多个1或0**!
|
||
|
||
### Uncovering modulation type with IQ
|
||
|
||
有3种方式在信号中存储信息:调制**幅度**、**频率**或**相位**。\
|
||
如果您正在检查信号,有不同的方法可以尝试找出用于存储信息的方式(更多方法见下文),但一个好的方法是检查IQ图。
|
||
|
||
.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
|
||
|
||
使用[**SigDigger** ](https://github.com/BatchDrake/SigDigger)检查AM信息,仅查看**包络**,您可以看到不同的清晰幅度水平。所用信号以AM发送信息脉冲,这就是一个脉冲的样子:
|
||
|
||
.png>)
|
||
|
||
这就是符号的一部分与波形的样子:
|
||
|
||
.png>)
|
||
|
||
#### Checking the Histogram
|
||
|
||
您可以**选择包含信息的整个信号**,选择**幅度**模式和**选择**,然后单击**直方图**。您可以观察到仅找到2个清晰的水平。
|
||
|
||
.png>)
|
||
|
||
例如,如果您在此AM信号中选择频率而不是幅度,您只会找到1个频率(没有信息调制在频率上仅使用1个频率)。
|
||
|
||
.png>)
|
||
|
||
如果您发现很多频率,这可能不会是FM,可能信号频率只是因为频道而被修改。
|
||
|
||
#### With IQ
|
||
|
||
在此示例中,您可以看到有一个**大圆**,但也有**很多点在中心**。
|
||
|
||
.png>)
|
||
|
||
### Get Symbol Rate
|
||
|
||
#### With one symbol
|
||
|
||
选择您能找到的最小符号(以确保它只是1个),并检查“选择频率”。在这种情况下,它将是1.013kHz(即1kHz)。
|
||
|
||
.png>)
|
||
|
||
#### With a group of symbols
|
||
|
||
您还可以指示要选择的符号数量,SigDigger将计算1个符号的频率(选择的符号越多,可能越好)。在这种情况下,我选择了10个符号,“选择频率”为1.004 Khz:
|
||
|
||
.png>)
|
||
|
||
### Get Bits
|
||
|
||
发现这是一个**AM调制**信号和**符号率**(并且知道在这种情况下某个上意味着1,某个下意味着0),很容易**获取信号中编码的比特**。因此,选择包含信息的信号并配置采样和决策,然后按下采样(检查**幅度**已选择,发现的**符号率**已配置,**Gadner时钟恢复**已选择):
|
||
|
||
.png>)
|
||
|
||
- **同步到选择间隔**意味着如果您之前选择了间隔以找到符号率,则将使用该符号率。
|
||
- **手动**意味着将使用指示的符号率。
|
||
- 在**固定间隔选择**中,您指示应选择的间隔数量,并从中计算符号率。
|
||
- **Gadner时钟恢复**通常是最佳选项,但您仍需指示一些近似的符号率。
|
||
|
||
按下采样后,出现以下内容:
|
||
|
||
.png>)
|
||
|
||
现在,为了让SigDigger理解**信息承载的水平范围**,您需要单击**较低水平**并保持按住,直到达到最高水平:
|
||
|
||
.png>)
|
||
|
||
如果例如有**4个不同的幅度水平**,您应该将**每个符号的比特数配置为2**,并从最小值选择到最大值。
|
||
|
||
最后**增加****缩放**和**更改行大小**,您可以看到比特(您可以选择所有并复制以获取所有比特):
|
||
|
||
.png>)
|
||
|
||
如果信号每个符号有超过1个比特(例如2),SigDigger**无法知道哪个符号是**00、01、10、11,因此它将使用不同的**灰度**来表示每个(如果您复制比特,它将使用**0到3的数字**,您需要处理它们)。
|
||
|
||
此外,使用**编码**如**曼彻斯特**,**上+下**可以是**1或0**,而下+上可以是1或0。在这些情况下,您需要**处理获得的上(1)和下(0)**以替换成对的01或10为0或1。
|
||
|
||
## FM Example
|
||
|
||
{{#file}}
|
||
sigdigger_20220308_170858Z_2560000_433500000_float32_iq.raw
|
||
{{#endfile}}
|
||
|
||
### Uncovering FM
|
||
|
||
#### Checking the frequencies and waveform
|
||
|
||
发送信息调制为FM的信号示例:
|
||
|
||
.png>)
|
||
|
||
在前面的图像中,您可以很好地观察到**使用了2个频率**,但如果您**观察**波形,您可能**无法正确识别这2个不同的频率**:
|
||
|
||
.png>)
|
||
|
||
这是因为我在两个频率上捕获了信号,因此一个大约是另一个的负值:
|
||
|
||
.png>)
|
||
|
||
如果同步频率**更接近一个频率而不是另一个**,您可以轻松看到这2个不同的频率:
|
||
|
||
.png>)
|
||
|
||
.png>)
|
||
|
||
#### Checking the histogram
|
||
|
||
检查带有信息的信号的频率直方图,您可以轻松看到2个不同的信号:
|
||
|
||
.png>)
|
||
|
||
在这种情况下,如果您检查**幅度直方图**,您将发现**只有一个幅度**,因此**不能是AM**(如果您发现很多幅度,可能是因为信号在频道中失去了功率):
|
||
|
||
.png>)
|
||
|
||
这将是相位直方图(这清楚表明信号不是相位调制):
|
||
|
||
.png>)
|
||
|
||
#### With IQ
|
||
|
||
IQ没有识别频率的字段(到中心的距离是幅度,角度是相位)。\
|
||
因此,要识别FM,您应该**在此图中基本上只看到一个圆**。\
|
||
此外,不同的频率通过IQ图的**速度加速穿过圆**来“表示”(因此在SysDigger中选择信号时,IQ图被填充,如果您发现创建的圆中的加速或方向变化,这可能意味着这是FM):
|
||
|
||
.png>)
|
||
|
||
### Get Symbol Rate
|
||
|
||
您可以使用**与AM示例中使用的相同技术**来获取符号率,一旦您找到了承载符号的频率。
|
||
|
||
### Get Bits
|
||
|
||
您可以使用**与AM示例中使用的相同技术**来获取比特,一旦您**发现信号是频率调制的**和**符号率**。
|
||
|
||
{{#include ../../banners/hacktricks-training.md}}
|