Created
July 24, 2023 10:45
-
-
Save M0nteCarl0/5869a5d54b4b29f8068bf8613aa7f88c to your computer and use it in GitHub Desktop.
Capture via PcapPlusPlus and extarct tcp flahs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <stdlib.h> | |
#include <Packet.h> | |
#include <PcapLiveDeviceList.h> | |
#include <TcpLayer.h> | |
void packetHandler(pcpp::RawPacket* packet, pcpp::PcapLiveDevice* dev, void* cookie) { | |
// Получаем пакет TCP | |
pcpp::Packet parsedPacket(packet); | |
pcpp::TcpLayer* tcpLayer = parsedPacket.getLayerOfType<pcpp::TcpLayer>(); | |
// Проверяем, что это TCP пакет | |
if (tcpLayer != nullptr) { | |
// Извлекаем флаги TCP | |
if (tcpLayer->getTcpHeader()->synFlag == 1) { | |
std::cout << "SYN flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->ackFlag == 1) { | |
std::cout << "ACK flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->finFlag == 1) { | |
std::cout << "FIN flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->rstFlag == 1) { | |
std::cout << "RST flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->pshFlag == 1) { | |
std::cout << "PSH flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->urgFlag == 1) { | |
std::cout << "URG flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->eceFlag == 1) { | |
std::cout << "ECE flag set" << std::endl; | |
} | |
if (tcpLayer->getTcpHeader()->cwrFlag == 1) { | |
std::cout << "CWR flag set" << std::endl; | |
} | |
} | |
} | |
int main() { | |
// Получаем список доступных сетевых устройств | |
pcpp::PcapLiveDeviceList devList; | |
if (devList.size() == 0) { | |
std::cerr << "No network devices found" << std::endl; | |
return 1; | |
} | |
// Открываем первое доступное устройство для захвата трафика | |
pcpp::PcapLiveDevice* dev = devList.getPcapLiveDeviceByIndex(0); | |
if (!dev->open()) { | |
std::cerr << "Could not open device" << std::endl; | |
return 1; | |
} | |
// Устанавливаем фильтр для захвата только TCP пакетов | |
if (!dev->setFilter("tcp")) { | |
std::cerr << "Could not set filter" << std::endl; | |
return 1; | |
} | |
// Захватываем и анализируем каждый пакет | |
dev->startCapture(packetHandler); | |
// Ждем нажатия клавиши для остановки захвата пакетов | |
std::cin.ignore(); | |
// Останавливаем захват пакетов | |
dev->stopCapture(); | |
// Закрываем устройство | |
dev->close(); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment