
Сетевой инструмент безопасности для создания/перехвата/манипуляции/визуализации сетевых пакетов и pcap-файлов. Изначально форкнут из scapy в 2015 году и с тех пор обеспечивает совместимость с python3.
Подписывайтесь на @pkt_kamene для получения свежих новостей. Оригинальная документация, обновлённая для kamene
Мы прошли через переход наименования (репозитория GitHub, имени пакета pip и имени пакета python), за которым последует новый функционал. Больше обновлений будет позже.
Kamene включён в Network Security Toolkit выпуск 28. Ранее он включался в NST начиная с выпуска 22 под прежним названием.
Это форк scapy (http://www.secdev.org), изначально разработанный для реализации совместимости с python3. Он используется в продакшене на python3 с 2015 года (в то время как secdev/scapy реализовал совместимость с python3 в 2018 году). Форк был переименован в kamene в 2018 году, чтобы уменьшить путаницу.
Эти функции были впервые реализованы в kamene, и некоторые из них, возможно, уже были перереализованы в scapy:
Установите с помощью python3 setup.py install из исходного дерева (получите его с помощью git clone https://github.com/phaethon/kamene.git) или pip3 install kamene для последней опубликованной версии.
На всех ОС, кроме Linux, libpcap должна быть установлена для отправки и получения пакетов (не python-модули — просто C-библиотеки) или драйвер winpcap на Windows. На некоторых ОС и конфигурациях установка libdnet может улучшить работу (для MacOS: brew install libdnet). На Windows libdnet не требуется. В некоторых менее распространённых конфигурациях netifaces может улучшить работу.
Используйте bytes() (не str()) при преобразовании пакета в байты. Большинство аргументов ожидают значение bytes вместо значения str, за исключением тех, которые естественно подходят для ввода человеком (например, имя домена).*
Вы можете использовать kamene, запустив команду kamene или импортируя kamene как библиотеку из интерактивной оболочки python (python или ipython) или из кода.
Простой пример, который вы можете попробовать из интерактивной оболочки:
from kamene.all import *
p = IP(dst = 'www.somesite.ex') / TCP(dport = 80) / Raw(b'Some raw bytes')
# чтобы увидеть содержимое пакета в байтах, используйте bytes(p), а не str(p)
sr1(p)
Обратите внимание на 'www.somesite.ex' как строку и b'Some raw bytes' как байты. Имя домена — обычный человеческий ввод, поэтому это строка, а необработанное содержимое пакета — байтовые данные. Как только вы начнёте использовать, это покажется проще, чем выглядит.
Используйте ls() для вывода списка всех поддерживаемых слоёв. Используйте lsc() для вывода списка всех команд.
В настоящее время работает на Linux, Darwin, Unix и т.п. Для тестирования используется python 3.4+ на Ubuntu, MacOS, FreeBSD, Windows 10.
Совместим с модулем scapy-http
rdpcap считывает весь файл pcap в память. Если вам нужно обработать огромный файл и выполнить какую-либо операцию для каждого пакета или рассчитать какую-то статистику, вы можете использовать PcapReader с интерфейсом итератора.
with PcapReader('filename.pcap') as pcap_reader:
for pkt in pcap_reader:
#сделать что-то с пакетом