9 #include <tins/ethernetII.h>
10 #include <tins/tins.h>
253 std::set<MACAddress> result;
254 for (
const auto &[addr, _] : clients)
264 if (!clients.count(addr))
266 return clients[addr];
274 if (!clients_security.count(addr))
276 return clients_security[addr];
298 std::optional<Recording::info>
299 save_traffic(
const std::filesystem::path &save_path,
const std::string &name);
307 std::optional<Recording::info>
309 const std::string &name);
316 bool handle_data(Tins::Packet *pkt);
322 bool handle_management(Tins::Packet *pkt);
329 void update_client_metadata(
const Tins::Packet &pkt);
335 std::vector<NetworkSecurity>
336 detect_security_modes(
const Tins::Dot11ManagementFrame &mgmt)
const;
342 std::vector<wifi_standard_info>
343 detect_wifi_capabilities(
const Tins::Dot11ManagementFrame &mgmt)
const;
350 bool check_pmf_capable(
const Tins::Dot11ManagementFrame &mgmt)
const;
357 bool check_pmf_required(
const Tins::Dot11ManagementFrame &mgmt)
const;
363 bool is_ccmp(
const Tins::Dot11ManagementFrame &mgmt)
const;
366 uint32_t decrypted_pkt_count = 0;
367 std::shared_ptr<spdlog::logger> logger;
370 int wifi_channel = 0;
371 std::vector<Tins::Packet *> captured_packets;
373 std::vector<std::shared_ptr<PacketChannel>> converted_channels;
374 std::vector<wifi_standard_info> wifi_stds_supported;
377 uint8_t radio_length = 0;
378 uint8_t radio_channel_freq = 0;
379 uint8_t radio_channel_type = 0;
380 uint8_t radio_antenna = 0;
382 bool capabilities_detected =
false;
383 std::vector<NetworkSecurity> security_modes;
384 bool pmf_supported =
false;
385 bool pmf_required =
false;
386 bool uses_ccmp =
false;
387 std::unordered_map<MACAddress, client_info> clients;
388 std::unordered_map<MACAddress, client_security> clients_security;
Access Point in a basic service set (BSS) network.
Definition: access_point.h:18
NetworkSecurity
Network security protocol used. A network can support multiple ways to connect and secure data.
Definition: access_point.h:24
std::optional< Recording::info > save_decrypted_traffic(const std::filesystem::path &save_path, const std::string &name)
Definition: access_point.cpp:202
std::optional< Recording::info > save_traffic(const std::filesystem::path &save_path, const std::string &name)
Definition: access_point.cpp:191
MACAddress get_bssid() const
Definition: access_point.cpp:45
const std::optional< client_info > get_client(MACAddress addr)
Definition: access_point.h:263
uint32_t decrypted_packet_count() const
Definition: access_point.cpp:186
bool unicast_decryption_supported() const
Definition: access_point.cpp:146
bool handle_pkt(Tins::Packet *pkt)
Definition: access_point.cpp:33
DecryptionState
Current state of decryption.
Definition: access_point.h:37
SSID get_ssid() const
Definition: access_point.cpp:43
bool protected_management_required() const
Definition: access_point.cpp:172
std::vector< wifi_standard_info > standards_supported() const
Definition: access_point.cpp:49
std::shared_ptr< PacketChannel > get_decrypted_channel()
Definition: access_point.cpp:53
DecryptionState add_password(const std::string &psk)
Definition: access_point.cpp:73
bool client_decryption_supported(const MACAddress &client)
Definition: access_point.cpp:158
bool protected_management_supported() const
Definition: access_point.cpp:168
std::vector< NetworkSecurity > security_supported() const
Definition: access_point.cpp:142
WiFiStandard
Definition: access_point.h:48
WPA2Decrypter & get_decrypter()
Definition: access_point.cpp:180
Modulation
Definition: access_point.h:60
bool group_decryption_supported() const
Definition: access_point.cpp:151
bool send_deauth(const Tins::NetworkInterface &iface, const MACAddress &addr)
Definition: access_point.cpp:100
bool protected_management(const MACAddress &client)
Definition: access_point.cpp:174
bool has_working_password() const
Definition: access_point.cpp:138
const std::optional< client_security > get_client_security(MACAddress addr)
Definition: access_point.h:273
uint32_t raw_packet_count() const
Definition: access_point.cpp:182
int get_wifi_channel() const
Definition: access_point.cpp:47
AccessPoint(const MACAddress &bssid, const SSID &ssid, int wifi_channel)
Definition: access_point.cpp:24
ChannelWidth
Definition: access_point.h:73
const std::set< MACAddress > get_clients()
Definition: access_point.h:252
void close_all_channels()
Definition: access_point.cpp:68
Decrypts unicast, multicast and broadcast WPA2 packets.
Definition: decrypter.h:25
Definition: access_point.cpp:22
std::string SSID
Definition: decrypter.h:19
Tins::HWAddress< 6 > MACAddress
Definition: decrypter.h:20
Client information.
Definition: access_point.h:102
int8_t noise
Definition: access_point.h:111
std::string ipv4
Definition: access_point.h:105
std::string hostname
Definition: access_point.h:104
int8_t snr
Definition: access_point.h:112
uint32_t sent_total
Definition: access_point.h:108
std::string hwaddr
Definition: access_point.h:103
uint32_t received
Definition: access_point.h:109
int8_t rrsi
Definition: access_point.h:110
uint32_t sent_unicast
Definition: access_point.h:107
std::string ipv6
Definition: access_point.h:106
Connection security info of a specific client.
Definition: access_point.h:118
bool is_ccmp
Definition: access_point.h:120
NetworkSecurity security
Definition: access_point.h:119
bool pmf
Definition: access_point.h:121
std::optional< Tins::RSNInformation::CypherSuites > pairwise_cipher
Definition: access_point.h:122
WiFi standard capabilities for the network.
Definition: access_point.h:84
WiFiStandard std
Definition: access_point.h:85
bool single_beamformer_support
Definition: access_point.h:86
std::set< ChannelWidth > channel_widths_supported
Definition: access_point.h:96
std::set< Modulation > modulation_supported
Definition: access_point.h:91
bool single_beamformee_support
Definition: access_point.h:87
std::set< uint8_t > mcs_supported_idx
Definition: access_point.h:90
std::set< uint8_t > spatial_streams_supported
Definition: access_point.h:93
bool multi_beamformer_support
Definition: access_point.h:88
bool multi_beamformee_support
Definition: access_point.h:89