From 0d472e8cb3182794b8ceade4be21881231dfbbdb Mon Sep 17 00:00:00 2001 From: Ruakij Date: Wed, 24 Nov 2021 22:27:22 +0100 Subject: [PATCH] Implemented PacketType Authentication --- src/dto/Packet.js | 13 ++++++++++++- src/streamHandler/PacketStreamFactory.js | 15 +++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/dto/Packet.js b/src/dto/Packet.js index 0b4fda5..01d7466 100644 --- a/src/dto/Packet.js +++ b/src/dto/Packet.js @@ -9,6 +9,7 @@ const PacketType = { Acknowledgment: 'Acknowledgment', BlockAcknowledgment: 'BlockAcknowledgment', NoData: 'NoData', + Authentication: 'Authentication', Unknown: 'Unknown' } @@ -41,6 +42,14 @@ class BeaconPacket extends PacketWithSSID{} class ProbeRequestPacket extends PacketWithSSID{} class ProbeResponsePacket extends PacketWithSSID{} +const AuthenticationType = { + OpenSystem_1: 'OpenSystem_1', + OpenSystem_2: 'OpenSystem_2', + Unknown: 'Unknown', +} +class AuthenticationPacket extends Packet{ + authenticationType; +} // Specify exports module.exports = { @@ -49,5 +58,7 @@ module.exports = { PacketWithSSID, BeaconPacket, ProbeRequestPacket, - ProbeResponsePacket + ProbeResponsePacket, + AuthenticationType, + AuthenticationPacket, }; diff --git a/src/streamHandler/PacketStreamFactory.js b/src/streamHandler/PacketStreamFactory.js index 0e8f76d..331190e 100644 --- a/src/streamHandler/PacketStreamFactory.js +++ b/src/streamHandler/PacketStreamFactory.js @@ -1,7 +1,7 @@ const logger = require.main.require("./helper/logger.js")("PacketStreamFactory"); const { Transform } = require('stream'); const { DateTime } = require("luxon"); -const { PacketType, Packet, PacketWithSSID, BeaconPacket, ProbeRequestPacket, ProbeResponsePacket } = require.main.require('./dto/Packet.js'); +const { PacketType, Packet, PacketWithSSID, BeaconPacket, ProbeRequestPacket, ProbeResponsePacket, AuthenticationPacket, AuthenticationType } = require.main.require('./dto/Packet.js'); const PACKET_TYPE_MAP = { "Beacon": PacketType.Beacon, @@ -12,10 +12,16 @@ const PACKET_TYPE_MAP = { "Request-To-Send": PacketType.RequestToSend, "Clear-To-Send": PacketType.ClearToSend, "Acknowledgment": PacketType.Acknowledgment, - "BA": PacketType.BlockAcknowledgment + "BA": PacketType.BlockAcknowledgment, + "Authentication": PacketType.Authentication, }; const PACKET_TYPES_REGEX = Object.keys(PACKET_TYPE_MAP).join('|'); +const AUTHENTICATION_TYPE_MAP = { + "(Open System)-1": AuthenticationType.OpenSystem_1, + "(Open System)-2": AuthenticationType.OpenSystem_2, +} + /** * Read data from text-blocks and convert them to Packet */ @@ -73,6 +79,11 @@ class PacketStreamFactory extends Transform{ newPacket = new PacketWithSSID(); newPacket.ssid = data.match(new RegExp(`(^| )${packetTypeStr} `+'\\'+`((.{0,32})`+'\\'+`)($| )`, 'i'))?.[2] ?? null; break; + + case PacketType.Authentication: + newPacket = new AuthenticationPacket(); + newPacket.authenticationType = AUTHENTICATION_TYPE_MAP[data.match(/(?<=(^|\s)Authentication\s).{3,}(?=\:(\s|$))/i)[0]] ?? AuthenticationType.Unknown; + break; } if(newPacket) packet = Object.assign(new newPacket, packet); // Use new, more specific, packet and copy old data over }