Python 기반의 대화형 패킷 조작 라이브러리로, 광범위한 프로토콜에 걸쳐 네트워크 패킷을 위조, 디코딩, 전송, 캡처, 분석할 수 있으며 스캐닝, 트레이서우팅, 공격, 네트워크 탐색을 지원합니다.
ScapyScapy는 강력한 Python 기반 대화형 패킷 조작 프로그램이자 라이브러리입니다.
다양한 프로토콜의 패킷을 위조하거나 디코딩하고, 네트워크로 전송하고, 캡처하고, pcap 파일을 사용하여 저장하거나 읽고, 요청과 응답을 매칭하는 등 다양한 작업을 수행할 수 있습니다. 기본적으로 동작하는 기본값을 사용하여 빠른 패킷 프로토타이핑을 가능하게 하도록 설계되었습니다.
스캐닝, 트레이스라우팅, 프로빙, 단위 테스트, 공격, 네트워크 탐색과 같은 대부분의 고전적인 작업을 손쉽게 처리할 수 있습니다
(hping, nmap의 85%, arpspoof, arp-sk, arping, tcpdump, wireshark, p0f 등을 대체할 수 있습니다). 또한
대부분의 다른 도구가 처리할 수 없는 많은 특수 작업에서도 매우 뛰어난 성능을 발휘합니다.
예를 들어 잘못된 프레임 전송, 자체 802.11 프레임 주입, 기법 결합
(VLAN 호핑+ARP 캐시 포이즈닝, WEP로 보호된 채널에서의 VoIP 디코딩,
...) 등이 있습니다.
Scapy는 Python 3.9+를 지원합니다. 크로스 플랫폼을 목표로 하며, 다양한 플랫폼(Linux, OSX, *BSD, Windows)에서 실행됩니다.
Scapy는 셸로도, 라이브러리로도 사용할 수 있습니다. 자세한 내용은 문서의 일부인 Getting started with Scapy를 참고하십시오.
Scapy는 네트워크와 상호작용하기 위한 대화형 셸로 손쉽게 사용할 수 있습니다.
다음 예제는 github.com에 ICMP Echo Request 메시지를 보낸 다음,
응답의 소스 IP 주소를 표시하는 방법을 보여줍니다:
sudo ./run_scapy
Welcome to Scapy
>>> p = IP(dst="github.com")/ICMP()
>>> r = sr1(p)
Begin emission:
.Finished to send 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
>>> r[IP].src
'192.30.253.113'
문서에는 더 많은 고급 사용 사례와 예제가 포함되어 있습니다.
기타 유용한 리소스:
Scapy는 Linux 및 BSD 계열 운영 체제에서 외부 Python 모듈 없이도 작동합니다. Windows에서는 문서에 설명된 대로 몇 가지 필수 종속성을 설치해야 합니다.
대부분의 시스템에서 Scapy 사용은 다음 명령을 실행하는 것만큼 간단합니다:
git clone https://github.com/secdev/scapy
cd scapy
./run_scapy
플로팅과 같은 모든 Scapy 기능을 활용하려면 matplotlib 또는 cryptography와 같은 Python 모듈을 설치하는 것이 좋습니다. 문서를 참조하여 설치 지침을 따르십시오.
Scapy의 코드, 테스트 및 도구는 GPL v2에 따라 라이선스가 부여됩니다.
문서(doc/에서 달리 표시되지 않은 모든 것, 그리고 로고 제외)는 CC BY-NC-SA 2.5에 따라 라이선스가 부여됩니다.
기여하고 싶으신가요? 좋습니다! 잠시 시간을 내어 이 문서를 읽어 주세요!