该 GNU Radio 模块利用深度学习模型,为物理层安全应用提供信道指纹识别能力。
git clone <your-repo-url>/gr-PHYSEC.git
cd gr-PHYSEC
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
sudo ldconfig
gnuradio-companion
你应该会看到一个新的类别 [PHYSEC],其中包含 PHYSEC Fingerprint Block。
[PHYSEC] 类别PHYSEC Fingerprint Blockfrom gnuradio import gr
from gnuradio import PHYSEC
# Create decoupled PHYSEC blocks
spectrogram = PHYSEC.spectrogram_block(
vector_size=512,
sample_rate=1e6,
center_freq=2.4e9
)
feature_extractor = PHYSEC.feature_extraction_block(
model_path="/path/to/QExtractor.onnx"
)
feature_quantizer = PHYSEC.feature_quantization_block(
threshold_type="mean"
)
parity_generator = PHYSEC.parity_generation_block(
key_length=512
)
reconciler = PHYSEC.reconciliation_block(
key_length=512
)
privacy_amplifier = PHYSEC.privacy_amplification_block()
参见 examples/decoupled_physic_example.grc,了解使用解耦 PHYSEC 模块的完整示例流图。
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
model_path | string | - | ONNX 模型文件路径 |
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
threshold_type | string | "mean" | 阈值方法:"mean"、"median" 或 "zero" |
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
key_length | int | 512 | 用于奇偶校验生成的二进制密钥长度 |
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
key_length | int | 512 | 用于协调的二进制密钥长度 |
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| 无需参数 | - | - | 应用 SHA3-512 哈希 |
指纹输出消息包含:
{
"fingerprint": "generated_hash_string",
"block_count": 123,
"sample_rate": 1000000.0,
"center_freq": 2400000000.0,
"spectrogram_size": 512
}
你的 ONNX 模型应:
(batch, 204, 31) 的频谱图数据该模块提供大量调试信息:
spectrogram_block.py)grc/ 中对应的 GRC 模块定义运行示例脚本:
cd examples
python3 fingerprint_example.py
本项目采用 GPL-3.0-or-later 许可证。
如有问题和疑问:
| 参数 | 类型 | 默认值 | 描述 |
|---|
vector_size | int | 512 | 用于创建频谱图的 FFT 大小 |
sample_rate | float | 1e6 | SDR 采样率,单位为 Hz |
center_freq | float | 2.4e9 | SDR 中心频率,单位为 Hz |