기술 노트/programming language

[JAVA]jNetPcap 라이브러리 설치 방법

bigwhaleking 2024. 10. 8. 21:02

1. jnetpcap 이란

jNetPcap Java에서 패킷 캡처 및 분석을 가능하게 하는 오픈 소스 라이브러리로, libpcap을 래핑한 형태입니다.

 

2. 준비 파일

-jNetPcap 파일

https://sourceforge.net/projects/jnetpcap/

 

-npcap

https://npcap.com/

 

※jNetpcap을 사용하는데 Npcap이 필요한 이유

 jNetPcap 라이브러리는 실제 네트워크 패킷을 캡처하기 위해 기본적으로 C/C++로 작성된 libpcap 라이브러리에 의존합니다.

Windows 운영 체제에서는 libpcap 대신 Npcap이 사용됩니다. Npcap libpcap을 대체해서 사용하는 것 입니다.

 

3. 설치 단계

1)

jNetPcap 압축을 해제하면 jnetpcap.dll jnetpcap-pcap100.dll이 존재를 하는데, 이 두 파일을 c:\Windows\System32 에 복사해야 합니다.

 

2)

압축 해제한 곳에서 jnetpcap.dll jnetpcap.jar를 복사 하여 이클립스 내 사용할 프로젝트에 복사합니다.

 

3)

프로젝트 내에 있는 jnetpcap.jar build path에 추가합니다.

 

4)

이제 예시 코드를 작성 해서 정상 작동하는 확인 해보겠습니다.

// 네트워크 어댑터들을 저장할 수 있는 배열생성 
ArrayList<PcapIf> allDevs = new ArrayList<PcapIf>();
// 오류 메시지를 담을 수 있는 변수 생성 
StringBuilder errbuf = new StringBuilder(); 
// 오류 발생시 errbuf안에 오류들을 담게 된다. 
int r = Pcap.findAllDevs(allDevs, errbuf); 
// Pcap이 -1이거나 비어있으면 오류 발생 메시지 출력 

if (r == Pcap.NOT_OK || allDevs.isEmpty()) { 
System.out.println("네트워크 장치를 찾을 수 없습니다." + errbuf.toString()); 
return; } 

System.out.println("네트워크 장비 탐색 성공!!"); int i = 0;
 // 장치에 존재하는 네트워크들을 모두 탐색하여 null이 아니면 현재장치 설명담는 변수
 
for (PcapIf device : allDevs) { 
String description = (device.getDescription() != null) ? device.getDescription() : "장비에 대한 설명이 없습니다."; 
System.out.printf("[%d]번 : %s [%s]n\n", i++, device.getName(), description); }

 

5)

정상작동하는 것을 확인 할 수가 있습니다.(네트워크 장비 종류나 개수는 사용자에 따라 다 다르게 나오는게 정상입니다.)