P0F Python API -клиент
Это простой клиент API для P0F3, доступный по адресу http://lcamtuf.coredump.cx/p0f3/. Он не совместим с версией 2.x или 1.x. Запустите P0F с опции -s path/to/unix_socket .
Основное использование:
от p0f import p0f, p0fexception
данные = нет
p0f = p0f ("p0f.sock") # укажите это на сокет, определенный с аргументом "-s".
пытаться:
data = p0f.get_info ("192.168.0.1")
кроме p0fexception, e:
# Неверный запрос был отправлен в P0F. Может быть, API изменился?
Печать e
кроме Keyerror, E:
# Данные не доступны для этого IP -адреса.
Печать e
кроме ValueError, E:
# P0F вернул неверные постоянные значения. Может быть, API изменился?
Печать e
Если данные:
Печать "Сначала видели:", Data ["First_seen"]
Печать "Последний вид:", Data ["last_seen"]
Интеграция Джанго
См. Примеры/django_models.py для полной модели Django данных, возвращаемых P0F.
Промежуточное программное обеспечение Django доступно в p0f.django.middleware .
Для использования добавьте P0FSOCKET = "path/to/p0f_unix_socket" MIDDLEWARE_CLASSES p0f.django.middleware.P0fMiddleware вашего проекта.
Промежуточное программное обеспечение добавляет атрибут p0f ко всем входящим запросам. request.p0f нет, если подключение к P0F не удалось или P0F не возвращал данные для удаленного IP -адреса.
Поля данных
Части этих описаний бесстыдно копируются с http://lcamtuf.coredump.cx/p0f3/readme:
По умолчанию, следующие поля проанализированы:
- DateTime: First_seen
- DateTime: last_seen
- Timedelta: время безотказной работы
- int: ouptime_sec
- Timedelta: up_mod_days
- DateTime: last_nat
- DateTime: last_chg
Кроме того, BAD_SW и OS_MATCH_Q подтверждены. «ValueError» повышается, если встречается неправильное значение. Для всех пустых полей ни один не используется вместо пустых строк или константов:
- overtime_min
- UPTIME_SEC
- время безотказной работы
- up_mod_days
- LAST_NAT
- LAST_CHG
- расстояние
- BAD_SW
- OS_NAME
- OS_FLav
- http_flav
- link_type
- язык
Этот анализ и проверка могут быть отключены с
p0f.get_info ("192.168.0.1", True)
Полное описание полей:
- int: First_seen - Unix Time (секунды) первого наблюдения за хостом.
- int: last_seen - Unix Time (секунды) самого последнего трафика.
- int: total_conn - общее количество виденных соединений.
- int: owtime_min - Расчетное время безотказной системы в минутах. Ноль, если не известно.
- int: up_mod_days - интервал с разворотом в течение нескольких дней.
- int: last_nat - время самого последнего обнаружения обмена IP (NAT, балансировка нагрузки, прокси). Ноль, если никогда не обнаруживается.
- int: last_chg - Время самого последнего несоответствия отдельных ОС (например, из -за многобупного или IP -повторного использования).
- Int: расстояние - расстояние системы (получено от TTL; -1, если нет данных).
- int: bad_sw - P0F считает, что пользовательский агент или строки сервера не точны. Значение 1 означает разницу в ОС (возможно, из -за оформления), в то время как 2 означает прямое несоответствие. Примечание. Если пользовательский агент вообще не присутствует, это значение остается на уровне 0.
- int: OS_MATCH_Q - ОС Качество соответствия: 0 для обычного совпадения; 1 для нечеткого (например, разница в TTL или DF); 2 для общей подписи; и 3 для обоих.
- Строка: OS_NAME - Имя самой последней положительно соответствующей ОС. Если ОС не известна, OS_NAME - пустая строка. Примечание. Если хост сначала видна с использованием известной системы, а затем переключается на неизвестную, это поле не сбросится.
- Строка: OS_FLARO - Версия ОС. Может быть пустым, если нет данных.
- Строка: http_name - последнее положительно идентифицированное приложение HTTP (например, «Firefox»).
- Строка: http_flavor - Версия приложения HTTP, если таковые имеются.
- Строка: link_type - Тип сетевой ссылки, если распознается.
- Строка: язык - язык системы, если признан.
Лицензия
См. License.txt