1. Scapy 란?
: Scapy는 네트워크 패킷 생성 툴로 패킷을 직접 만들거나 수정해서 보내고, 이를 캡처하거나 분석해서 네트워크 테스트, 디버깅 등에 활용할 수 있다. Scapy는 python 기반의 도구로 python 설치를 꼭 해줘야 한다. Linux에서 주로 사용되지만, Windows에서도 WSL을 통해 간단히 사용할 수 있다.
2. Scapy 특징
- L2~L7 패킷 생성 및 분석 가능
- 간단한 Python 코드로 네트워크 테스트 가능
- ICMP, TCP, UDP, ARP 같은 다양한 프로토콜 지원
3. 윈도우 WSL에서 Scapy 설치하기
3.1) WSL 사용하는 이유
: Windows에서는 네트워크 패킷을 직접 조작하거나 전송하는 기능이 제한적이다. WSL은 Windows에서 Linux 환경을 만들어주는 툴로 Scapy 같은 Linux의 네트워크 도구를 제약없이 그대로 사용할 수 있게 해준다.
3.2) WSL에서 Scapy 설치 방법
1) WSL 설치
: 윈도우 PowerShell을 관리자 권한으로 실행한 다음 'wsl --install' 명령어를 통해 Ubuntu 22.04를 설치한다. -d 옵션을 통해 리눅스 배포판을 지정해서 설치할 수 있다. 필자는 설치 후 PC를 재부팅하고 터미널을 재시작하니 WSL 이 자동 시작되었고. ubuntu 계정 생성을 해주었다. 혹시라도 설치된 리눅스 배포판 확인이 안되면 재부팅을 해보자.
https://learn.microsoft.com/ko-kr/windows/wsl/install
wsl --install -d Ubuntu-22.04
2) 패키지 업데이트
: Linux 환경에서 패키지를 최신 상태로 만들어 준다.
sudo apt update sudo apt upgrade -y
3) Python 설치
: Scapy는 Python 기반 도구라서 Python과 pip가 필요하다. 아래 명령어로 설치한다.
sudo apt install -y python3 python3-pip
4) Scapy 설치
: Python 환경이 준비되면 Scapy를 설치한다.
pip3 install scapy
5) 설치 확인
아래 명령어를 통해 설치가 제대로 됐는지 확인해보자.
pip3 show scapy
4. Scapy 실행하기
: Scapy는 두 가지 방식으로 사용할 수 있다. 인터랙티브 모드로 한줄씩 바로 명령어를 실행하거나, Python 스크립트를 작성해서 실행하는 방식이다.
4.1) Scapy 인터랙티브 모드
: Scapy를 인터랙티브 모드로 실행하려면 아래 명령어를 입력한다. 그럼 아래와 같이 뜰 것이다. 인터랙티브 모드는 Ctrl + D 를 통해 빠져나올 수 있다.
sudo python3 -m scapy
- ICMP 패킷 만들기
>>> pkt = IP(dst="8.8.8.8") / ICMP()
>>> pkt.show() # 패킷 내용 보기
>>> send(pkt) # 패킷 보내기
- Switch 에서 tcpdump 로 icmp 확인
4.2) Python 스크립트로 Scapy 실행하기
-
Python 스크립트 작성
from scapy.all import *
# ICMP 패킷 생성
pkt = IP(dst="8.8.8.8") / ICMP()
# 패킷 전송
send(pkt)
- Python 스크립트 실행
sudo python3 scapy_test.py
'Linux&Programming' 카테고리의 다른 글
[Linux] 내가 보려고 쓰는 tcpdump 명령어 옵션 (0) | 2025.01.13 |
---|---|
엔디안(Endianness)과 데이터 순서 변환 이해하기 (1) | 2024.12.27 |
[Rust] 러스트 프로그래밍 공부 변수와 상수, 섀도잉 (0) | 2024.12.07 |
리눅스 커널 디버깅 pr_debug 사용하기 (0) | 2024.12.06 |
[Rust] 러스트 프로그래밍 공부 - 카고(Cargo) (1) | 2024.12.02 |