主要内容

设计一种基于模拟数据的深度神经网络用于无线局域网路由器模拟检测

本实例演示了如何利用仿真数据设计射频指纹卷积神经网络。您可以使用来自已知和未知路由器的模拟无线局域网(WLAN)信标帧来训练CNN进行射频指纹。然后比较接收信号的媒体访问控制(MAC)地址和CNN检测到的射频指纹,以检测WLAN路由器模拟者。

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

利用射频指纹检测路由器模拟

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

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

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

系统描述

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

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

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

设置系统参数

为每个路由器生成5,000非ht WLAN信标帧的数据集。使用MAC地址作为已知路由器的标签;其余的则标注为“未知”。训练神经网络对已知路由器进行分类,同时检测未知路由器。将数据集拆分为training、validation和test,拆分比例分别为80%、10%和10%。考虑信噪比为20 dB,工作在5 GHz频段。模拟设备的数量设置为4,但可以通过选择不同的值来修改numknnown..将未知路由器的数量设置为多于已知路由器的数量,以表示未知路由器射频指纹的可变性。

numknnownrouters = 4;numunknownrouters = 10;numtotalrouters = numknownrouters + numunknownrouters;SNR = 20;% dBchannelNumber = 153;% WLAN信道数channelBand = 5;%GHzFrameLength = 160;样品中的%L-LTF序列长度

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

要快速运行此示例,请下载预先训练过的网络并生成少量帧,例如10。要在你的电脑上训练网络,选择“现在训练网络”选项(即设置训练为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;rfFingerprintingDownloadData (“模拟”结束
从://www.tatmou.com/supportfiles/spc/rffingering/rffinge金宝apprpressimuldeddata.tar.gz下载数据文件
numTrainingFramesPerRouter = numTotalFramesPerRouter * 0.8;numValidationFramesPerRouter = numTotalFramesPerRouter * 0.1;numTestFramesPerRouter = numTotalFramesPerRouter * 0.1;

生成WLAN波形

实现802.11a/g/n/ac协议的Wi-Fi路由器在5ghz频段发送信标帧,使用OFDM非ht格式广播它们的存在和功能。信标帧由两个主要部分组成:序言(同步)和有效载荷(数据)。前言分为短训练和长训练两部分。在本例中,有效负载包含每个路由器的除MAC地址之外的相同位。CNN使用序言中的L-LTF部分作为训练单元。利用L-LTF信号进行射频指纹识别提供了一种无需开销的指纹识别解决方案。使用wlanMACFrameConfigwlanMACFramewlanNonHTConfig,WlanWaveFormGenerator.功能生成WLAN信标帧。

%创建信标框架 - 正文配置对象frameBodyConfig = wlanMACManagementConfig;创建信标帧配置对象beaconFrameConfig = wlanMACFrameConfig ('frameType''灯架'...“ManagementConfig”, frameBodyConfig);%生成信标帧位[〜,mpdulength] = wlanmacframe(beaconframeconfig,'输出格式'“位”);%创建一个wlanonhtconfig对象,20mhz带宽和MCS 1被使用nonhtconfig = wlannonhtconfig(...“ChannelBandwidth”“CBW20”...“MCS”, 1,...“psdulength”,mpdulength);

rfFingerprintingNonHTFrontEnd对象进行前端处理,包括提取L-LTF信号。对象被配置为20 MHz的通道带宽来处理非ht信号。

rxFrontEnd = rfFingerprintingNonHTFrontEnd (“ChannelBandwidth”“CBW20”);fc = helperWLANChannelFrequency(channelNumber, channelBand);fs = wlanSampleRate (nonHTConfig);

设置频道和射频损伤

通过一个通道传递每一帧

  • 瑞利多径衰落

  • 无线电干扰,如相位噪声、频率偏移和直流偏移

  • AWGN.

Rayleigh Multipath和AWGN

该信道通过瑞利多径衰落信道使用comm.rayleighchannel.系统对象。假设时延分布为[0 1.8 3.4]样本,相应的平均路径增益为[0 -2 -10]dB。由于信道是静态的,将最大多普勒频移设置为零,以确保信道不会因同一无线电而改变。用这些设置实现多路径通道。使用AWGN.函数,

multipathChannel = comm.RayleighChannel (...'采样率'fs,...“PathDelays”, [0 1.8 3.4]/fs,...“AveragePathGains”,[0 -2 -10],...“MaximumDopplerShift”, 0);

无线电障碍

射频损伤及其对应的取值范围为:

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

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

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

看到升降机功能,了解更多关于射频损伤模拟的细节。这个函数使用comm.phasefrequencyOffset.comm.PhaseNoise系统对象。

phaseNoiseRange = [0.01, 0.3];freqOffsetRange =[- 4,4]; / /频率dcOffsetRange = [-50, -32];rng (123456)%固定随机发生器%对前面的每个模拟无线电分配随机损伤%定义范围radioImpairments = repmat (...结构(“PhaseNoise”0,“DCOffset”0,'surformoffset'0),...numTotalRouters, 1);routerIdx = 1:numTotalRouters (routerIdx)。PhaseNoise =...兰特* (phaseNoiseRange (2) -phaseNoiseRange (1) + phaseNoiseRange (1);radioImpairments (routerIdx)。DCOffset =...兰特* (dcOffsetRange (2) -dcOffsetRange (1) + dcOffsetRange (1);radioImpairments (routerIdx)。FrequencyOffset =...fc / 1 e6 *(兰德* (freqOffsetRange (2) -freqOffsetRange (1) + freqOffsetRange (1));结束

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

应用前面定义的射频和信道损害。重置每个无线电的channel对象以生成一个独立的channel。使用rfFingerprintingNonHTFrontEnd函数来处理接收到的帧。最后,从每个传输的WLAN帧中提取L-LTF。将接收到的L-LTF信号分解为训练、验证和测试集。

%创建用于存储培训、验证和测试的变量%的数据集xTrainingFrames = 0 (frameLength, numTrainingFramesPerRouter*numTotalRouters);xValFrames = 0 (frameLength, numValidationFramesPerRouter*numTotalRouters);xTestFrames = 0 (frameLength, numTestFramesPerRouter*numTotalRouters);%列、验证和测试数据单元的索引向量trainingIndices = 1: numTrainingFramesPerRouter;validationIndices = 1: numValidationFramesPerRouter;testIndices = 1: numTestFramesPerRouter;tic generatedMACAddresses = string (numTotalRouters, 1);rxLLTF = 0 (frameLength, numTotalFramesPerRouter);%收到L-LTF序列routerIdx = 1: numTotalRouters%生成12位随机十六进制数作为MAC地址%的路由器。设置所有未知路由器的MAC地址为%的“AAAAAAAAAAAA”。如果(routeridx <= numknownrouters)生成的macaddresses(routeridx)= string(dec2hex(bi2de(randi([01],12,4)));其他的生成的macaddresses(routeridx)=“AAAAAAAAAAAA”结束流('%s -为MAC地址为%s\n的路由器%d生成帧'...datestr(toc / 86400,“HH: MM: SS”)、routerIdx generatedMACAddresses (routerIdx))%设置wlanFrameConfig对象的MAC地址beaconFrameConfig。Address2 = generatedMACAddresses (routerIdx);%生成信标帧位灯塔= wlanMACFrame (beaconFrameConfig,'输出格式'“位”);tx波形= wlanWaveformGenerator(信标,非htconfig);txWaveform = helperNormalizeFramePower (txWaveform);%添加零点以解释通道延迟txWaveform = [txWaveform;0 (160 1)];% #好< AGROW >重置multipathChannel对象以生成一个新的静态通道重置(multipathChannel) frameCount = 0;frameecount %检测WLAN数据包并使用返回接收的L-LTF信号%rffingerprintnonhtfrontend对象[有效,〜,〜,〜,〜,lltf] = rxfrontend(rxsig);% Save成功接收到L-LTF信号如果有效frameCount = frameCount + 1;rxLLTF (:, frameCount) = LLTF;结束如果mod(frameCount,500) == 0'%s  - 生成%d /%d帧\ n'...datestr(toc / 86400,“HH: MM: SS”)、frameCount numTotalFramesPerRouter)结束结束rxlltf = rxlltf(:, randperm(numtotalframesperrouter));%将数据分成培训,验证和测试xTrainingFrames (:, trainingIndices + (routerIdx-1) * numTrainingFramesPerRouter)...= rxLLTF (:, trainingIndices);xValFrames (:, validationIndices + (routerIdx-1) * numValidationFramesPerRouter)...= rxLLTF(:, validationIndices+ numTrainingFramesPerRouter);xTestFrames (:, testIndices + (routerIdx-1) * numTestFramesPerRouter)...= rxLLTF(:, testIndices + numTrainingFramesPerRouter+numValidationFramesPerRouter);结束
00:00:00  - 用于路由器的框架1带MAC地址71153FFD7ACA 00:00:01  - 用于路由器2的帧与MAC地址5F4A8EAD6AD2 00:00:01  - 带有MAC地址A91A85793DAA 00:00:01- 带有MAC地址的路由器4生成帧841f1be784b0 00:00:02  - 用于路由器5的生成帧,带有MAC地址AAAAAAAAAAAA 00:00:02  - 带有MAC地址AAAAAAAAAAAA 00:00:02为路由器生成帧7使用MAC地址AAAAAAAAAAAA 00:00:02  - 用于路由器8的帧与MAC地址AAAAAAAAAAAA 00:00:03  - 带有MAC地址AAAAAAAAAAAA 00:00:03与MAC地址产生帧AAAAAAAAAAA00:00:03  - 用于路由器11的框架11带MAC地址AAAAAAAAAAAA 00:00:04  - 用于路由器12的帧与MAC地址AAAAAAAAAAAA 00:00:04  - 用于路由器13与MAC地址AAAAAAAAAAAA 00:00:04- 使用MAC地址生成路由器14的帧aaaaaaaaaaa
%标签接收帧。用它们的MAC标记第一个numKnownRouters%的地址。将其余部分标为“未知”。标签=生成的macaddresses;标签(GenerationMacaddresses == GenerationMacaddresses(NumtotalRouters))=“未知”;Ytrain = Repelem(标签,NumTringFramesPerrouter);YVAL = REPELEM(标签,NUMValidationFramesPerrouter);ytest = repelem(标签,numtestframesperrouter);

创建真实值的输入矩阵

深度学习模型只适用于真实的数字。因此,I和Q被分成两列。然后,数据被重新排列成一个2 x frame ength x 1 x numFrames矩阵,根据深度学习工具箱.此外,对训练集进行洗牌,并将标签变量保存为分类变量。

%重新排列数据集到一列向量中xtrainingframes = xtrainingframes(:);xvalframes = xvalframes(:);xtestframes = xtestframes(:);% I和Q分开xtrainingframes = [real(xtrainingflams),imag(xtrainingframes)];xvalframes = [real(xvalframes),imag(xvalframes)];xtestframes = [真实(xtestframes),imag(xtestframes)];%重塑训练数据为2 ×帧长度× 1 ×% numTrainingFramesPerRouter * numTotalRouters矩阵xTrainingFrames =交换(...重塑(xTrainingFrames [frameLength numTrainingFramesPerRouter * numTotalRouters 2,1)),...[1 3 4 2]);%洗牌数据vr = randperm (numTotalRouters * numTrainingFramesPerRouter);xTrainingFrames = xTrainingFrames (::,:, vr);%创建标签向量和随机yTrain =分类(yTrain (vr));%重塑验证数据到2 x frameLength x 1 x中%NumValidationFramesPerrouter * numtotalRouters矩阵xValFrames =交换(...重塑(xValFrames [frameLength numValidationFramesPerRouter * numTotalRouters 2,1)),...[1 3 4 2]);创建标签向量yVal =分类(yVal);%重塑测试数据集为numTestFramesPerRouter*numTotalRouter矩阵xtestframes = permute(...REPAPE(XTestFrames,[FrameLength,NumTestFramesPerrouter * NumtotalRouters,2,1]),...[1 3 4 2]);% #好< NASGU >创建标签向量ytest =分类(ytest);% #好< NASGU >

训练神经网络

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

poolSize = [2 1];strideSize = [2 1];layers = [imageInputLayer([frameLength 2 1]),'正常化'“没有”“名字”输入层的)卷积2dlayer([7 1],50,'填充',[1 0],“名字”“CNN1”)BatchnormalizationLayer(“名字”“BN1”) leakyReluLayer (“名字”“LeakyReLu1”)maxpooling2dlayer(poolsize,“步”,浮步,“名字”'maxpool1'[7 2], 50,'填充',[1 0],“名字”“CNN2”)BatchnormalizationLayer(“名字”“BN2”) leakyReluLayer (“名字”“LeakyReLu2”)maxpooling2dlayer(poolsize,“步”,浮步,“名字”'maxpool2') fullyConnectedLayer (256,“名字”“FC1”) leakyReluLayer (“名字”“LeakyReLu3”)DropoutLayer(0.5,“名字”“DropOut1”)全连接列(80,“名字”“取得”) leakyReluLayer (“名字”“LeakyReLu4”)DropoutLayer(0.5,“名字”“DropOut2”)全连接列(numknownders + 1,“名字”“一个FC3”文件) softmaxLayer (“名字”'softmax') classificationLayer (“名字”“输出”)]
图层数组:1输入层的图像输入160×2×1图片2的CNN1卷积50 7×1旋转步[1]和填充[1 1 0 0]3“BN1”批量标准化批量标准化4“LeakyReLu1”漏ReLU漏ReLU规模0.01 5“MaxPool1”马克斯池2×1马克斯池步(2 - 1)和填充[0 0 0 0]6 CNN2卷积50 7×2曲线玲珑步[1]和填充[1 1 0 0]7“BN2”批量标准化批量标准化8“LeakyReLu2”漏ReLU漏ReLU规模0.01 9“MaxPool2”马克斯池2×1马克斯池步(2 - 1)和填充[0 0 0 0]10“FC1”完全连接256完全连接层11“LeakyReLu3”漏ReLU漏水的ReLU规模0.01 12 DropOut1辍学50% dropout 13 'FC2' Fully Connected 80 Fully Connected layer 14 'LeakyReLu4' Leaky ReLU Leaky ReLU与刻度0.01 15 'DropOut2' dropout 50% dropout 16 'FC3' Fully Connected 5 Fully Connected layer 17 'SoftMax' SoftMax SoftMax 18 'Output' Classification Output crossentropyex

配置培训选项以使用带有迷你批量大小的adam优化程序256.默认情况下,'execultionenvironment.'设置为“自动”,如果有可用的,则使用GPU进行培训。除此以外,trainNetwork(深度学习工具箱)使用CPU进行培训。要明确设置执行环境,请设置'execultionenvironment.'一个'cpu','gpu','multi-gpu', 或者 '平行线'.选择“cpu’可能会导致训练持续时间很长。

如果trainNow miniBatchSize = 256;%#OK %培训选择选择= trainingOptions (“亚当”...“MaxEpochs”, 100,...“ValidationData”{xValFrames, yVal},...“ValidationFrequency”、地板(numTrainingFramesPerRouter * numTotalRouters / miniBatchSize / 3),...'verbose'假的,...“L2Regularization”, 0.0001,...“InitialLearnRate”, 0.0001,...'迷你atchsize'miniBatchSize,...“ValidationPatience”,3,...“阴谋”“训练进步”...'洗牌'“every-epoch”);%训练网络simNet = trainNetwork(xTrainingFrames, yTrain, layers, options);其他的%加载培训的网络(SIMNET),测试数据集(XTestFrames和%ytest)和二手Macaddresses(生成的MacAddresses)负载(“rfFingerprintingSimulatedDataTrainedNN.mat”...“generatedMACAddresses”...“simNet”...“xTestFrames”...“次”结束

随着培训进展的剧情,网络将大约2个时期收敛到几乎100%的准确性。

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

%获取XTestFrames的预测类ytestpred =分类(Simnet,XTestFrames);计算试验精度testaccuracy =卑鄙(ytest == ytestpred);DISP(“测试精度:“+ testAccuracy * 100 +“%”
测试精度:100%

绘制测试框架的混淆矩阵。如前所述,使用合成数据集可以达到完美的分类精度。

图cm = ConfusionChart(Yest,Ytestpred);cm.title =“测试数据的混淆矩阵”;厘米。RowSummary ='行标准化'

检测路由器模拟器

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

framesPerRouter = 4;knownMACAddresses = generatedMACAddresses (1: numKnownRouters);%对前面的每个模拟无线电分配随机损伤%定义范围routerIdx = 1:numTotalRouters (routerIdx)。PhaseNoise =rand*( phaseNoiseRange(2)-phaseNoiseRange(1) ) + phaseNoiseRange(1); radioImpairments(routerIdx).DCOffset = rand*( dcOffsetRange(2)-dcOffsetRange(1) ) + dcOffsetRange(1); radioImpairments(routerIdx).FrequencyOffset = fc/1e6*(rand*( freqOffsetRange(2)-freqOffsetRange(1) ) + freqOffsetRange(1));结束重置multipathChannel对象以生成一个新的静态通道重置(multipathChannel)%运行所有已知路由器和一个未知路由器macIndex = 1:(numKnownRouters+1)Address2 = generatedMACAddresses (macIndex);%生成信标帧位灯塔= wlanMACFrame (beaconFrameConfig,'输出格式'“位”);tx波形= wlanWaveformGenerator(信标,非htconfig);txWaveform = helperNormalizeFramePower (txWaveform);%添加零点以解释通道延迟txWaveform = [txWaveform;0 (160 1)];% #好< AGROW >%创建一个看不见的多径通道。换句话说,创造一个看不见的%rf指纹。重置(multipathChannel) frameCount = 0;frameecount < frameesperrouter rxMultipath = multipathChannel(tx波形);rxImpairment = helperrfimpairment (rxMultipath, radioimpairment (routerIdx), fs);rxSig = awgn (rxImpairment、信噪比、0);%检测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(recBits, cfgNonHT);%单独的i和q并重塑神经网络LLTF =[真实(LLTF),图像放大(LLTF)];LLTF = permute(重塑(LLTF,frameLength,[], 2,1), [1 3 4 2]);ypred = classification (simNet, LLTF);如果sum(contains(knownMACAddresses, mpduCfg.Address2)) ~= 0如果分类(convertCharsToStrings (mpduCfg.Address2)) ~ = ypred disp (strcat (“MAC地址”, mpduCfg。Address2,“已知,指纹错配,路由器模拟器检测到”))其他的disp (strcat (“MAC地址”, mpduCfg。Address2,“已知,指纹匹配”))结束其他的disp (strcat (“MAC地址”, mpduCfg。Address2,“未被识别,设备未知”))结束结束重置multipathChannel对象以生成一个新的静态通道重置(multipathChannel)结束结束
已知MAC地址09C551658660是已知的指纹错配,路由器非匹配器检测到的MAC地址09C551658660是已知的指纹错配,路由器非匹配器检测到的MAC地址09C551658660是已知的指纹错配,路由器非匹配器,路由器模拟器检测到MAC地址。已知CdeCF20C29CA指纹错配,检测到MAC地址CDECF20C29CA,指纹错配,路由器Impersonator检测到的MAC地址CDEC29CA是已知的,路由器非匹配器检测到的MAC地址CDEC29CA是已知的,指纹错配,路由器Impersonator检测到的MAC地址DF56A9E15405已知指纹不匹配,路由器非匹配器检测到的MAC地址DF56A9E15405指纹错配,路由器仿旧器检测到的MAC地址DF56A9E15405是指纹错配,路由器Impersonator检测到的MAC地址DF56A9E15405是指纹的,指纹MismatcH,Router Impersonator检测到的MAC地址EDC4537D86B1是已知的,路由器非匹配器检测到的MAC地址EDC4537D86B1,指纹错配,Routers Impersonator检测到的MAC地址EDC4537D86B1是已知的,路由器Impersonator检测到的MAC地址EDC4537D86B1,指纹不匹配,检测到路由器模拟器
MAC地址AAAAAAAAAAA未被认可,未知的设备MAC地址AAAAAAAAAAA未被识别,未知的设备MAC地址AAAAAAAAAAA未被识别,未知的设备MAC地址AAAAAAAAAAA未被识别,未知的设备

进一步的探索

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

  • 多路径配置文件(PathDelaysAveragePathGains瑞利频道对象的属性),

  • 信道噪声水平(SNR输入AWGN.功能),

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

您还可以通过更改修改神经网络结构

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

  • 完全连接的层数,

  • 卷积层数。

附录:辅助函数

函数[impairedSig] = helperrfimpairment (sig, radioimpairment, fs)(中文)% helperrfimpairment应用射频损伤% IMPAIREDSIG = helperrfimpairment (SIG, radioimpairment, FS)返回讯号% SIG应用无线电损伤定义的损伤后%结构,样品率FS。应用频率偏移foff = comm.phasefrequencyOffset('surformoffset', radioImpairments。FrequencyOffset,'采样率',FS);%施加相位噪声phaseNoise = helperGetPhaseNoise (radioImpairments);phNoise = comm.PhaseNoise (“水平”,phasenoise,'surformoffset'、abs (radioImpairments.FrequencyOffset));impFOff = fOff(团体);impPhNoise = phNoise (impFOff);%应用DC偏移量vipairedsig = immphnoise + 10 ^(汇码池池.dcoffset / 10);结束函数[phaseNoise] = helperGetPhaseNoise (radioImpairments)获取相位噪声值负载('mrms.mat'mrm的见这种情况称之为‘多年并的“十一”);[~, iRms] = min(abs(放射损伤。PhaseNoise - mrm));[~, iFreqOffset] = min(abs(xI - abs(radiodisments . frequencyoffset)));phaseNoise = -abs(MyI(iRms, iFreqOffset));结束

选定的参考书目

[1] K. Sankhe, M. belgium ovine, F. Zhou, S. Riyaz, S. Ioannidis and K. Chowdhury, "ORACLE:通过卷积神经网络优化无线电分类",IEEE INFOCOM 2019 - IEEE计算机通信会议,巴黎,法国,2019,第370-378页。