보통은 패킷 라이브러리 단에서 기본적인 정보는 알아서 넣어주지만  경우에 따라 이더넷 패킷을 처음부터 끝까지 직접 작성하여 보내고 싶을 수 있습니다.

이 때 Npcap (舊 WinPcap)를 이용하면 쉽게 자신이 만들어둔 이더넷 패킷 데이터를 “보낼” 수 있습니다. 물론 도착지 관련 정보를 제대로 넣은게 아니면 도착은 못하지만 출발은 합니다.

핵심적인 코드를 먼저 보여드리면 다음과 같습니다:

결국 pcap_open_live()로 현재 사용중인 네트워크 인터페이스를 선택하고, pcap_sendpacket()으로 자신이 미리 만들어둔 이더넷 패킷 데이터를 실어보내면 됩니다.

제 코드에서 std::vector를 이용했던 이유는 경우에 따라 각 정보를 따로 입력받고 조합해야 할 경우엔 배열보단 std::vector를 쓰는게 더 적합하기 때문인데, 보낼 데이터가 고정되어있으면 그냥 원시 배열을 써도 됩니다.

  • 프로젝트 속성에서 C/C++ 추가 포함 디렉터리에 “npcap sdk 경로\Include” 폴더를 집어넣기
  • 링커 추가 포함 디렉터리에 “npcap SDK 경로\Lib”폴더를 집어넣기
  • 링커 입력 추가 종속성에 “wpcap.lib” 집어넣기
  • \Debug 또는 \Release 폴더에 “wpcap.dll”과 “Packet.dll” 집어넣기 (NPcap SDK 말고 Installer를 설치하면 C:\Windows\[System32, SysWOW64]에 있음)

전체 코드는 다음과 같습니다:

<main.h>

 

<main.cpp>

 

 

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.