P0F Python API Client
Dies ist ein einfacher API -Client für P0F3, der unter http://lcamtuf.coredump.cx/p0f3/ erhältlich ist. Es ist nicht mit Version 2.x oder 1.x kompatibel. Starten Sie P0F mit -s path/to/unix_socket -Option.
Grundnutzung:
Aus P0F Import P0F, P0Fexception
Daten = keine
p0f = p0f ("p0f.sock") # Zeigen Sie dies auf Socket, das mit "-s" -Argument definiert ist.
versuchen:
Data = p0f.get_info ("192.168.0.1")
Außer P0Fexception, e:
# Ungültige Abfrage wurde an p0f gesendet. Vielleicht hat sich die API geändert?
Druck e
außer KeyError, e:
# Für diese IP -Adresse sind keine Daten verfügbar.
Druck e
außer ValueError, e:
# p0f gab ungültige Konstantwerte zurück. Vielleicht hat sich die API geändert?
Druck e
Wenn Daten:
Drucken Sie "Erst gesehen:", Data ["First_seen"]
Drucken Sie "Last gesehen:", Data ["last_seen"]
Django -Integration
Beispiele/django_models.py finden Sie für ein vollständiges Django -Modell der von P0F zurückgegebenen Daten.
Django Middleware ist in p0f.django.middleware verfügbar.
Zum Gebrauch P0FSOCKET = "path/to/p0f_unix_socket" zu den Einstellungen Ihres Projekts und p0f.django.middleware.P0fMiddleware to MIDDLEWARE_CLASSES hinzufügen.
Die Middleware fügt allen eingehenden Anforderungen p0f -Attribut hinzu. request.p0f ist keine Wenn die Verbindung zu P0F fehlgeschlagen ist oder P0F keine Daten für die Remote -IP -Adresse zurückgab.
Datenfelder
Teile dieser Beschreibungen werden schamlos von http://lcamtuf.coredump.cx/p0f3/readme kopiert:
Standardmäßig werden die folgenden Felder analysiert:
- DateTime: First_seen
- DateTime: last_seen
- Timedelta: Verfügbarkeit
- INT: UPTORE_SEC
- Timedelta: up_mod_days
- DateTime: last_nat
- DateTime: last_chg
Zusätzlich werden Bad_sw und Os_Match_Q validiert. "ValueError" wird erhöht, wenn ein falscher Wert auftritt. Für alle leeren Felder wird keiner anstelle von leeren Saiten oder Konstanten verwendet:
- UPTORE_MIN
- UPTORE_SEC
- Betriebszeit
- up_mod_days
- last_nat
- last_chg
- Distanz
- bad_sw
- OS_NAME
- OS_FLAIMAM
- http_flavor
- link_type
- Sprache
Diese Parsen und Validierung kann mit deaktiviert werden
p0f.get_info ("192.168.0.1", true)
Vollständige Beschreibungen der Felder:
- INT: First_seen - Unix -Zeit (Sekunden) der ersten Beobachtung des Hosts.
- INT: Last_seen - Unix -Zeit (Sekunden) des neuesten Verkehrs.
- INT: Total_Conn - Gesamtzahl der gesehenen Verbindungen.
- INT: UPTORE_MIN - Berechnete System -Betriebszeit in Minuten. Null, wenn nicht bekannt.
- INT: UP_MOD_DAYS - UPTIME WRANK -AROGEN -Intervall in Tagen.
- int: last_nat - Zeit der neuesten Erkennung der IP -Freigabe (NAT, Lastausgleich, Proxying). Null, wenn niemals erkannt.
- INT: Last_chg - Zeit des neuesten einzelnen OS -Mismpatches (z. B. aufgrund von Multiboot- oder IP -Wiederverwendung).
- int: Entfernung - Systemabstand (abgeleitet von TTL; -1 wenn keine Daten).
- INT: Bad_sw - P0F glaubt, dass die Benutzer -Agent- oder Server -Zeichenfolgen nicht korrekt sind. Der Wert von 1 bedeutet OS -Differenz (möglicherweise aufgrund von Proxying), während 2 eine direkte Nichtübereinstimmung bedeutet. Hinweis: Wenn Benutzer-Agent überhaupt nicht vorhanden ist, bleibt dieser Wert bei 0.
- INT: OS_MATCH_Q - OS -Übereinstimmungsqualität: 0 für eine normale Übereinstimmung; 1 für Fuzzy (zB, TTL oder DF -Differenz); 2 für eine generische Signatur; und 3 für beide.
- String: OS_NAME - Name des neuesten positiv übereinstimmenden Betriebssystems. Wenn OS nicht bekannt ist, ist OS_NAME eine leere Zeichenfolge. HINWEIS: Wenn der Host zuerst mit einem bekannten System gesehen wird und dann zu einem unbekannten Wechsel wechselt, wird dieses Feld nicht zurückgesetzt.
- String: OS_FLAIMA - OS -Version. Kann leer sein, wenn keine Daten.
- String: HTTP_NAME - Die neuesten positiv identifizierten HTTP -Anwendung (z. B. 'Firefox').
- String: HTTP_FLAIMA - Version der HTTP -Anwendung, falls vorhanden.
- String: Link_type - Netzwerkverbindungsart, falls erkannt.
- Zeichenfolge: Sprache - Systemsprache, falls erkennen.
Lizenz
Siehe Lizenz.TXT