P0F Python API عميل
هذا عميل API بسيط لـ P0F3 ، متاح على http://lcamtuf.coredump.cx/p0f3/. إنه غير متوافق مع الإصدار 2.x أو 1.x. ابدأ P0F مع خيار -s path/to/unix_socket .
الاستخدام الأساسي:
من P0F استيراد P0F ، P0FException
البيانات = لا شيء
p0f = p0f ("p0f.sock")
يحاول:
البيانات = p0f.get_info ("192.168.0.1")
باستثناء p0fexception ، e:
# تم إرسال استعلام غير صالح إلى P0F. ربما تغيرت واجهة برمجة التطبيقات؟
طباعة ه
باستثناء keyerror ، e:
# لا توجد بيانات متاحة لعنوان IP هذا.
طباعة ه
باستثناء ValueRor ، ه:
# P0F عاد قيم ثابتة غير صالحة. ربما تغيرت واجهة برمجة التطبيقات؟
طباعة ه
إذا كانت البيانات:
اطبع "شوهد أولاً:" ، بيانات ["First_seen"]
طباعة "آخر مرة شوهد:" ، البيانات ["Last_seen"]
تكامل Django
انظر أمثلة/django_models.py للحصول على نموذج Django الكامل للبيانات التي تم إرجاعها بواسطة P0F.
يتوفر Django Middleware في 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: uptime_sec
- Timedelta: UP_MOD_DAYS
- DateTime: Last_nat
- DateTime: Last_chg
بالإضافة إلى ذلك ، يتم التحقق من صحة BAD_SW و OS_MATCH_Q . يتم رفع "ValueRror" ، إذا تم مواجهة قيمة غير صحيحة. لجميع الحقول الفارغة ، لا يتم استخدام أي منها بدلاً من الأوتار الفارغة أو الثوابت:
- uptime_min
- uptime_sec
- وقت التشغيل
- up_mod_days
- last_nat
- last_chg
- مسافة
- bad_sw
- OS_NAME
- OS_FLAVAR
- http_flavor
- Link_type
- لغة
يمكن تعطيل هذا التحليل والتحقق من الصحة
p0f.get_info ("192.168.0.1" ، صحيح)
أوصاف كاملة للحقول:
- int: first_seen - unix time (ثواني) من الملاحظة الأولى للمضيف.
- int: last_seen - unix time (ثواني) من أحدث حركة المرور.
- int: Total_conn - إجمالي عدد الاتصالات التي شوهدت.
- int: uptime_min - نظام التشغيل المحسوب ، في دقائق. الصفر إن لم يكن معروفًا.
- int: UP_MOD_DAYS - فاصل زمني لفائف ، في أيام.
- int: last_nat - وقت الكشف الأحدث لمشاركة IP (NAT ، موازنة التحميل ، البرامج). صفر إذا لم يتم الكشف عنها مطلقًا.
- int: last_chg - وقت عدم تطابق نظام التشغيل الفردي الأحدث (على سبيل المثال ، بسبب إعادة استخدام Multiboot أو IP).
- int: المسافة - مسافة النظام (مشتقة من TTL ؛ -1 إذا لم يكن هناك بيانات).
- INT: BAD_SW - P0F يعتقد أن سلاسل المستخدم أو سلاسل الخادم ليست دقيقة. تعني قيمة 1 فرق نظام التشغيل (ربما بسبب الوسيلة) ، في حين أن 2 تعني عدم التوافق الصريح. ملاحظة: إذا لم يكن وكيل المستخدم موجودًا على الإطلاق ، فستظل هذه القيمة عند 0.
- int: OS_MATCH_Q - جودة مطابقة نظام التشغيل: 0 للمباراة العادية ؛ 1 ل fuzzy (على سبيل المثال ، TTL أو DF الفرق) ؛ 2 لتوقيع عام. و 3 لكلا.
- السلسلة: OS_NAME - اسم نظام التشغيل المتطابق بشكل إيجابي. إذا لم يعرف نظام التشغيل ، فإن OS_NAME هو سلسلة فارغة. ملاحظة: إذا شوهد المضيف لأول مرة باستخدام نظام معروف ثم ينتقل إلى نظام غير معروف ، فلا يتم إعادة تعيين هذا الحقل.
- السلسلة: OS_FLAVAR - إصدار OS. قد تكون فارغة إذا لم تكن هناك بيانات.
- السلسلة: http_name - أحدث تطبيق HTTP تم تحديده بشكل إيجابي (على سبيل المثال 'Firefox').
- السلسلة: http_flavor - إصدار من تطبيق HTTP ، إن وجد.
- السلسلة: link_type - نوع ارتباط الشبكة ، إذا تم التعرف عليه.
- السلسلة: اللغة - لغة النظام ، إذا تم التعرف عليها.
رخصة
انظر الترخيص