网站添加标签云,网站推广活动,皮具 东莞网站建设,做图的模板下载网站射频指纹
射频指纹是什么
射频指纹是一种利用无线电信号的特征来识别设备或用户的技术。射频指纹可以用来做设备身份认证、位置跟踪、安全防护等应用。射频指纹的优点是难以伪造、不依赖于额外的硬件或软件、适用于多种无线通信协议。
射频指纹识别流程
射频指纹识别的一般…射频指纹
射频指纹是什么
射频指纹是一种利用无线电信号的特征来识别设备或用户的技术。射频指纹可以用来做设备身份认证、位置跟踪、安全防护等应用。射频指纹的优点是难以伪造、不依赖于额外的硬件或软件、适用于多种无线通信协议。
射频指纹识别流程
射频指纹识别的一般流程包括以下几个步骤
信号采集使用接收设备如SDR来捕获无线电信号并将其转换为数字信号。信号预处理对数字信号进行滤波、同步、解调等操作以提取出有效的信息。射频指纹提取从预处理后的信号中提取出能够反映设备或用户特征的参数如幅度、相位、频率、调制方式等。射频指纹匹配将提取出的射频指纹与数据库中已有的射频指纹进行比较计算相似度或距离判断是否属于同一设备或用户。
射频指纹来源
稳态信号稳态信号是指在通信过程中持续存在的信号如前导码、导频、数据包等。稳态信号的射频指纹主要来源于设备的硬件差异如晶振、放大器、滤波器等。瞬态信号瞬态信号是指在通信过程中短暂出现的信号如开关机、跳频切换等。瞬态信号的射频指纹主要来源于设备的软件差异如时钟偏移、电源管理、协议实现等。
原始信号raw各种变换、高阶低阶的那些频域、时域的
射频指纹提取方式
手动提取手动提取是指根据人为设定的规则或标准从信号中提取出特定的参数作为射频指纹。手动提取的优点是简单易实现缺点是需要专业知识和经验且可能忽略一些潜在的特征。自动提取自动提取是指利用深度学习等方法从信号中自动学习和提取出有效的特征作为射频指纹。自动提取的优点是能够发现更多的特征缺点是需要大量的数据和计算资源且可能存在过拟合或欠拟合的问题。手动——机器学习自动-——深度学习(各种网络)
低功耗蓝牙射频指纹
低功耗蓝牙数据获取
低功耗蓝牙BLE是一种广泛应用于物联网和智能设备中的无线通信技术。由于BLE具有低功耗、低成本、低复杂度等特点它也成为了射频指纹识别的一个重要研究对象。为了获取BLE数据我使用了以下方法
使用SDR如HackRF One作为接收设备设置合适的中心频率、采样率、增益等参数捕获BLE信号并将其保存为IQ数据文件。使用GNU Radio或Python等工具对IQ数据文件进行解调得到BLE的基带信号包括前导码、接入地址、数据包等。使用Wireshark或Python等工具对基带信号进行解析得到BLE的MAC地址、服务UUID、数据内容等信息。使用Python或Matlab等工具对基带信号进行切分提取出每个设备的前导码信号并保存为单独的文件作为后续射频指纹提取和识别的输入。目前找到有几个可用的关于低功耗蓝牙的公开数据集emm自己做吧其实就是抓取原始数据而已。光一个获取数据获取了两个月。使用SDR获取最原始的IQ需要经过解调和原始数据的截取emm过程有些复杂。主要参考代码如下所示matlab代码设备为usrp.
%% 本文从嗅探保存的原始数据帧中截取出数据帧,主要是这个工作其他的没做呢
clc
clear%% 参数和变量设置
phyMode LE1M;
bleParam helperBLEReceiverConfig(phyMode);
sampleRate 4e06;%软件自动AGC的
agc comm.AGC(MaxPowerGain,20,DesiredOutputPower,2);
%频偏补偿
freqCompensator comm.CoarseFrequencyCompensator(Modulation,OQPSK, ...SampleRate,4*1000000,...SamplesPerSymbol,2*bleParam.SamplesPerSymbol,...FrequencyResolution,100);
%前导码设置
prbDet comm.PreambleDetector(bleParam.RefSeq,Detections,First);
data_ [];
index 1; %数据帧数
pktCnt 1;
crcCnt 1;
%表示匹配的MAC地址 是否匹配保存的MAC地址第几份数据
MAC 64FD0B54A578; MAC_match true; MAC_index2; file_name MACMAC_index; file_save false;load_index 2;
load_file_name MACload_index;
% 加载数据
load(load_file_name);data_sum_index length(data);
%% 数据处理
% Loop to decode the captured Bluetooth LE samplesz
for i1:length(data)dataCaptures data{i};dataCaptures_ dataCaptures;disp(————————————————————一帧——————————————);while length(dataCaptures) bleParam.MinimumPacketLen%每次迭代时考虑捕获信号中的两帧startIndex 1;endIndex min(length(dataCaptures),2*bleParam.FrameLength);rcvSig dataCaptures(startIndex:endIndex);rcvSig_rcvSig;rcvAGC agc(rcvSig); % AGCrcvDCFree rcvAGC - mean(rcvAGC); %直流偏置消除[rcvFreqComp,fff] freqCompensator(rcvDCFree); %载波频偏消除rcvFilt conv(rcvFreqComp,bleParam.h,same); % 滤波% 执行同步[~, dtMt] prbDet(rcvFilt);release(prbDet);prbDet.Threshold max(dtMt);prbIdx prbDet(rcvFilt); %前导码结束位置非前导码开始位置哈看源码看到的%解析数据帧[cfgLLAdv,pktCnt,crcCnt,remStartIdx,PDULenInBytes] helperBLEPhyBitRecover(rcvFilt,...prbIdx,pktCnt,crcCnt,bleParam);%解析后续数据帧dataCaptures dataCaptures(1remStartIdx:end);% 这个嗅探所有MAC地址的if ~MAC_match ~isempty(cfgLLAdv)%可以加额外的处理%可以加额外的处理indexindex1;end%这个是针对特定MAC地址进行嗅探的if MAC_match ~isempty(cfgLLAdv)cfgLLAdv.AdvertiserAddressMACstart 1prbIdx-160;endIndex prbIdx (PDULenInBytes32)*8*4;data_{index} rcvSig_(start:endIndex);indexindex1;release(freqCompensator);release(prbDet);break;endrelease(freqCompensator);release(prbDet);end if MAC_match indexdata_sum_indexdisp(结束);if file_save save(file_name,data_);disp(成功保存usrp接收数据帧未截取)endbreak;endend
clear
最原始的深度学习识别方式(raw CNN)
为了验证BLE射频指纹的可行性我使用了最原始的深度学习识别方式即将前导码信号作为稳态信号直接输入到CNN中进行分类。我使用了以下方法
使用Python或Matlab等工具对前导码信号进行归一化、降采样、重塑等操作将其转换为二维的图像格式作为CNN的输入。使用TensorFlow或PyTorch等框架搭建一个简单的CNN模型包括卷积层、池化层、全连接层等。设置合适的超参数如学习率、批大小、迭代次数等。使用15个不同的BLE设备作为数据集每个设备采集500条前导码信号分为训练集和测试集。将训练集输入到CNN中进行训练得到模型参数。将测试集输入到CNN中进行测试得到分类结果和准确率。参考代码如下所示。
# 导入必要的库
import tensorflow as tf
from tensorflow.keras import layers, models# 定义输入的形状
input_shape (32, 2)# 定义CNN模型
model models.Sequential()
model.add(layers.Conv1D(32, 3, activationrelu, input_shapeinput_shape))
model.add(layers.MaxPooling1D(2))
model.add(layers.Conv1D(64, 3, activationrelu))
model.add(layers.MaxPooling1D(2))
model.add(layers.Conv1D(128, 3, activationrelu))
model.add(layers.GlobalAveragePooling1D())
model.add(layers.Dense(15, activationsoftmax))# 编译模型
model.compile(optimizeradam,losssparse_categorical_crossentropy,metrics[accuracy])# 打印模型的摘要
model.summary()
总结(后面不仅仅限于BLE)
通过这段时间的学习和实践我对低功耗蓝牙射频指纹有了一定的了解和掌握。我发现低功耗蓝牙射频指纹是一种有前景和挑战的技术它可以用来做设备身份认证、位置跟踪、安全防护等应用。但是低功耗蓝牙射频指纹也存在一些问题和困难如数据获取的复杂性、射频指纹提取的有效性、深度学习识别的可靠性等。这些问题需要进一步的研究和探索。具体的东西太多了需要交流联系咱。