티스토리 뷰
스프링 기반의 패킷캡쳐 앱을 toy project 삼아 만드려고 한다.
괜찮은 pCap 라이브러리가 어떤 것이 있나 좀 찾아봤는데, 처음에는 pCap4j를 사용하려고 했으나 튜토리얼이 너무 적은 거 같이 jNetPcap으로 우선 적응해보려 한다.
jNetPcap 라이브러리를 적용하는게 생각보다 까다로워서... 조금 헤매긴 했는데, 방법을 정리하자면 다음과 같다.
우선 windows 환경에서 jNetPcap을 사용하려면, WinPcap을 먼저 설치해줘야 한다.
아래 링크로 접속하여 exe 파일을 받아 실행해주자.
https://www.winpcap.org/install/default.htm
jNetPcap이 Maven Dependency에 gradle이 올라온 게 있긴했는데, 이거 하나만 띡 dependency에 추가하니 영... 적용이 안되어서 아래 링크에서 직접 파일을 받아줬다.
https://sourceforge.net/projects/jnetpcap/
jNetPcap을 받아서 압축을 풀어보면, jnetpcap.dll와 jnetpcap-pcap100.dll 파일이 존재하는데, 이 두 파일은 C:\Windows\System32 디렉토리에 복사해줘야 한다.
이후 프로젝트 WEB-INF-lib 에 jnetpcap.dll & jnetpcap.jar 파일을 옮겨주고, Project Structure 에서 외부 라이브러리를 적용시켜주기만 하면 셋팅은 끝이 난다.
이제 스프링 환경에서 간단한 예제 코드를 한번 돌려보자.
◎PacketExServiceImpl.java
package com.toy.packet_capture.service;
import org.jnetpcap.Pcap;
import org.jnetpcap.PcapIf;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@Service
public class PacketExServiceImpl implements PacketExService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public void listeningNet() {
ArrayList<PcapIf> allDevs = new ArrayList<PcapIf>();
StringBuilder errBuf = new StringBuilder();
int r = Pcap.findAllDevs(allDevs, errBuf);
if(r == Pcap.NOT_OK || allDevs.isEmpty()) {
logger.error("네트워크 장치 찾기 실패" + errBuf.toString());
return;
}
logger.info("네트워크 Device");
int i = 0;
for (PcapIf device : allDevs) {
String description = (device.getDescription() != null) ? device.getDescription() : "장비에 대한 설명이 없습니다.";
logger.info(++i +"번: " + device.getName() + "[" + device.getDescription() + "]");
}
}
}
'Network' 카테고리의 다른 글
[Network] IPv4 CIDR 표기법 (0) | 2024.08.28 |
---|---|
[TCP/IP 아키텍쳐] TCP header의 구조 (0) | 2022.03.23 |
[TCP/IP 아키텍쳐] UDP header의 구조 (0) | 2022.03.23 |
[TCP/IP 아키텍쳐] IPv4 header의 구조 (0) | 2022.03.23 |
[TCP/IP 아키텍쳐] ARP protocol 의 구조 (0) | 2022.03.23 |
- 인천 구월동 이탈리안 맛집
- 정보보안기사 #실기 #정리
- Async
- redux-thunk
- 이탈리안 레스토랑
- Promise
- 파니노구스토
- 인천 구월동 맛집
- javascript
- AsyncStorage
- react
- react-native
- redux
- await
- 맛집
- Total
- Today
- Yesterday