Можно ли настроить Scapy для прослушивания сетевого трафика и отправки созданного пакета после получения пакета с определенными параметрами? Я имею в виду, например, что Scapy прослушивает сетевой трафик на eth0, и в случае получения пакета ICMP «эхо-запрос» от исходного IP-адреса 10.10.44.3 Scapy отправляет TCP SYN-пакет на порт 34 на IP-адрес 192.168.2.1, используя 8.8.8.8 в качестве источник. Возможна ли такая настройка с помощью Scapy?
1
Martin
19 Окт 2013 в 06:05
1 ответ
Лучший ответ
Да.
Используя функцию sniff()
, вы можете предоставить параметр для опции stop_filter
.
>>> print sniff.__doc__
Sniff packets
sniff([count=0,] [prn=None,] [store=1,] [offline=None,] [lfilter=None,] +
L2ListenSocket args) -> list of packets
...clipped...
stop_filter: python function applied to each packet to determine
if we have to stop the capture after this packet
ex: stop_filter = lambda x: x.haslayer(TCP)
Если функция вернет 1, sniff остановится, и вы сможете продолжить с любой логикой, какой захотите.
0
RyPeck
24 Окт 2013 в 20:31
Похожие вопросы
Новые вопросы
scapy
Scapy - это инструмент управления сетевыми пакетами для использования с Python.
stop_filter
. Какие возможные лямбда-функции Python я могу указать? Я знаю, чтоstop_filter=lambda x: x.summary()
работает илиstop_filter=lambda x: x.show()
работает, но каковы другие возможности? Поскольку я хотел бы отправить ответ напрямую, я думаю, что-то вродеstop_filter=lambda x: x.send(IP(src="8.8.8.8", dst="192.168.2.1"))
было бы идеально.stop_filter=lambda x: x.send(IP(src="8.8.8.8", dst="192.168.2.1")/ICMP)
?stop_filer
, как задумал разработчик, чтобы прекратить обнюхивание, а затем следовать любой логике, которую вы хотите использовать.