Мощная Python-библиотека и интерактивная оболочка для работы с сетевыми пакетами. Позволяет создавать, отправлять, перехватывать и анализировать пакеты любого протокола. Возможности: - Создание пакетов любого протокола: Ethernet, IP, TCP, UDP, DNS, ARP... - Отправка и получение на уровне L2/L3 - Интерактивный REPL для быстрых экспериментов - Фаззинг протоколов - Traceroute, ARP-scan, ping с кастомными пакетами - Чтение/запись PCAP-файлов - Поддержка 70+ протоколов из коробки
# pip:
pip install scapy
# apt (с дополнениями):
sudo apt install python3-scapy
# Запустить интерактивный режим:
sudo scapy
# Примеры:
# Ping:
>>> send(IP(dst="8.8.8.8")/ICMP())
# ARP-сканирование подсети:
>>> ans = srp(Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst="192.168.1.0/24"), timeout=2)[0]
>>> for r in ans: print(r[1].psrc, r[1].hwsrc)
# Собственный TCP SYN:
>>> sr1(IP(dst="target.com")/TCP(dport=80, flags="S"))
# Читать PCAP:
>>> pkts = rdpcap("capture.pcap")
ScapyScapy — это мощная программа и библиотека для интерактивной манипуляции пакетами на основе Python.
Она способна формировать или декодировать пакеты широкого спектра протоколов, отправлять их по сети, перехватывать, сохранять или читать с помощью pcap-файлов, сопоставлять запросы и ответы, и многое другое. Она разработана для обеспечения быстрого прототипирования пакетов с использованием значений по умолчанию, которые работают.
Она легко справляется с большинством классических задач, таких как сканирование, трассировка маршрутов, зондирование, модульные тесты, атаки или сетевое обнаружение (она может заменить hping, 85% функционала nmap, arpspoof, arp-sk, arping, tcpdump, wireshark, p0f и т.д.). Она также очень эффективна во многих других специфических задачах, с которыми большинство других инструментов не справляются, таких как отправка невалидных фреймов, инъекция собственных 802.11 фреймов, комбинирование техник (VLAN hopping + ARP cache poisoning, декодирование VoIP на канале с WEP-защитой и т.д.) и т.д.
Scapy поддерживает Python 3.7+. Она разработана для кроссплатформенности и работает на различных платформах (Linux, OSX, *BSD и Windows).
Scapy можно использовать как в режиме оболочки, так и как библиотеку. Для получения дополнительной информации, пожалуйста, обратитесь к разделу Начало работы с Scapy, который является частью документации.
Scapy можно легко использовать как интерактивную оболочку для взаимодействия с сетью.
Следующий пример показывает, как отправить ICMP Echo Request сообщение на github.com, а затем отобразить 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 работает без каких-либо внешних модулей Python в операционных системах на базе Linux и BSD. В Windows необходимо установить некоторые обязательные зависимости, как описано в документации.
На большинстве систем использовать Scapy так же просто, как выполнить следующие команды:
git clone https://github.com/secdev/scapy
cd scapy
./run_scapy
Чтобы воспользоваться всеми функциями Scapy, такими как построение графиков, возможно, потребуется установить модули Python, такие как matplotlib или cryptography. Ознакомьтесь с документацией и следуйте инструкциям по их установке.
Исходный код, тесты и инструменты Scapy лицензируются по лицензии GPL v2.
Документация (всё, если не указано иное в doc/, за исключением логотипа) лицензируется по лицензии CC BY-NC-SA 2.5.
Хотите внести свой вклад? Отлично! Пожалуйста, уделите несколько минут, чтобы прочитать это)!