Sniffer.cpp 962 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "../include/Sniffer.h"
  2. #include <cstdlib>
  3. #include <iostream>
  4. Sniffer::Sniffer(const std::string &interfaceName) {
  5. Tins::SnifferConfiguration config;
  6. config.set_promisc_mode(true);
  7. try {
  8. sniffer = new Tins::Sniffer(interfaceName, config);
  9. } catch (const Tins::pcap_error &e) {
  10. std::cerr << "An error accured setting up the sniffer: " << e.what()
  11. << std::endl;
  12. std::exit(EXIT_FAILURE);
  13. }
  14. }
  15. Sniffer::~Sniffer() {
  16. sniffer->stop_sniff();
  17. delete (sniffer);
  18. }
  19. void Sniffer::startSniffing() {
  20. sniffer->sniff_loop(make_sniffer_handler(this, &Sniffer::handle));
  21. }
  22. void Sniffer::setFilter(const std::string &filterString) {
  23. sniffer->set_filter(filterString);
  24. }
  25. bool Sniffer::handle(Tins::PDU &pdu) {
  26. // TODO implement handler for sniffed traffic
  27. std::cout << "packet sniffed" << std::endl;
  28. return false; // will stop sniffing after the first packet because this
  29. // handler returns false
  30. }