主要内容

设计一个具有模拟数据的深度神经网络来检测WLAN路由器假冒

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

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

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

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

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

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

系统描述

假设有一个室内空间,其中有许多具有已知MAC地址的可信路由器,我们将这些路由器称为已知路由器。另外,假设未知路由器可能进入观察区域,其中一些可能是路由器模仿者。类“Unknown”表示不包含在已知集中的任何传输设备。下图以已知3个路由器为例。观察者从这些路由器收集非高吞吐量(non-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.设置未知路由器的数量多于已知路由器的数量,以表示数据集中未知路由器射频指纹的可变性。

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信号。该对象配置为20mhz的信道带宽,用于处理非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 = com . 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)修复随机生成器%在先前的模拟无线电中随机分配伤害%定义范围放射损伤= repmat(...结构(“PhaseNoise”0,“DCOffset”0,“FrequencyOffset”0),...numTotalRouters, 1);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));结束

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

应用前面定义的射频和信道损伤。重置每个无线电的信道对象以生成一个独立的信道。使用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;testindexes = 1:numTestFramesPerRouter;tic generatedMACAddresses =字符串(numtotalroutes, 1);rxLLTF = 0 (frameLength, numTotalFramesPerRouter);接收的L-LTF序列routerIdx = 1: numtotalroutes生成一个12位随机十六进制数作为MAC地址%已知路由器。将所有未知路由器的MAC地址设置为%的“AAAAAAAAAAAA”。如果(routerIdx<=numKnownRouters) generatedMACAddresses(routerIdx) = string(dec2hex(bi2de(randi([0 1], 12,4)))');其他的generatedMACAddresses (routerIdx) =“AAAAAAAAAAAA”结束elapsedTime = seconds(toc);elapsedTime。格式=“hh: mm: ss”;流('%s -为MAC地址为%s\n的路由器%d生成帧...elapsedTime, routerIdx在wlanFrameConfig对象中设置MAC地址beaconFrameConfig。Address2 = generatedMACAddresses(routerIdx);生成信标帧位beacon = wlanMACFrame(beaconFrameConfig,“OutputFormat”“位”);tx波形= wlanWaveformGenerator(beacon, nonHTConfig);tx波形= helperNormalizeFramePower(tx波形);添加零以考虑信道延迟tx波形= [tx波形;0 (160 1)];% #好< AGROW >重置multipathChannel对象以生成一个新的静态通道reset(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”;流('%s -生成%d/%d帧\n'...elapsedTime, 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地址为4DA3EE3C8968 00:00:00 -为路由器2生成MAC地址为B1077CFE3777 00:00:00 -为路由器3生成MAC地址为DB28133A97BF 00:00:00 -为路由器4生成MAC地址为B8AF375DAC0F 00:00:01 -为路由器5生成MAC地址为aaaaaaaaaa 00:00:01 -为路由器6生成MAC地址为AAAAAAAAAAAA 00:00:01 -为路由器7生成MAC地址AAAAAAAAAAAA 00:00:01 -为路由器8生成MAC地址的帧aaaaaaaaaa 00:00:02 -为路由器9生成MAC地址的帧AAAAAAAAAAAA 00:00:02 -为路由器11生成MAC地址的帧AAAAAAAAAAAA 00:00:02 -为路由器12生成MAC地址的帧AAAAAAAAAAAA 00:00:02 -为路由器13生成MAC地址的帧AAAAAAAAAAAA 00:00:02 -为路由器14生成MAC地址的帧AAAAAAAAAAAA 00:00:02 -为路由器14生成MAC地址的帧address AAAAAAAAAAAA
标记接收帧。标记第一个numknown路由器与他们的MAC%的地址。把剩下的标注为“未知”。标签=生成的macaddresses;labels(generatedMACAddresses == generatedMACAddresses(numtotalroutes)) =“未知”;yTrain = repelem(labels, numTrainingFramesPerRouter);yVal = repelem(标签,numValidationFramesPerRouter);yTest = repelem(标签,numTestFramesPerRouter);

创建实值输入矩阵

深度学习模型只适用于实数。因此,I和Q被分成两列。然后,数据被重新排列到一个frameLength X 2 X 1 X numFrames数组中深度学习工具箱.此外,训练集被打乱,标签变量被保存为分类变量。

将数据集重新排列为单列向量xTrainingFrames = xTrainingFrames(:);xValFrames = xValFrames(:);xTestFrames = xTestFrames(:);I和Q分开xTrainingFrames = [real(xTrainingFrames), imag(xTrainingFrames)];xValFrames = [real(xValFrames), imag(xValFrames)];xTestFrames = [real(xTestFrames), imag(xTestFrames)];将训练数据重塑为帧长度x 2 x 1 x% numTrainingFramesPerRouter*numTotalRouters矩阵xTrainingFrames = permute(...重塑(xTrainingFrames,[frameength,numTrainingFramesPerRouter*numTotalRouters, 2,1]),...[1 3 4 2]);% Shuffle数据vr = randperm(numTotalRouters*numTrainingFramesPerRouter);xTrainingFrames = xTrainingFrames(:,:,:,vr);创建标签向量和shuffleyTrain = categorical(yTrain(vr));将验证数据重塑为帧长度x 2 x 1 x% numValidationFramesPerRouter*numTotalRouters矩阵xValFrames = permute(...重塑(xValFrames,[frameength,numValidationFramesPerRouter*numTotalRouters, 2,1]),...[1 3 4 2]);创建标签向量yVal = categorical(yVal);将测试数据集重塑为numTestFramesPerRouter*numTotalRouter矩阵xTestFrames = permute(...(xTestFrames,[frameength,numTestFramesPerRouter*numTotalRouters, 2,1]),...[1 3 4 2]);% #好< NASGU >创建标签向量yTest = categorical(yTest);% #好< NASGU >

训练神经网络

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

poolSize = [2 1];strideSize = [2 1];图层= [imageInputLayer([frameLength 2 1],“归一化”“没有”“名字”输入层的)卷积2dlayer ([7 1], 50,“填充”, [10],“名字”“CNN1”) batchNormalizationLayer (“名字”“BN1”) leakyReluLayer (“名字”“LeakyReLu1”) maxPooling2dLayer (poolSize“步”strideSize,“名字”“MaxPool1”)卷积2dlayer ([7 2], 50,“填充”, [10],“名字”“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进行训练。若要显式设置执行环境,请设置'ExecutionEnvironmentto one ofcpu”、“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)和使用的MACAddresses (generatedMACAddresses)负载(“rfFingerprintingSimulatedDataTrainedNN.mat”...“generatedMACAddresses”...“simNet”...“xTestFrames”...“次”结束

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

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

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

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

figure 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. (numKnownRouters+1)Address2 = generatedMACAddresses(macIndex);生成信标帧位beacon = wlanMACFrame(beaconFrameConfig,“OutputFormat”“位”);tx波形= wlanWaveformGenerator(beacon, nonHTConfig);tx波形= helperNormalizeFramePower(tx波形);添加零以考虑信道延迟tx波形= [tx波形;0 (160 1)];% #好< AGROW >创建一个不可见的多路径通道。换句话说,创造一个看不见的东西% RF指纹。reset(multipathChannel) frameCount= 0;frameCount检测WLAN包,使用返回接收到的L-LTF信号% rfFingerprintingNonHTFrontEnd对象[payloadFull, cfgNonHT, rxNonHTData, chanEst, noiseVar, LLTF] =...rxFrontEnd (rxSig);如果frameecount = frameCount+1;recBits = wlanNonHTDataRecover(rxNonHTData, chanEst,...noiseVar cfgNonHT,“EqualizationMethod”“ZF”);解码和评估恢复的位mpduCfg = wlanMPDUDecode(recBits, cfgNonHT);%分离I和Q,重塑神经网络LLTF= [real(LLTF), imag(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,"已知,指纹不匹配,检测到ROUTER IMPERSONATOR "))其他的disp (strcat (“MAC地址”, mpduCfg。Address2,“已知,指纹匹配”))结束其他的disp (strcat (“MAC地址”, mpduCfg。Address2,“未被识别,未知装置”))结束结束重置multipathChannel对象以生成一个新的静态通道重置(multipathChannel)结束结束
MAC Address 09C551658660是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address 09C551658660是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address 09C551658660是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address 09C551658660是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA是已知的,指纹不匹配ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA已知,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address CDECF20C29CA已知,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405已知,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405已知,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address DF56A9E15405已知,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address EDC4537D86B1是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address EDC4537D86B1是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED MAC Address EDC4537D86B1是已知的,指纹不匹配,ROUTER IMPERSONATOR DETECTED
MAC Address AAAAAAAAAAAA is not recognized, unknown device MAC Address AAAAAAAAAAAA is not recognized, unknown device MAC Address AAAAAAAAAAAA is not recognized, unknown device MAC Address AAAAAAAAAAAA is not recognized, unknown device MAC Address AAAAAAAAAAAA is not recognized

进一步的探索

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

  • 多路径概要(PathDelays而且AveragePathGainsRayleigh通道物体的性质),

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

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

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

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

  • 全连接层数,

  • 卷积层数。

附录:Helper函数

函数[impairedSig] = helperrfimpairment (sig, radioimpairment, fs)% helperrfimpairment应用射频损伤% IMPAIREDSIG = helperrfimpairment (SIG, radioimpairment, FS)返回信号% SIG后应用的损害定义的辐射损害%的结构,在抽样率FS。%应用频率偏移fOff = com . phasefrequencyoffset (“FrequencyOffset”, radioImpairments。FrequencyOffset,“SampleRate”fs);施加相位噪声phaseNoise = helperGetPhaseNoise(放射损伤);phNoise = com . phasenoise (“水平”phaseNoise,“FrequencyOffset”、abs (radioImpairments.FrequencyOffset));impFOff = fOff(sig);impPhNoise = phNoise(impFOff);施加直流偏移量%impairedSig = impPhNoise + 10^(radioimpairment . dcoffset /10);结束函数[phaseNoise] = helperGetPhaseNoise(radioimpairment)获取相位噪声值负载(“Mrms.mat”mrm的见这种情况称之为‘多年并的“十一”);[~, iRms] = min(abs(放射损伤。PhaseNoise - Mrms));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页。

相关的话题

Baidu
map