Client de l'API P0F Python
Il s'agit d'un client API simple pour P0F3, disponible sur http://lcamtuf.coredump.cx/p0f3/. Il n'est pas compatible avec la version 2.x ou 1.x. Démarrez P0F avec -s path/to/unix_socket .
Utilisation de base:
à partir de P0F import P0f, p0fexception
données = aucun
p0f = p0f ("p0f.sock") # Poignez-le sur le socket défini avec l'argument "-s".
essayer:
data = p0f.get_info ("192.168.0.1")
Sauf P0Fexception, E:
# La requête non valide a été envoyée à P0F. Peut-être que l'API a changé?
imprimer e
sauf Keyerror, e:
# Aucune donnée n'est disponible pour cette adresse IP.
imprimer e
sauf ValueError, E:
# P0F a renvoyé des valeurs constantes non valides. Peut-être que l'API a changé?
imprimer e
Si les données:
Imprimez "First vu:", data ["first_seen"]
Imprimer "Dernière vue:", données ["last_seen"]
Intégration de Django
Voir Exemples / django_models.py pour le modèle Django complet des données renvoyées par P0F.
Django Middleware est disponible en p0f.django.middleware .
Pour utiliser, ajoutez P0FSOCKET = "path/to/p0f_unix_socket" à Settings.py de votre projet et p0f.django.middleware.P0fMiddleware à MIDDLEWARE_CLASSES .
Le middleware ajoute l'attribut p0f à toutes les demandes entrantes. request.p0f n'est pas si la connexion à P0F a échoué ou si P0F n'a pas renvoyé les données pour l'adresse IP distante.
Champs de données
Des parties de ces descriptions sont copiées sans vergogne à partir de http://lcamtuf.coredump.cx/p0f3/readme:
Par défaut, les champs suivants sont analysés:
- DateTime: first_seen
- DateTime: Last_seen
- Timedelta: de disponibilité
- int: Uptime_sec
- Timedelta: up_mod_days
- DateTime: Last_nat
- DateTime: last_chg
De plus, BAD_SW et OS_MATCH_Q sont validés. "ValueError" est soulevé, si une valeur incorrecte est rencontrée. Pour tous les champs vides, aucun n'est utilisé à la place des chaînes ou des constantes vides:
- Uptime_min
- Uptime_sec
- durée de la baisse
- up_mod_days
- dernier_nat
- dernier_chg
- distance
- bad_sw
- OS_NAME
- OS_FLAPH
- http_flavor
- link_type
- langue
Cette analyse et cette validation peuvent être désactivées avec
p0f.get_info ("192.168.0.1", true)
Descriptions complètes des champs:
- INT: First_seen - Temps Unix (secondes) de la première observation de l'hôte.
- INT: Last_seen - Unix Time (secondes) du trafic le plus récent.
- INT: Total_Conn - Nombre total de connexions vues.
- INT: UPtime_min - Time de disponibilité du système calculé, en quelques minutes. Zéro si ce n'est pas connu.
- INT: UP_MOD_DAYS - Intervalle developpant de la hausse, en jours.
- INT: Last_nat - Temps de la détection la plus récente du partage IP (NAT, équilibrage de charge, proxing). Zéro si jamais détecté.
- INT: Last_Chg - Temps du décalage individuel individuel le plus récent (par exemple, en raison de la réutilisation multiboot ou IP).
- INT: Distance - Distance du système (dérivée de TTL; -1 si pas de données).
- INT: BAD_SW - P0F pense que les chaînes d'agent utilisateur ou de serveur ne sont pas exactes. La valeur de 1 signifie la différence de système d'exploitation (peut-être en raison de la proxyme), tandis que 2 signifie un décalage pur et simple. Remarque: Si l'utilisateur-agent n'est pas du tout présent, cette valeur reste à 0.
- INT: OS_MATCH_Q - OS Match Quality: 0 pour une correspondance normale; 1 pour Fuzzy (par exemple, TTL ou DF Différence); 2 pour une signature générique; et 3 pour les deux.
- String: OS_NAME - Nom du système d'exploitation positivement le plus récent. Si OS n'est pas connu, OS_NAME est une chaîne vide. Remarque: Si l'hôte est vu pour la première fois à l'aide d'un système connu, puis passe à un système inconnu, ce champ n'est pas réinitialisé.
- String: OS_flavor - Version OS. Peut être vide si aucune donnée.
- String: http_name - Application HTTP plus récente identifiée positivement (par exemple, «Firefox»).
- String: http_flavor - version de l'application http, le cas échéant.
- String: link_type - Type de lien réseau, si reconnu.
- String: Langue - Langue système, si elle est reconnue.
Licence
Voir Licence.txt