기술 노트/programming language
[JAVA]jNetPcap 라이브러리 설치 방법
bigwhaleking
2024. 10. 8. 21:02
1. jnetpcap 이란
jNetPcap은 Java에서 패킷 캡처 및 분석을 가능하게 하는 오픈 소스 라이브러리로, libpcap을 래핑한 형태입니다.
2. 준비 파일
-jNetPcap 파일
https://sourceforge.net/projects/jnetpcap/
-npcap
※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)
정상작동하는 것을 확인 할 수가 있습니다.(네트워크 장비 종류나 개수는 사용자에 따라 다 다르게 나오는게 정상입니다.)