gpt4 book ai didi

c - 在 libpcap 中提取 Client Hello 和 SNI

转载 作者:行者123 更新时间:2023-11-30 14:57:19 28 4
gpt4 key购买 nike

我正在使用 c 中的 libpcap 库来解析 pcap 文件。我正在尝试提取 TCP 客户端问候,然后检查服务器名称指示以匹配给定的服务器。我可以这样做吗?如果是的话,有人可以告诉我怎么做吗?谢谢

最佳答案

这是一个 C++ 代码片段,可以使用 PcapPlusPlus 来完成此操作。图书馆。此代码假设您正在从 pcap 文件读取数据包,但从实时接口(interface)读取时也可以实现相同的效果:

// create a pcap file reader instance
pcpp::IFileReaderDevice* reader = pcpp::IFileReaderDevice::getReader("my_ssl_packets.pcap");

// open the reader for reading
reader->open();

// read the first (and only) packet from the file
pcpp::RawPacket rawPacket;
while (reader->getNextPacket(rawPacket) != NULL)
{
// parse the packet
pcpp::Packet sslParsedPacket(&rawPacket);

// check if this is a SSL packet
if (!sslParsedPacket.isPacketOfType(pcpp::SSL))
continue;

// check if this is a SSL handshake packet
pcpp::SSLHandshakeLayer* sslHandshakeLayer = sslPacket->getLayerOfType<pcpp::SSLHandshakeLayer>();
if (sslHandshakeLayer == NULL)
continue;

// check if this is a client-hello message
pcpp::SSLClientHelloMessage* clientHelloMessage = sslHandshakeLayer->getHandshakeMessageOfType<pcpp::SSLClientHelloMessage>();
if (clientHelloMessage == NULL)
continue;

// extract the Server Name Indication from the client-hello message
pcpp::SSLServerNameIndicationExtension* sniExtension = clientHelloMessage->getExtensionOfType<pcpp::SSLServerNameIndicationExtension>();
if (sniExtension != NULL)
printf("Server Name Indication is: %s\n", sniExtension->getHostName().c_str());
}

// close the file reader
reader->close();
delete reader;

关于c - 在 libpcap 中提取 Client Hello 和 SNI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43986860/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com