https://github.com/ndb796/JavaFX-ARP-Spoofing
위 깃허브 주소에 있는 JavaFX 코드를 가져와서 프로그램 구축
기본 설정
위의 코드는 인텔리제이가 아닌 이클립스로 작성되었고 오래된 코드이기 때문에 기존 내 인텔리제이의 설정과 달라 설정 조정이 필요함

위의 사진과 같이 이전에는 OpenJDK 24를 사용하고 있었는데, JavaFX는 JDK에서 분리가 되어서 호환되지 않음

위와 같이 liberica full 버전(FX 지원 포함)을 다운로드해 프로젝트에 적용
※깃허브 코드가 9년 전 코드이기 때문에 버전도 그만큼 낮은 버전으로 다운로드, 여기에서는 버전 11을 적용

프로젝트 설정의 modules에서 jnetpcap 항목 체크
- jnetpcap은 C/C++에서 쓰는 패킷 캡처 표준 라이브러리인 ****libpcap을 Java에서 쓰게 해주는 다리 역할을 함
- jnetpcap 사용을 위해 C로 작성된 libpcap 소스 코드를 window용으로 컴파일한 .dll 라이브러리가 필요, 깃허브 폴더에 포함되어 있음
- .dll 라이브러리 실행을 위해서는 Npcap 설치 필요, Npcap은 Windows 운영체제에서 libpcap API와 호환되는 네트워크 캡처 드라이버로, 커널 레벨에서 네트워크 인터페이스 카드(NIC)의 패킷을 캡처 (libpcap 구현체)

Npcap 드라이버 설치
프로그램 실행
실행시 보이는 화면

안전한 실습을 위해서 개인 휴대폰으로 핫스팟을 켜 연결함.
찾은 네트워크 장치 중 가상환경 등에서 사용하는 네트워크 장치가 아닌 실제 사용 중인 장치 선택(Intel(R), Wi-Fi 등의 단어 포함)
- My IP: 공격자(이 노트북)의 IP
- Sender IP: 피해자(AP와 통신하는 또 다른 기기)의 IP
- Target IP: AP(핫스팟을 켠 폰)의 IP
위 세 IP를 arp -a 등의 명령어(같은 네트워크에 연결된 실제로 통신한 기기들의 ip, mac주소, 정보를 알려줌)를 통해 알아낸 뒤 입력

모두 입력 후 GET MAC 버튼을 눌러 실행

실행 결과
실행 후 콘솔에 찍히는 ARP 프로토콜
- 주기적으로 프로토콜을 보내 공격자의 MAC주소를 Sender에게는 Target의 맥주소로, Target에게는 Sender의 맥주소로 속임

실행 중 와이어샤크를 이용해 Sender가 보낸 패킷(내가 보낸 패킷이 아님)이 잡히는지 확인
- ip.src ==172.20.10.7 (ip 주소가 172.20.10.7인 컴퓨터에서 전송되는 패킷만을 확인)을 입력하면, sender의 모든 인터넷 접속 패킷이 잡히는 것을 볼 수 있음
※원래는 잡히지 않아야 할 source ip 주소의 패킷이 공격자 노트북 랜카드로 들어와 와이어샤크에 캡처됨

프로그램 종료시 다시 패킷이 잡히지 않음
'네트워크' 카테고리의 다른 글
| 와이파이 공유기 분해 (0) | 2026.05.18 |
|---|