Шпаргалка по
Scapy с основными командами и примерами кода для работы с сетевыми пакетами.
### Установка Scapy
Если вы еще не установили Scapy, можете сделать это с помощью pip:
pip install scapy
### Импорт модуля
Перед началом работы с Scapy необходимо импортировать его:
from scapy.all import *
### Основные операции с Scapy
#### 1.
Создание и отправка пакета##### Пример: Отправка ICMP Echo Request (Ping)
# Создание ICMP пакета
packet = IP(dst="8.8.8.8")/ICMP()
# Отправка пакета и получение ответа
response = sr1(packet)
response.show() # Отображение ответа
#### 2.
Сканиование портов##### Пример: TCP SYN сканирование
# Сканирование портов на хосте
ans, unans = sr(IP(dst="192.168.1.1")/TCP(dport=[22, 80, 443], flags="S"), timeout=1)
ans.summary() # Отображение результатов
#### 3.
Анализ трафика##### Пример: Захват пакетов с использованием sniff()
# Функция для обработки пакетов
def packet_callback(packet):
print(packet.summary())
# Захват пакетов
sniff(prn=packet_callback, count=10) # Захват 10 пакетов
#### 4.
Создание пользовательских пакетов##### Пример: Создание и отправка UDP пакета
# Создание UDP пакета
udp_packet = IP(dst="192.168.1.1")/UDP(dport=12345)/Raw(load="Hello, World!")
# Отправка пакета
send(udp_packet)
#### 5.
Сниффинг и фильтрация пакетов##### Пример: Захват пакетов с фильтрацией по протоколу TCP
# Захват только TCP пакетов
sniff(filter="tcp", prn=lambda x: x.show(), count=10)
#### 6.
Работа с ARP##### Пример: ARP запрос для получения MAC-адреса
# Создание ARP запроса
arp_request = ARP(pdst="192.168.1.1")
# Создание Ethernet фрейма
broadcast = Ether(dst="ff:ff:ff:ff:ff:ff")
# Комбинирование
arp_request_broadcast = broadcast/arp_request
# Отправка запроса и получение ответа
answered_list = srp(arp_request_broadcast, timeout=1, verbose=False)[0]
for element in answered_list:
print(f"IP: {element[1].psrc}, MAC: {element[1].hwsrc}")
#### 7.
Сохранение и загрузка пакетов из файла##### Пример: Сохранение захваченных пакетов в файл
# Захват пакетов и сохранение в файл
packets = sniff(count=10)
wrpcap("captured_packets.pcap", packets)
##### Пример: Загрузка пакетов из файла
# Загрузка пакетов из файла
packets = rdpcap("captured_packets.pcap")
for packet in packets:
print(packet.summary())
#### 8.
Отправка пакетов с пользовательскими данными##### Пример: Отправка TCP пакета с данными
# Создание TCP пакета с пользовательскими данными
tcp_packet = IP(dst="192.168.1.1")/TCP(dport=80, flags="S")/Raw(load="GET / HTTP/1.1\r\nHost: example.com\r\n\r\n")
# Отправка пакета
send(tcp_packet)
### Полезные функции
-
show(): Отображает содержимое пакета.
-
summary(): Краткое описание пакета.
-
hexdump(): Отображает пакет в шестнадцатеричном формате.
### Заключение
Scapy — мощный инструмент для работы с сетевыми пакетами, который позволяет выполнять множество операций, включая создание, отправку, анализ и захват пакетов. Используйте его ответственно и в рамках закона!