[Wireshark] Visual Studio์์ PcapPlusPlus ์ฌ์ฉ์ ์ํ ์ค๋น ๋จ๊ณ์ ์์ ์ฝ๋ ์คํํ๊ธฐ
ํจํท ์บก์ฒ๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Pcap++์ ์ ๋ฐ์ ์ธ ์๊ฐ๋ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
[Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ!
์ค๋น ๋จ๊ณ
Pcap++๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ช ๊ฐ์ง ์ค๋น ๋จ๊ณ๊ฐ ์์ต๋๋ค. ๋ค์ด๋ก๋๊ฐ ํ์ํ ํ์ผ์ ๋งํฌ๋ฅผ ์ถ๊ฐํ์ผ๋ ํด๋น ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
1. Visual Studio ๋ฒ์
Pcap++๋ 22.11 ๋ฒ์ ๊ธฐ์ค์ผ๋ก Visual Studio 2015, 2017, 2019๋ฅผ ์ง์ํฉ๋๋ค. ์ด์ ๋ง๋ Visual Studio๋ฅผ ์ค๋นํฉ๋๋ค.
2. WinPcap or Npcap SDK
WinPcap ๋๋ Npcap SDK๋ฅผ ์ค๋นํฉ๋๋ค. WinPcap์ ์ง์์ด ๋๋ฌ์ผ๋ฏ๋ก, ๋ณธ๋ฌธ์์๋ Npcap SDK 1.13์ ์ฌ์ฉํ์ต๋๋ค.
3. Visual Studio 2010 ์ฌ๋ฐฐํฌ ํจํค์ง
Microsoft Visual C++ 2010 ์ฌ๋ฐฐํฌ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.
4. Pcap++ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ์์ ํ๋ก์ ํธ
PcapPlusPlus Github์์ Visual Studio ๋ฒ์ ์ ๋ง๋ ํ์ผ์ ๋ค์ด๋ก๋ํฉ๋๋ค. Release ํ์ด์ง์์ ์คํฌ๋กค์ ์กฐ๊ธ ๋ด๋ฆฌ๋ฉด ๊ฐ ๊ฐ๋ฐํ๊ฒฝ์ ๋ง๋ ํ์ผ์ด ์์ต๋๋ค.
์์ ํ๋ก์ ํธ ์คํํ๊ธฐ
๋ณธ๋ฌธ์ ๊ฐ๋ฐ ํ๊ฒฝ์ Windows์ Visual Studio 2019๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ์ Release ํ์ด์ง์์ pcapplusplus-22.11-windows-vs2019.zip์ ๋ค์ด๋ก๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ถ์ ํด์ ํ ํ pcapplusplus-22.11-windows-vs2019\ExampleProject ๊ฒฝ๋ก๋ฅผ ๋ณด๋ฉด PcapPlusPlusPropertySheet.props ํ์ผ์ด ๋ณด์ ๋๋ค.
์ด ํ์ผ์ ํ ์คํธ ์๋ํฐ๋ก ๋ถ๋ฌ์จ ํ ๋ค์๊ณผ ๊ฐ์ด ์์ ํฉ๋๋ค.
ํญ๋ชฉ | ์ค๋ช |
PcapPlusPlusHome | ์์ ์ฝ๋๊ฐ ์์นํ ๊ฒฝ๋ก |
PcapSdkHome | ์ค๋น๋จ๊ณ 2์์ ๋ค์ด๋ก๋ํ WinPcap ๋๋ Npcap SDK๊ฐ ์์นํ ๊ฒฝ๋ก |
์ด๋ ๊ฒ ์ ์ฅํ ํ ExampleProject.sln ํ์ผ์ ์คํํ๋ฉด ํ๋ก์ ํธ๊ฐ ์ ์์ ์ผ๋ก ๋ก๋๋ฉ๋๋ค. ๋ง์ฝ, ๊ฒฝ๋ก๊ฐ ๋ค๋ฅด๋ฉด ๋น๋ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ, ์์ ๊ฐ์ด ์์ฑ ์ํธ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ง์ include, lib ๊ฒฝ๋ก๋ฅผ ์์ ํด๋ ์๊ด์์ต๋๋ค.
main.cpp์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
#include <iostream>
#include <IPv4Layer.h>
#include <Packet.h>
#include <PcapFileDevice.h>
int main(int argc, char* argv[])
{
// open a pcap file for reading
pcpp::PcapFileReaderDevice reader("1_packet.pcap");
if (!reader.open())
{
std::cerr << "Error opening the pcap file" << std::endl;
return 1;
}
// read the first (and only) packet from the file
pcpp::RawPacket rawPacket;
if (!reader.getNextPacket(rawPacket))
{
std::cerr << "Couldn't read the first packet in the file" << std::endl;
return 1;
}
// parse the raw packet into a parsed packet
pcpp::Packet parsedPacket(&rawPacket);
// verify the packet is IPv4
if (parsedPacket.isPacketOfType(pcpp::IPv4))
{
// extract source and dest IPs
pcpp::IPv4Address srcIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getSrcIPv4Address();
pcpp::IPv4Address destIP = parsedPacket.getLayerOfType<pcpp::IPv4Layer>()->getDstIPv4Address();
// print source and dest IPs
std::cout
<< "Source IP is '" << srcIP << "'; "
<< "Dest IP is '" << destIP << "'"
<< std::endl;
}
// close the file
reader.close();
return 0;
}
์ฝ๋๋ง ๋ด๋ ๋์์ด ์์ฃผ ๊ฐ๋จํฉ๋๋ค. 1_packet.pcap ํ์ผ์ ๋ถ๋ฌ์จ ํ packet์ ์ฝ์ด๋ด๊ณ , IPv4 ํ์ ์ด๋ผ๋ฉด Source IP์ Destination IP๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด ๋ค์ ๋๋ค. ํ๋ฒ ์คํํด ๋ณผ๊น์?
Source IP is '10.0.0.138'; Dest IP is '10.0.0.1'์ด๋ผ๋ ๋ฌธ์์ด์ด ์ถ๋ ฅ๋์ด ์์ต๋๋ค. ์์ด์ด์คํฌ๋ก 1_packet.pcap ํ์ผ์ ์ด์ด๋ณด๋ฉด, ์ค์ ๋ก Source IP์ Destination IP๊ฐ ์ผ์นํฉ๋๋ค. ์ฆ, ์ ๋์ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
'Programming > Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[Wireshark] PcapPlusPlus๋ก ์ค์๊ฐ ํจํท ๊ฐ์งํ๊ธฐ(์์ ํฌํจ)
[Wireshark] PcapPlusPlus๋ก ์ค์๊ฐ ํจํท ๊ฐ์งํ๊ธฐ(์์ ํฌํจ)
2023.01.04 -
[Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ!
[Wireshark] ๋คํธ์ํฌ ํจํท ๋ชจ๋ํฐ๋ง์ PcapPlusPlus๋ก ์ฝ๊ฒ!
2022.12.30 -
[Wireshark] ํจํท ๋ถ์์ ์์, ์์ด์ด์คํฌ! ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
[Wireshark] ํจํท ๋ถ์์ ์์, ์์ด์ด์คํฌ! ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ ์ ๋ฆฌ
2022.12.15 -
[๋คํธ์ํฌ] iPerf3๋ก ๋คํธ์ํฌ ๋ถํ ํ ์คํธ ์ฝ๊ฒ ํ๊ธฐ
[๋คํธ์ํฌ] iPerf3๋ก ๋คํธ์ํฌ ๋ถํ ํ ์คํธ ์ฝ๊ฒ ํ๊ธฐ
2022.12.11