主要内容

设计一个具有模拟数据的深神经网络,以检测WLAN路由器模拟

此示例显示如何使用模拟数据设计射频(RF)指纹卷积卷积神经网络(CNN)。您将使用已知和未知路由器的模拟无线局域网(WLAN)标信标帧培训CNN,用于RF指纹识别。然后,您可以比较接收信号的媒体访问控制(MAC)地址和CNN检测到的RF指纹以检测WLAN路由器模拟器。

有关如何使用从真实的Wi-Fi路由器捕获的信号测试设计的神经网络的更多信息,请参见用捕获的数据测试深度神经网络,以检测WLAN路由器模拟的例子。

使用RF指纹识别检测路由器模拟

路由器模拟是对WLAN网络的攻击形式,恶意代理商试图模拟合法路由器和特技网络用户连接它。基于简单数字标识符的安全识别解决方案,例如MAC金宝搏官方网站地址,IP地址和SSID,在检测此类攻击方面无效。这些标识符可以很容易地欺骗。因此,除了这些简单的数字标识符之外,还使用更安全的解决方案使用其他信息,例如无线电链路的RF签名。

无线发射器-接收器对在接收器上创建一个独特的射频签名,该签名是信道和射频损伤的组合。射频指纹识别是通过这些签名区分在共享光谱中的传输无线电的过程。在[1],作者设计了一种深入学习(DL)网络,用于消耗原始基带同步/正交(IQ)样本,并识别发送无线电。如果RF损伤是主导的,则网络可以识别发送无线电,或者沟道轮廓在操作时间期间保持恒定。大多数WLAN网络具有固定路由器,当接收器位置也固定时,创建静态通道配置文件。在这样的场景中,深度学习网络可以通过将接收的信号的RF指纹和MAC地址对与已知路由器的RF地址对进行比较来识别路由器模拟器。

本示例使用WLAN工具箱™模拟一个带有多个固定路由器和固定观测器的WLAN系统,并使用深度学习工具箱™使用模拟数据训练神经网络(NN)。

系统描述

假设具有许多具有已知MAC地址的信任路由器的室内空间,我们将参考已知路由器。此外,假设未知路由器可以进入观察区域,其中一些可以是路由器模拟器。类“未知”表示已知集中不包含的任何发送设备。下图显示了有三个已知路由器的场景。观察者从这些路由器收集非高吞吐量(非HT)信标信号,并使用(遗留)长训练字段(L-LTF)来识别RF指纹。传输的L-LTF信号对于所有路由器都是相同的,使算法避免任何数据依赖性。由于路由器和观察者是固定的,RF指纹(多径信道轮廓和RF损伤的组合)RF1,RF2和RF3不会随时间变化。未知路由器数据是随机RF指纹的集合,其与已知路由器不同。

下图显示了连接到路由器和移动热点的用户。在培训之后,观察者接收信标帧并对MAC地址进行解码。此外,观察者提取L-LTF信号并使用该信号对信标帧的源的RF指纹进行分类。如果MAC地址和RF指纹匹配,则在路由器1,路由器2和Router3的情况下,那么观察者将源声明为“已知”路由器。如果信标的MAC地址不在数据库中,并且RF指纹与任何已知路由器不匹配,则在移动热点的情况下,观察者将源声明为“未知”路由器。

下图显示了操作中的路由器模拟器。路由器模拟器(A.K.A.邪恶双胞胎)可以复制已知路由器的MAC地址和发送信标帧。然后,黑客可以堵塞原始路由器并强制用户连接到邪恶的双胞胎。观察者也从邪恶的双胞胎接收信标帧并对MAC地址进行解码。解码的MAC地址匹配已知路由器的MAC地址,但RF指纹不匹配。观察者将源声明为路由器模拟器。

设置系统参数

为每个路由器生成5,000个非HT WLAN信标帧的数据集。使用MAC地址作为已知路由器的标签;剩余的被标记为“未知”。培训NN以对已知路由器进行分类,并检测任何未知路由器。将数据集分成培训,验证和测试,分裂比分别为80%,10%和10%。考虑一个20 dB的SNR,在5 GHz频段上工作。模拟设备的数量设置为4,但可以通过选择不同的值来修改它numKnownRouters.将未知路由器的数量设置为多于已知路由器的数量,以表示未知路由器射频指纹的可变性。

numKnownRouters = 4;numUnknownRouters = 10;numTotalRouters = numKnownRouters + numUnknownRouters;信噪比= 20;% D bChannelNumber = 153;% WLAN信道数channelBand = 5;%GHz.frameLength = 160;样品中的%L-LTF序列长度

默认情况下,此示例下载培训数据和培训的网络//www.tatmou.com/金宝appsupportfiles/spc/RFFingerprinting/RFFingerprintingSimulatedData.tar.gz.如果没有Internet连接,可以在连接Internet的计算机上手动下载该文件,并将其保存到与当前示例文件相同的目录下。

要快速运行此示例,请下载预训练的培训网络并生成少数帧,例如10.要在计算机上培训网络,请选择“立即列车网络”选项(即设置trainNow为true)。在Intel(R) Xeon(R) W-2133 CPU @ 3.6 GHz、64mb内存上生成5000帧数据大约需要50分钟。使用Nvidia(R) Titan Xp GPU培训此网络大约需要5分钟。在CPU上进行训练可能会导致训练持续时间很长。

训练=错误的如果TrainNow NumTotalFramesPerrouter = 5000;%#OK 别的numtotalframesperrouter = 10;rffingerpingdownloaddata('模拟'结尾
开始下载数据文件://www.tatmou.com/supportfiles/spc/RFFingerprin金宝appting/RFFingerprintingSimulatedData.tar.gz下载和提取文件完成
numtringframesperrouter = numtotalframesperrouter * 0.8;numvalidationframesperrouter = numtotalframesperrouter * 0.1;numtestframesperrouter = numtotalframesperrouter * 0.1;

生成WLAN波形

实现802.11a / g / n / ac协议的Wi-Fi路由器在5 GHz频段中传输信标帧,使用OFDM非HT格式广播其存在和功能。信标帧由两个主要部分组成:前导码(同步)和有效载荷(数据)。前码有两部分:短暂的培训和长期培训。在此示例中,除了每个路由器的MAC地址之外的有效载荷包含相同的比特。CNN使用前导码的L-LTF部分作为训练单元。重用RF指纹的L-LTF信号提供架空无指纹校准解决方案。采用wlanmacframeconfig.(WLAN工具箱)wlanmacframe.(WLAN工具箱)Wlannonhtconfig(WLAN工具箱), 和WlanWaveFormGenerator.(WLAN工具箱)函数生成WLAN信标帧。

%创建信标框架 - 正文配置对象FrameBodyConfig = WLANMACMANAGEMENCONFIG;%创建信标帧配置对象beaconFrameConfig = wlanMACFrameConfig ('frameType''灯架'......“ManagementConfig”,framebodyconfig);%生成信标帧位[〜,mpdulength] = wlanmacframe(beaconframeconfig,'输出格式'“位”);%创建wlannonhtconfig对象,使用20 MHz带宽和MCS 1nonHTConfig = wlanNonHTConfig (......'信道带宽'“CBW20”......“主持人”,1,......“PSDULength”, mpduLength);

rffingerprintnonhtfrontend.对象执行前端处理,包括提取L-LTF信号。该对象配置有20MHz的信道带宽以处理非HT信号。

rxfrontend = rffingerpingnonhtfrontend('信道带宽'“CBW20”);FC = HelperwleanchannEndrequency(ChannelNumber,ChannelBand);fs = wlansamplerate(nonhtconfig);

设置频道和RF损伤

通过频道传递每个帧

  • 瑞利多径衰落

  • 无线电损伤,如相位噪声,频率偏移和直流偏移量

  • 情况下

Rayleigh Multipath和Awgn

该通道通过瑞利多径衰落通道通过信号通过comm.rayleighchannel.系统对象。假设[0 1.8 3.4]样本的延迟曲线,其具有[0 -2 -10] dB的相应平均路径增益。由于通道是静态的,将最大多普勒移位设置为零,以确保通道不会为同一无线电改变。使用这些设置实现多径通道。使用噪音使用情况下功能,

MultiPathChannel = Comm.RayLeighChannel(......'采样率',fs,......'pathdelays',[0 1.8 3.4] / fs,......'平均水平',[0 -2 -10],......'MaximumDopplersHift',0);

无线电障碍

RF损伤以及它们相应的值范围是:

  • 相位噪声[0.01,0.3] rms(度)

  • 频率偏移[-4,4] ppm

  • DC偏移:[-50,-32] DBC

看到Helperrfimpastments.有关RF损伤仿真的更多细节的功能。此功能使用comm.phasefrequencyoffset.comm.phasenoise.系统对象。

phasenoiserange = [0.01,0.3];freqoffsetrange = [-4,4];dcoffsetrange = [-50,-32];RNG(123456)%修复随机发生器%将随机损伤分配给先前的每个模拟无线电%定义的范围放射脂肪灭= REPMAT(......struct('phasenoise',0,“DCOffset”,0,“FrequencyOffset”,0),......numTotalRouters, 1);为了routerIdx = 1:numTotalRouters (routerIdx)。PhaseNoise =......兰特*(Phasenoiserange(2)-phaseNoiserange(1))+ Phasenoiserange(1);放射池(RouterIDX).dcoffset =......rand *(dcoffsetrange(2)-dcoffsetrange(1))+ dcoffsetrange(1);放射池(routeridx).frequencyOffset =......fc / 1e6 *(rand *(freqoffsetrange(2)-freqoffsetrange(1))+ freqoffsetrange(1));结尾

应用频道障碍并生成培训的数据帧

应用先前定义的RF和渠道障碍。重置每个无线电的通道对象以生成独立的通道。采用rffingerprintnonhtfrontend.函数来处理所接收的帧。最后,从每个传输的WLAN帧中提取L-LTF。将接收的L-LTF信号分成训练,验证和测试集。

%创建将存储培训,验证和测试的变量%数据集xtrainingframes = zeros(frameLength,numtringframesperrouter * numtotalrouters);xvalframs = zeros(frameLength,NumValidationFramesPerrouter * numtotalRouters);xtestframes = zeros(frameLength,numtestframesperrouter * numtotalrouters);用于列车,验证和测试数据单元的%索引向量TrainingIndices = 1:NumTringFramesPerrouter;ValidationIndices = 1:NumValidationFramesPerrouter;testindices = 1:numtestframesperrouter;TIC生成的macaddresses = strings(numtotalrouters,1);rxlltf = zeros(frameLength,numtotalframesPerrouter);%接受L-LTF序列为了routeridx = 1:numtotalRouters%生成12位随机十六进制数作为MAC地址%已知路由器。将所有未知路由器的MAC地址设置为%'aaaaaaaaaaa'。如果(routeridx <= numknownrouters)生成的macaddresses(routeridx)= string(dec2hex(bi2de(randi(randi([0 1],12,4)))');别的generatedMACAddresses (routerIdx) ='aaaaaaaaaaa'结尾流('%s -为MAC地址为%s\n的路由器%d生成帧'......datestr (toc / 86400,'hh:mm:ss'),routerIDX,生成的macaddresses(routeridx))%设置wlanFrameConfig对象的MAC地址beaconFrameConfig。Address2 = generatedMACAddresses (routerIdx);%生成信标帧位灯塔= wlanMACFrame (beaconFrameConfig,'输出格式'“位”);txwaveform = wlanwaveformgenerator(Beacon,nonhtconfig);txwaveform = HelpernormalizeFramepower(TxWaveForm);%添加零点以解释通道延迟txwaveform = [txwaveform;零(160,1)];%#OK %重置多路径向量对象以生成新的静态通道重置(MultiPathChannel)framecount = 0;尽管frameecount %检测WLAN数据包并使用返回接收的L-LTF信号%rffingerprintnonhtfrontend对象[valid, ~, ~, ~, ~, ~, LLTF] = rxFrontEnd(rxSig); / /发送数据%保存成功接收到L-LTF信号如果有效的framecount = framecount + 1;rxlltf(:,framecount)= lltf;结尾如果mod(framecount,500)== 0 fprintf('%s  - 生成%d /%d帧\ n'......datestr (toc / 86400,'hh:mm:ss')、frameCount numTotalFramesPerRouter)结尾结尾rxLLTF = rxLLTF(:, randperm(numTotalFramesPerRouter));%将数据分成培训,验证和测试xTrainingFrames (:, trainingIndices + (routerIdx-1) * numTrainingFramesPerRouter)......= rxlltf(:,培训indices);xvalframes(:, validationindices +(routeridx-1)* numvalidationflamesperrouter)......= rxLLTF(:, validationIndices+ numTrainingFramesPerRouter);xTestFrames (:, testIndices + (routerIdx-1) * numTestFramesPerRouter)......= rxlltf(:,,testindices + numtrainingframesperrouter + numvalidationflamesperrouter);结尾
就是——为路由器生成帧1与MAC地址4 da3ee3c8968 00:00:04 -路由器生成帧2与MAC地址B1077CFE3777 00:00:04 -路由器生成帧3与MAC地址DB28133A97BF 00:00:04 -路由器生成帧4与MAC地址B8AF375DAC0F 00:00:05 -路由器生成帧5 MAC地址AAAAAAAAAAAA 00:00:05——为路由器生成框架6 MAC地址AAAAAAAAAAAA 00:00:05——为路由器生成帧7 MAC地址AAAAAAAAAAAA 00:00:05 -路由器生成帧8与MAC地址AAAAAAAAAAAA 00:00:06——为路由器9与MAC地址生成帧AAAAAAAAAAAA 00:00:06 - 10为路由器生成框架MAC地址为aaaaaaaaaa 00:00:06 -为路由器11生成MAC地址为AAAAAAAAAAAA 00:00:06 -为路由器12生成MAC地址为AAAAAAAAAAAA 00:00:06 -为路由器13生成MAC地址为AAAAAAAAAAAA 00:00:07 -为路由器14生成MAC地址为AAAAAAAAAAAA
%标签接收帧。用他们的Mac标记第一个NumKnown.Routers% 地址。用“未知”标记其余的。标签=生成的macaddresses;标签(GeneratedMacaddresses == GenerationMacaddresses(NumtotalRouters))=“未知”;YTrain = Repelem(标签,NumTringFramesPerrouter);YVAL = REPELEM(标签,NUMValidationFramesPerrouter);ytest = repelem(标签,numtestframesperrouter);

创建真实值的输入矩阵

深度学习模式仅适用于实数。因此,i和q被分成两个单独的列。然后,根据需要重新排列到2 x FrameLength x 1 x Numframes矩阵中深度学习工具箱.此外,对训练集进行洗牌,并将标签变量保存为分类变量。

将数据集重新排列成一个列向量xtrainingframes = xtrainingframes(:);xvalframes = xvalframes(:);xtestframes = xtestframes(:);我和q之间的%分开xTrainingFrames = [real(xTrainingFrames), imagg (xTrainingFrames)]; / /图片xValFrames = [real(xValFrames), imag(xValFrames)]; / /xTestFrames = [real(xTestFrames), imagag (xTestFrames)]; / /图片%重塑培训数据到2 x frameLength x 1 x中%numtringframesperrouter * numtotalRouters矩阵xtrainingframes = permute(......REPAPE(XTRINGFRAMES,[FRAMELENG,NUMTRINGFRAMESPERRUTER * NUMTOTALOUTERS,2,1]),......[1 3 4 2]);%洗牌数据VR = RANDPERM(NumtotalRouters * numtrainingframesPerrouter);xtrainingframes = xtrainingflams(:,::,VR);%创建标签向量和随机播放YTrain =分类(Ytrain(VR));%重塑验证数据到2 x frameLength x 1 x中% numValidationFramesPerRouter * numTotalRouters矩阵xvalframes = permute(......REPAPE(XVALFRAMES,[FRAMELENGTH,NUMValidationFramesPerrouter * NumToTalRouters,2,1]),......[1 3 4 2]);%创建标签向量YVAL =分类(YVAL);%重塑测试数据集到numtestframesperrouter * numtotalRouter矩阵xTestFrames =交换(......重塑(xTestFrames [frameLength numTestFramesPerRouter * numTotalRouters 2,1)),......[1 3 4 2]);%#OK %创建标签向量ytest =分类(ytest);%#OK 

训练神经网络

该示例使用由两个卷积和三个完全连接的层组成的神经网络(NN)架构。这种设计背后的直觉是第一层将在I和Q中独立学习功能。请注意,过滤尺寸为1x7。然后,下一层将使用2x7的滤波器大小,其将提取将I和Q组合的特征提取。最后,最后三个完全连接的图层将使用前面层中提取的功能表现为分类器[1]

poolsize = [2 1];浮体= [2 1];图层= [imageInputLayer([FrameLength 2 1],'正常化''没有任何'“名字”输入层的)卷积2dlayer([7 1],50,'填充'(1 0),“名字”'cnn1'batchnormalizationlayer(“名字”'bn1') leakyReluLayer (“名字”'leakyrelu1') maxPooling2dLayer (poolSize“步”strideSize,“名字”“MaxPool1”)卷积2dlayer([7 2],50,'填充'(1 0),“名字”“CNN2”batchnormalizationlayer(“名字”'bn2') leakyReluLayer (“名字”'leakyrelu2') maxPooling2dLayer (poolSize“步”strideSize,“名字”“MaxPool2”)全连接列(256,“名字”'fc1') leakyReluLayer (“名字”'leakyrelu3') dropoutLayer (0.5,“名字”'dropout1') fullyConnectedLayer (80,“名字”'fc2') leakyReluLayer (“名字”“LeakyReLu4”) dropoutLayer (0.5,“名字”'dropout2') fullyConnectedLayer (numKnownRouters + 1,“名字”'fc3')softmaxlayer(“名字”'softmax'scassificationlayer(“名字”'输出'
图层= 18×1层阵列,带有图层:1'输入层'图像输入160×2×1图像2'CNN1'卷积50 7×1卷绕卷发[11]和填充[1 1 0 0] 3'BN1'批量归一化批量归一化4'Liquidyrelu1'泄漏释放Relu泄漏释放尺寸0.01 5'MaxPool1'最大池2×1最大池步进[2 1]和填充[0 0 0 0] 6'CNN2'卷积50 7×2围绕的卷曲[1 1]和填充[1 1 0 0] 7'BN2'批量归一化批量归一化8'Reateryru2'泄漏的Relu泄漏Relu,带刻度0.01 9'MaxPool2'最大池2×1最大池与步道进行汇集2×1最大汇集[2 1]并填充[0 0 0 0] 10'FC1'完全连接的256完全连接的第11层'LiquidyLutu3'泄漏释放Relu泄漏Relu 0.01 12'Dropout1'丢失50%丢失13'FC2'完全连接的80完全连接的80完全连接的层14'Leaceryru4'泄漏释放泄漏释放尺度0.01 15'oppout2'丢弃器50%掉落16'FC3'完全连接的5完全连接的第17层软MAX Softmax Softmax 18'输出'分类输出CROssentropyex.

配置培训选项,使用256个小批量的ADAM优化器。默认情况下,“ExecutionEnvironment'设置为'auto',如果有一个可用的话,它使用GPU进行培训。否则,Trainnetwork.(深度学习工具箱)使用CPU进行培训。要明确设置执行环境,请设置'ExecutionEnvironment'一个'中央处理器”、“GPU.”、“多GPU.”,或“平行'。选择'中央处理器’可能会导致训练持续时间很长。

如果TrainNow Minibatchsize = 256;%#OK %培训选项选项=培训选项('亚当'......'maxepochs', 100,......'vightationdata'{xValFrames, yVal},......'验证职业',地板(numtringframesperrouter * numtotalrouters / minibatchsize / 3),......'verbose',错误的,......'L2Regularization',0.0001,......'italllearnrate',0.0001,......'minibatchsize',小匹马,......'验证景点',3,......“阴谋”'培训 - 进步'......'洗牌''每个时代');%培训网络simnet = trainnetwork(xtraindframes,ytrain,图层,选项);别的%加载培训的网络(SIMNET),测试数据集(XTestFrames和% yTest)和已使用的MACAddresses (generatedMACAddresses)加载('rffingerprintsimuldeddatatrownnnmat'......“generatedMACAddresses”......'simnet'......“xTestFrames”......'ytest'结尾

正如训练进度图所示,网络在大约2个时期内收敛到几乎100%的准确率。

对测试框架进行分类并计算神经网络的最终准确率。

%获取xTestFrames的预测类ytestpred =分类(simnet,xtestframes);%计算测试准确性testaccuracy =卑鄙(ytest == ytestpred);DISP(“测试精度:“+ TestAccuracy * 100 +“%”
测试精度:100%

绘制测试帧的混淆矩阵。如前所述,使用合成数据集实现完美的分类精度。

figure cm = confusionchart(yTest, yTestPred);厘米。Title =“测试数据的混淆矩阵”;cm.rowsummary =“row-normalized”

检测路由器模仿者

生成具有已知MAC地址和一个未知MAC地址的信标帧。生成一组新的射频损伤和多径信道。由于损伤都是新的,这些帧的射频指纹应该被分类为“未知”。具有已知MAC地址的帧代表路由器模拟器,而具有未知MAC地址的帧只是未知路由器。

FramesPerrouter = 4;众所周知的macaddresses =生成的macaddresses(1:numknnownrouters);%将随机损伤分配给先前的每个模拟无线电%定义的范围为了routeridx = 1:numtotalrouters andicimpairments(routeridx).phasenoise = rand *(phasenoiserange(2)-phaseNoiserange(1))+ phasenoiserange(1);放射池(routerIdx).dcoffset = rand *(dcoffsetrange(2)-dcoffsetrange(1))+ dcoffsetrange(1);放射池(routeridx).frequencyOffset = Fc / 1E6 *(rand *(freqoffsetrange(2)-freqoffsetrange(1))+ freqoffsetrange(1));结尾%重置多路径向量对象以生成新的静态通道重置(MultiPathChannel)%已知路由器和一个未知数为了macindex = 1 :( numknownrouters + 1)beaconframeconfig.address2 = GenerationMacaddresses(MacIndex);%生成信标帧位灯塔= wlanMACFrame (beaconFrameConfig,'输出格式'“位”);txwaveform = wlanwaveformgenerator(Beacon,nonhtconfig);txwaveform = HelpernormalizeFramepower(TxWaveForm);%添加零点以解释通道延迟txwaveform = [txwaveform;零(160,1)];%#OK 创建不可见的多路径通道。换句话说,创造一个看不见的东西%射频指纹。重置(MultiPathChannel)framecount = 0;尽管framecount %检测WLAN数据包并使用返回接收的L-LTF信号%rffingerprintnonhtfrontend对象[PAYLOADFULL,CFGNONHT,RXNONHTDATA,CHANEST,NOISEVAR,LLTF] =......rxfrontend(rxsig);如果payloadFull = frameecount +1;recBits = wlanonhtdatarecover (rxNonHTData, chanEst,)......Noisevar,cfgnonht,“EqualizationMethod”'ZF');%解码和评估恢复的位mpducfg = wlanmpdudecode(covbits,cfgnonht);%分离I和Q,重构神经网络lltf = [真实(lltf),imag(lltf)];lltf =换算(Rehape(lltf,frameLength,[],2,1),[1 3 4 2]);Ypred =分类(SIMNET,LLTF);如果sum(包含(熟知macaddresses,mpducfg.address2))〜= 0如果分类(ConventCharStoStrings(MPDucfg.Address2))〜= ypred disp(strcat(“MAC地址 ”,mpducfg.address2,“已知,指纹不匹配,检测到ROUTER IMPERSONATOR”)))别的DISP(Strcat(“MAC地址 ”,mpducfg.address2,“众所周知,指纹比赛”)))结尾别的DISP(Strcat(“MAC地址 ”,mpducfg.address2,“没有识别,未知的设备”)))结尾结尾%重置多路径向量对象以生成新的静态通道重置(MultiPathChannel)结尾结尾
MAC地址09C551658660 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC地址09C551658660 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC地址09C551658660 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC地址09C551658660 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC地址09C551658660 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC地址09C551658660 is known, fingerprint mismatch,ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA is known, fingerprint mismatch,DF56A9E15405 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405 is known, fingerprint mismatch,ROUTER IMPERSONATOR DETECTED MAC Address EDC4537D86B1 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address EDC4537D86B1 is known, fingerprint mismatch, ROUTER IMPERSONATOR DETECTED MAC Address EDC4537D86B1 is known, fingerprint mismatch,路由器发现冒名顶替者
MAC地址aaaaaaaaaa不被识别,未知设备MAC地址aaaaaaaaaa不被识别,未知设备MAC地址aaaaaaaaaa不被识别,未知设备MAC地址aaaaaaaaaa不被识别,未知设备MAC地址aaaaaaaaaa不被识别

进一步的探索

您可以通过修改不同通道和RF损伤的系统测试系统

  • 多路径配置文件(pathdelays.普通阶段瑞利通道对象的性质),

  • 信道噪声级(输入的信噪比情况下功能),

  • RF损伤(phasenoiserange.freqoffsetrange., 和dcoffsetrange.变量)。

你也可以通过改变来修改神经网络的结构

  • 卷积层参数(过滤器大小,过滤器数量,填充),

  • 完全连接的层数,

  • 卷积层数。

附录:辅助函数

功能[impairedSig] = helperrfimpairment (sig, radioimpairment, fs)(中文)% helperrfimpairment应用射频损伤% IMPAIREDSIG = helperrfimpairment (SIG, radioimpairment, FS)返回讯号应用由射线池定义的损伤后的%sig样品速率FS的%结构。%施加频率偏移量foff = comm.phasefrequencyoffset(“FrequencyOffset”,outdlempairments.frequencyOffset,'采样率',fs);%应用相位噪声phasenoise =螺钉自治食(池池);phnoise = comm.phaseNoise('等级',phasenoise,“FrequencyOffset”,ABS(底座配大码));Impfoff = foff(sig);immphnoise = Phnoise(Impfoff);%应用DC偏移量vipairedsig = immphnoise + 10 ^(汇码池池.dcoffset / 10);结尾功能[Phasenoise] =螺钉自治食(射限式)%HerpergeGEnenoise获取相位噪声值加载(“Mrms.mat”'先生女士''我的我''xi');[~, iRms] = min(abs(放射损伤。PhaseNoise - mrm));[~, iFreqOffset] = min(abs(xI - abs(radiodisments . frequencyoffset)));phaseNoise = -abs(MyI(iRms, iFreqOffset));结尾

选定的书目

[1] K.Sankhe,M.Belgiovine,F. Zhou,S. Riyaz,S.Ioannidis和K.Chowdhury,“Oracle:通过卷积神经网络优化的无线电分类”,IEEE Infocom 2019 - IEEE计算机通信会议,巴黎,法国,2019年,第370-378页。

相关话题