위의 예제는 pcap_pkthdr 헤더에서 타임스탬프와 모든 패킷의 길이를 추출하여 화면에 인쇄합니다. 당신은 힙에서 메모리를 할당하고 (함수에서) 당신은 그것을 해제 nt있어, 그 하이 메모리 소비는 응용 프로그램이 실행되는 한 증가하고있다. 예를 들어 PrintIcmpPacket 함수가 호출 될 때마다 함수에 대한 이전 호출에서 할당 한 것을 freeng하지 않고 ipdr 변수에 대한 새 메모리 블록을 할당합니다. (iphdr = (IPV4_HDR *)(버퍼 + sizeof (ETHER_HDR)));) 포인터를 사용한 각 함수의 끝에 할당 된 메모리를 해제하는 것이 좋습니다. 이것은 libpcap 사용의 더 완전한 예입니다. 무엇보다도 필터를 만들고 설정하는 방법과 캡처를 디스크에 저장하는 방법을 보여 주십니다. Win32 또는 유닉스 (프로젝트 및 메이크 파일 제공)에서 컴파일 할 수 있습니다. Pcap_filter(pf.exe)는 범용 패킷 필터링 응용 프로그램입니다: 입력 매개 변수는 패킷의 소스(물리적 인터페이스 또는 파일일 수 있음), 필터 및 출력 파일입니다. CTRL+C를 누르거나 전체 파일이 처리될 때까지 소스에서 패킷을 사용하며 들어오는 패킷에 필터를 적용하고 필터를 충족하는 경우 출력 파일에 저장합니다.

Pcap_filter는 특정 필터에 따라 네트워크 데이터를 덤프하는 데 사용할 수 있을 뿐만 아니라 이전에 저장된 파일에서 패킷 집합을 추출할 수도 있습니다. 입력 및 출력 파일의 형식은 libpcap, 즉 WinDump, tcpdump 및 기타 많은 네트워크 도구와 동일한 libpcap에서 사용하는 형식입니다. 이봐! 그래서 나는이 할 수 시도하고 비주얼 스튜디오에서 실행할 수 있었다. cmd가 튀어 나온 다음 “스니핑하려는 인터페이스 수를 입력”이 나왔습니다. 예제에서와 같이 1을 눌렀습니다. 그러나 헤더가 아래에 나타날 것으로 예상되며 거의 20 분 후에 나타나지 않았으며 tcp, udp 등을 계산합니다. 그것은 정상입니까? 또는 뭔가 이미 잘못? 즉각적인 대응을 희망합니다. 감사! 다음 프로그램에서는 이전 단원 예제의 콜백 코드를 재활용하고 pcap_next_ex()로 호출한 직후 main() 내부로 이동합니다. pcap_loop()를 사용하여 주로 처리기가 패킷 캡처 드라이버에 의해 호출된다는 사실과 관련된 단점이 있을 수 있습니다.

따라서 사용자 응용 프로그램은 직접 제어할 수 없습니다. 또 다른 방법은 다음 예제에 표시되는 pcap_next_ex() 함수를 사용하는 것입니다(콜백 없이 패킷 캡처). 다음 예제에서는 마지막 예제와 동일한 용도를 가지지만 pcap_loop() 콜백 메서드 대신 pcap_next_ex()가 사용됩니다. 이제 WinPcap의 강력한 네트워킹 애플리케이션을 개발하기 시작할 준비가 되었습니다. 예제를 위해 다음 예제에서는 Visual Studio 2005를 사용합니다. Winpcap은 패킷 스니핑 및 원시 패킷 전송에 사용되는 Windows용 패킷 캡처 라이브러리입니다. Wireshark는 패킷을 스니핑하는 winpcap을 사용하는 인기있는 스니퍼 도구입니다. 다음에는 WinPcap 라이브러리를 사용하는 응용 프로그램의 몇 가지 간단한 예제를 소개합니다.

자세한 자습서는 WinPcap 설명서 자료를 참조하십시오. 라이브러리, 파일, 설명서 및 예제 응용 프로그램 등 WinPcap 네트워킹 응용 프로그램을 만드는 데 필요한 리소스가 포함된 Zip 파일입니다. Zip 파일을 다운로드하여 원하는 폴더로 압축을 풀어야 합니다. 예를 들어 개발자 팩을 “C:WpdPack_4_0_2WpdPack”에 배치했습니다. 플래그: 가장 중요한 플래그는 어댑터가 무차별 모드로 사용될지 나타내는 플래그입니다. 정상적인 작동환경에서어댑터는 해당 어댑터로 향하는 네트워크에서만 패킷을 캡처합니다. 따라서 다른 호스트에서 교환하는 패킷은 무시됩니다. 대신 어댑터가 무차별 모드에 있을 때 모든 패킷이 대상인지 여부에 관계없이 캡처됩니다. 즉, 공유 미디어(예: 전환되지 않은 이더넷)에서 WinPcap은 다른 호스트의 패킷을 캡처할 수 있습니다.

무차별 모드는 대부분의 캡처 응용 프로그램의 기본값이므로 다음 예제에서 이를 사용하도록 설정합니다.