主要内容

设计具有模拟数据的深度神经网络来检测无线局域网路由器模拟

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

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

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

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

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

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

系统描述

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

下图显示了连接到路由器和移动热点的用户。经过训练后,观察者接收信标帧并解码MAC地址。同时,观测器提取L-LTF信号,并利用该信号对信标帧源的射频指纹进行分类。如果MAC地址和RF指纹匹配,就像router1、router2和Router3一样,观察者就会宣布这个源为“已知”路由器。如果信标的MAC地址不在数据库中,射频指纹也不匹配任何已知路由器,就像移动热点的情况一样,那么观察者就会声明源为“未知”路由器。

下图显示了运行中的路由器模拟程序。路由器模拟程序(又名邪恶双胞胎)可以复制一个已知路由器的MAC地址并传输信标帧。然后,黑客可以干扰原始路由器,迫使用户连接到邪恶的孪生兄弟。观察者也从邪恶的孪生兄弟接收信标帧,并解码MAC地址。解码后的MAC地址与已知路由器的MAC地址匹配,但射频指纹不匹配。观察者将源声明为路由器模拟程序。

设置系统参数

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

numKnownRouters = 4;numUnknownRouters = 10;numTotalRouters = numKnownRouters + numUnknownRouters;信噪比= 20;% dBchannelNumber = 153;% WLAN通道数channelBand = 5;% GHzframeLength = 160;样本中L-LTF序列长度

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

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

trainNow =如果trainNow numTotalFramesPerRouter = 5000;% #好< UNRCH >其他的numTotalFramesPerRouter = 10;rfFingerprintingDownloadData (“模拟”结束
开始下载数据文件://www.ru-cchi.com/supportfiles/spc/RFFingerprinting/RFFingerprintingSimulatedData.tar.gz下载和解压文件完成
numTrainingFramesPerRouter = numTotalFramesPerRouter * 0.8;numValidationFramesPerRouter = numTotalFramesPerRouter * 0.1;numTestFramesPerRouter = numTotalFramesPerRouter * 0.1;

生成WLAN波形

实现802.11a/g/n/ac协议的Wi-Fi路由器在5 GHz频段传输信标帧,使用OFDM非ht格式广播它们的存在和能力。信标帧由两个主要部分组成:前导(SYNC)和有效载荷(DATA)。前言分为短训和长训两部分。在这个例子中,除了每个路由器的MAC地址外,负载包含相同的位。CNN使用序言的L-LTF部分作为训练单位。重用L-LTF信号进行射频指纹识别提供了一种无开销的指纹识别解决方案。使用wlanMACFrameConfig(WLAN工具箱)wlanMACFrame(WLAN工具箱)wlanNonHTConfig(WLAN工具箱),wlanWaveformGenerator(WLAN工具箱)功能生成WLAN信标帧。

创建信标框架主体配置对象frameBodyConfig = wlanMACManagementConfig;创建信标帧配置对象beaconFrameConfig = wlanMACFrameConfig (“FrameType”“灯塔”...“ManagementConfig”, frameBodyConfig);%生成信标帧位[~, mpduLength] = wlanMACFrame(beaconFrameConfig,“OutputFormat”“位”);%创建wlanNONHTConfig对象,使用20mhz带宽和MCS 1nonHTConfig = wlanNonHTConfig (...“ChannelBandwidth”“CBW20”...“主持人”, 1...“PSDULength”, mpduLength);

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

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

设置信道和射频损耗

使每个帧通过带有的通道

  • 瑞利多径衰落

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

  • 情况下

瑞利多径和AWGN

该信道将信号通过瑞利多径衰落信道comm.RayleighChannel系统对象™。假设[0 1.8 3.4]样本的延迟分布,对应的平均路径增益为[0 -2 -10]dB。由于信道是静态的,请将最大多普勒频移设置为零,以确保同一无线电的信道不发生变化。使用这些设置实现多路径通道。添加噪声使用情况下函数,

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

无线电障碍

射频损耗,其值范围为:

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

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

  • 直流偏移量:[-50,-32]dBc

看到helperRFImpairments功能,以了解射频减值模拟的更多细节。这个函数使用comm.PhaseFrequencyOffset而且comm.PhaseNoise系统对象。

phaseNoiseRange = [0.01, 0.3];freqOffsetRange = [- 4,4];dcOffsetRange = [-50, -32];rng (123456)%修复随机生成器给每个模拟无线电分配随机损伤%定义范围radioImpairments = repmat (...结构(“PhaseNoise”0,“DCOffset”0,“FrequencyOffset”0),...numTotalRouters, 1);routerIdx = 1:numTotalRouters radioimpairment (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));结束

应用信道损伤和生成训练数据帧

应用之前定义的射频和信道损耗。重置每个电台的频道对象以生成一个独立的频道。使用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 = strings(numTotalRouters, 1);rxLLTF = 0 (frameLength, numTotalFramesPerRouter);接收的L-LTF序列routerIdx = 1: numTotalRouters生成一个12位的随机十六进制数作为MAC地址%的路由器。设置所有未知路由器的MAC地址为%的“AAAAAAAAAAAA”。如果(routerIdx<=numKnownRouters) generatedMACAddresses(routerIdx) = string(dec2hex(bi2de(randi([0 1], 12, 4)))');其他的generatedMACAddresses (routerIdx) =“AAAAAAAAAAAA”结束elapsedTime =秒(toc);elapsedTime。格式=“hh: mm: ss”;流(为路由器%d生成MAC地址为%s\n的帧...elapsedTime、routerIdx generatedMACAddresses (routerIdx))在wlanFrameConfig对象中设置MAC地址beaconFrameConfig。Address2 = generatedMACAddresses (routerIdx);%生成信标帧位灯塔= wlanMACFrame (beaconFrameConfig,“OutputFormat”“位”);tx波形= wlanWaveformGenerator(信标,nonHTConfig);txWaveform = helperNormalizeFramePower (txWaveform);添加0以考虑通道延迟txWaveform = [txWaveform;0 (160 1)];% #好< AGROW >重置multipathChannel对象以生成一个新的静态通道重置(multipathChannel) frameCount = 0;frameCount%检测WLAN报文并返回接收到的L-LTF信号% rfFingerprintingNonHTFrontEnd对象[valid, ~, ~, ~, ~, LLTF] = rxFrontEnd(rxSig);%保存成功接收L-LTF信号如果有效frameCount = frameCount + 1;rxLLTF (:, frameCount) = LLTF;结束如果mod(frameCount,500) == 0 elapsedTime = seconds(toc);elapsedTime。格式=“hh: mm: ss”;流('% d/%d帧\n'...frameCount elapsedTime, 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);结束
—为MAC地址为4DA3EE3C8968 00:00:00的路由器1生成帧—为MAC地址为B1077CFE3777 00:00:00的路由器2生成帧—为MAC地址为DB28133A97BF 00:00:00的路由器3生成帧—为MAC地址为B8AF375DAC0F 00:00:01的路由器4生成帧—为MAC地址为AAAAAAAAAAAA 00:00:01的路由器5生成帧—为MAC地址为AAAAAAAAAAAA 00:00:01的路由器6生成帧—为MAC地址为aaaaaaaaaa 00:00:01的路由器7生成帧AAAAAAAAAAAA 00:00:01 -为MAC地址为aaaaaaaaaa的路由器8生成帧AAAAAAAAAAAA 00:00:02 -为MAC地址为aaaaaaaaaa的路由器10生成帧AAAAAAAAAAAA 00:00:02 -为MAC地址为aaaaaaaaaa 00:00:02的路由器11生成帧AAAAAAAAAAAA 00:00:02 -为MAC地址为aaaaaaaaaa 00:00:02的路由器12生成帧AAAAAAAAAAAA 00:00:02 -为MAC地址为aaaaaaaaaa 00:00:02的路由器13生成帧aaaaaaaaaa 00:00:02 -为MAC地址为aaaaaaaaaa的路由器14生成帧address AAAAAAAAAAAA
%标签接收帧。用MAC标记第一个numKnownRouters%的地址。其余的都标上“未知”。标签= generatedMACAddresses;labels(generatedMACAddresses == generatedMACAddresses(numTotalRouters)) =“未知”;yTrain = repelem(labels, numTrainingFramesPerRouter);yVal = repelem(labels, numValidationFramesPerRouter);yTest = repelem(labels, numTestFramesPerRouter);

创建实值输入矩阵

深度学习模型只适用于实数。因此,I和Q被分成两个单独的列。然后,数据被重新排列到frameLength X 2 X 1 X numFrames数组中深度学习工具箱.此外,对训练集进行洗牌,并将标签变量保存为类别变量。

将数据集重新排列为单列向量xTrainingFrames = xTrainingFrames (:);xValFrames = xValFrames (:);xTestFrames = xTestFrames (:);分开I和QxTrainingFrames = [real(xTrainingFrames), imag(xTrainingFrames)];xValFrames = [real(xValFrames), imag(xValFrames)];xTestFrames = [real(xTestFrames), imag(xTestFrames)];将训练数据重塑为frameLength x 2 x 1 x% numTrainingFramesPerRouter * numTotalRouters矩阵xTrainingFrames =交换(...重塑(xTrainingFrames [frameLength numTrainingFramesPerRouter * numTotalRouters 2,1)),...[1 3 4 2]);%洗牌数据vr = randperm (numTotalRouters * numTrainingFramesPerRouter);xTrainingFrames = xTrainingFrames (::,:, vr);创建标签矢量和洗牌yTrain =分类(yTrain (vr));将验证数据重塑为一个frameLength x 2 x 1 x% numValidationFramesPerRouter * numTotalRouters矩阵xValFrames =交换(...重塑(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]);% #好< NASGU >%创建标签向量欧美=分类(欧美);% #好< NASGU >

训练神经网络

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

poolSize = [2 1];strideSize = [2 1];layers = [imageInputLayer([frameLength 2],“归一化”“没有”“名字”输入层的)卷积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”) fullyConnectedLayer (256,“名字”“FC1”) leakyReluLayer (“名字”“LeakyReLu3”) dropoutLayer (0.5,“名字”“DropOut1”) fullyConnectedLayer (80,“名字”“取得”) leakyReluLayer (“名字”“LeakyReLu4”) dropoutLayer (0.5,“名字”“DropOut2”) fullyConnectedLayer (numKnownRouters + 1,“名字”“一个FC3”文件) softmaxLayer (“名字”“SoftMax”) classificationLayer (“名字”“输出”)]
layers = 18×1带有图层的图层数组: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”Max Pooling 2×1 max pooling with stride [2 1] and padding [0 0 0 0] 10 'FC1' Fully Connected 256 fully connected layer 11 'LeakyReLu3' Leaky ReLU Leaky ReLU with scale 0.01 12 'DropOut1' Dropout 50% dropout 13 'FC2' Fully Connected 80 fully connected layer 14 'LeakyReLu4' Leaky ReLU Leaky ReLU with scale 0.01 15 'DropOut2' Dropout 50% dropout 16 'FC3' Fully Connected 5 fully connected layer 17 'SoftMax' Softmax softmax 18 'Output' Classification Output crossentropyex

配置培训选项以使用小型批处理大小为256的ADAM优化器。默认情况下,“ExecutionEnvironment'设置为'auto',如果有可用的GPU,则使用GPU进行训练。否则,trainNetwork(深度学习工具箱)使用CPU进行训练。若要显式设置执行环境,请设置'ExecutionEnvironment“致某人”cpu”、“gpu”、“multi-gpu”,或“平行”。选择“cpu可能会导致很长时间的训练。

如果trainNow miniBatchSize = 256;% #好< UNRCH >%培训选项选择= trainingOptions (“亚当”...“MaxEpochs”, 100,...“ValidationData”{xValFrames, yVal},...“ValidationFrequency”、地板(numTrainingFramesPerRouter * numTotalRouters / miniBatchSize / 3),...“详细”假的,...“L2Regularization”, 0.0001,...“InitialLearnRate”, 0.0001,...“MiniBatchSize”miniBatchSize,...“ValidationPatience”3,...“阴谋”“训练进步”...“洗牌”“every-epoch”);%培训网络simNet = trainNetwork(xTrainingFrames, yTrain, layers, options);其他的加载训练网络(simNet),测试数据集(xTestFrames和% yTest)和使用的macaddress(生成的macaddress)负载(“rfFingerprintingSimulatedDataTrainedNN.mat”...“generatedMACAddresses”...“simNet”...“xTestFrames”...“次”结束

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

对测试帧进行分类,计算神经网络的最终精度。

获取xTestFrames的预测类yTestPred =分类(simNet xTestFrames);%计算测试精度testAccuracy =平均值(yTest == yTestPred);disp (“测试精度:“+ testAccuracy * 100 +“%”
测试精度:100%

绘制测试帧的混淆矩阵。如前所述,合成的数据集达到了完美的分类精度。

图cm = confusichart (yTest, yTestPred);厘米。Title =“测试数据混淆矩阵”;厘米。RowSummary =“row-normalized”

检测路由器冒名顶替者

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

framesPerRouter = 4;knownMACAddresses = generatedMACAddresses (1: numKnownRouters);给每个模拟无线电分配随机损伤%定义范围routerIdx = 1:numTotalRouters radioimpairment (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) beaconFrameConfig。Address2 = generatedMACAddresses (macIndex);%生成信标帧位灯塔= wlanMACFrame (beaconFrameConfig,“OutputFormat”“位”);tx波形= wlanWaveformGenerator(信标,nonHTConfig);txWaveform = helperNormalizeFramePower (txWaveform);添加0以考虑通道延迟txWaveform = [txWaveform;0 (160 1)];% #好< AGROW >创建一个不可见的多路径通道。换句话说,创造一个看不见的东西%射频指纹。重置(multipathChannel) frameCount = 0;frameCount%检测WLAN报文并返回接收到的L-LTF信号% rfFingerprintingNonHTFrontEnd对象[payloadFull, cfgNonHT, rxNonHTData, chanEst, noiseVar, LLTF] =...rxFrontEnd (rxSig);如果payloadFull frameCount = frameCount+1;recBits = wlanNonHTDataRecover(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已知,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址09C551658660已知,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址09C551658660已知,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址09C551658660已知,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址CDECF20C29CA已知,指纹不匹配,已知ROUTER IMPERSONATOR检测到的MAC地址CDECF20C29CA,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址CDECF20C29CA,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址DF56A9E15405,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址DF56A9E15405,指纹不匹配,ROUTER IMPERSONATOR检测到的MAC地址DF56A9E15405,已知ROUTER IMPERSONATOR检测到的MAC地址DF56A9E15405,指纹不匹配,ROUTER IMPERSONATOR检测到MAC地址EDC4537D86B1已知,指纹不匹配,ROUTER IMPERSONATOR检测到MAC地址EDC4537D86B1已知,指纹不匹配,ROUTER IMPERSONATOR检测到MAC地址EDC4537D86B1已知,指纹不匹配,ROUTER IMPERSONATOR检测到MAC地址EDC4537D86B1已知
MAC地址AAAAAAAAAAAA未被识别,未知设备MAC地址AAAAAAAAAAAA未被识别,未知设备MAC地址AAAAAAAAAAAA未被识别,未知设备MAC地址AAAAAAAAAAAA未被识别,未知设备

进一步的探索

您可以在不同的信道和射频损耗下测试系统

  • 多路径配置文件(PathDelays而且AveragePathGains瑞利信道对象的性质),

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

  • 射频损伤(phaseNoiseRangefreqOffsetRange,dcOffsetRange变量)。

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

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

  • 全连通层数,

  • 卷积层数。

附录:辅助函数

函数[impairedSig] = helperrfimpairment (sig, radioimpairment, fs)应用射频损伤% IMPAIREDSIG = helperrfimpairment (SIG, radioimpairment, FS)返回信号% SIG在应用由radioimpairment定义的损伤后%结构在采样率FS。%应用频率偏移fOff = comm.PhaseFrequencyOffset (“FrequencyOffset”, radioImpairments。FrequencyOffset,“SampleRate”fs);%应用相位噪声phaseNoise = helperGetPhaseNoise (radioImpairments);phNoise = comm.PhaseNoise (“水平”phaseNoise,“FrequencyOffset”、abs (radioImpairments.FrequencyOffset));impFOff = fOff(团体);impPhNoise = phNoise (impFOff);%应用直流偏移impairedSig = impPhNoise + 10^(radioimpairment . dcoffset /10);结束函数[phaseNoise] = helperGetPhaseNoise (radioImpairments)获取相位噪声值负载(“Mrms.mat”mrm的见这种情况称之为‘多年并的“十一”);[~, iRms] = min(abs);PhaseNoise - mrm));phaseNoise = -abs(MyI(iRms, iFreqOffset));结束

选定的参考书目

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

相关的话题

Baidu
map