9 #include <tins/network_interface.h>
10 #include <tins/sniffer.h>
11 #include <unordered_map>
33 Sniffer(std::unique_ptr<Tins::FileSniffer> sniffer,
34 const std::filesystem::path &filepath);
41 Sniffer(std::unique_ptr<Tins::Sniffer> sniffer,
42 const Tins::NetworkInterface &
iface);
69 std::optional<std::shared_ptr<AccessPoint>>
get_network(
const SSID &ssid);
77 std::optional<std::shared_ptr<AccessPoint>>
107 std::optional<std::string>
iface();
113 std::optional<std::filesystem::path>
file();
148 std::optional<Recording::info>
149 save_traffic(
const std::filesystem::path &save_path,
const std::string &name);
157 std::optional<Recording::info>
159 const std::string &name);
166 static std::vector<Recording::info>
185 static std::optional<std::unique_ptr<PacketChannel>>
197 static std::optional<std::string>
199 const std::string &ifname);
212 bool handle_pkt(Tins::Packet &pkt);
219 bool handle_data(Tins::Packet &pkt);
226 bool handle_management(Tins::Packet &pkt);
234 Tins::Packet *save_pkt(Tins::Packet &pkt);
242 void hopper(
int phy_idx,
const std::vector<uint32_t> &channels);
244 std::shared_ptr<spdlog::logger> logger;
245 std::vector<Tins::Packet> packets;
246 std::atomic<ScanMode> scan_mode =
GENERAL;
250 bool filemode =
true;
252 int current_channel = 1;
253 std::unique_ptr<Tins::Crypto::WPA2Decrypter> decrypter;
254 std::unordered_map<MACAddress, std::shared_ptr<AccessPoint>> aps;
255 Tins::NetworkInterface send_iface;
256 std::string iface_name =
"";
257 std::filesystem::path filepath;
258 std::unordered_map<MACAddress, SSID> ignored_nets;
259 std::unique_ptr<Tins::BaseSniffer> sniffer;
260 std::atomic<bool> finished;
Manager for network card information gathering and state control.
Definition: net_card_manager.h:58
void disconnect()
Definition: net_card_manager.cpp:88
Packet sniffer and handler in charge of tracking, information gathering and decrypting passing data.
Definition: sniffer.h:24
Sniffer(std::unique_ptr< Tins::FileSniffer > sniffer, const std::filesystem::path &filepath)
Definition: sniffer.cpp:25
std::optional< Recording::info > save_traffic(const std::filesystem::path &save_path, const std::string &name)
Definition: sniffer.cpp:214
std::optional< Recording::info > save_decrypted_traffic(const std::filesystem::path &save_path, const std::string &name)
Definition: sniffer.cpp:227
std::optional< std::shared_ptr< AccessPoint > > get_network(const SSID &ssid)
Definition: sniffer.cpp:120
void stop_focus()
Definition: sniffer.cpp:206
std::set< network_name > all_networks()
Definition: sniffer.cpp:105
std::optional< std::shared_ptr< AccessPoint > > focused_network()
Definition: sniffer.cpp:198
~Sniffer()
Definition: sniffer.h:201
static std::optional< std::unique_ptr< PacketChannel > > get_recording_stream(const std::filesystem::path &save_path, const uuid::UUIDv4 &uuid)
Definition: sniffer.cpp:376
std::optional< uint32_t > focus_network(const SSID &ssid)
Definition: sniffer.cpp:181
std::optional< MACAddress > get_bssid(const SSID &ssid)
Definition: sniffer.cpp:112
void add_ignored_network(const SSID &ssid)
Definition: sniffer.cpp:134
static bool recording_exists(const std::filesystem::path &save_path, const uuid::UUIDv4 &uuid)
Definition: sniffer.cpp:369
std::optional< std::filesystem::path > file()
Definition: sniffer.cpp:175
std::unordered_map< MACAddress, SSID > ignored_networks()
Definition: sniffer.cpp:158
std::pair< MACAddress, SSID > network_name
Definition: sniffer.h:26
static MACAddress NoAddress
Definition: sniffer.h:27
static std::optional< std::string > detect_interface(std::shared_ptr< spdlog::logger > log, const std::string &ifname)
Definition: sniffer.cpp:408
std::optional< std::string > iface()
Definition: sniffer.cpp:169
static std::vector< Recording::info > available_recordings(const std::filesystem::path &save_path)
Definition: sniffer.cpp:354
void shutdown()
Definition: sniffer.cpp:162
void start()
Definition: sniffer.cpp:44
std::string UUIDv4
Definition: uuid.h:11
Definition: access_point.cpp:22
std::string SSID
Definition: decrypter.h:19
ScanMode
Definition: sniffer.h:15
@ GENERAL
Definition: sniffer.h:17
@ FOCUSED
Definition: sniffer.h:16
Tins::HWAddress< 6 > MACAddress
Definition: decrypter.h:20