unified2 είναι μια καθαρή-Python parser για IDS (σκεφτείτε [Snort] (http://snort.org)) unified2 δυαδική μορφή ημερολογίου.
Ενότητα επιτρέπει την επεξεργασία IDS αρχεία καταγραφής σε δυαδική "unified2" μορφή σε Python αντικείμενα.
Δεν επιλύει τα αναγνωριστικά κανόνα και δεν προορίζεται να είναι υποκατάστατο για barnyard2 ή ίδια Snort σε αυτόν τον ρόλο.
Κύριος σκοπός είναι να εξαγάγετε ένα πακέτο δεδομένων από το ημερολόγιο, συνδέεται με κάποιο συγκεκριμένο ενεργοποιείται (και να επιλυθούν / καταγράφονται χωριστά με άλλα μέσα, π.χ. alert_syslog ή alert_csv ενότητες ρουθουνίζω) κανόνας, γι 'αυτό δεν έχουν δοθεί μεγάλη προσοχή στην περίπτωση επεξεργασίας μεταδεδομένων.
Ενότητα δεν έχει C συστατικά και δεν χρησιμοποιεί ctypes, έτσι θα πρέπει να είναι αρκετά φορητό ώστε να μη CPython γλώσσα υλοποιήσεις.
Format
Ορισμός μορφή προέρχεται από το Snort κεφαλίδες (src / sfutil / Unified2_common.h) μέσω pyclibrary μονάδα και αποθηκεύονται προσωρινά σε unified2 / _format.py αρχείο.
Νεότερες ορισμούς (ας πούμε, αν προστέθηκαν νέοι τύποι δεδομένων) μπορεί να παράγεται από εκτελεί το ίδιο σενάριο για Unified2_common.h χρεμέτισμα για:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? bzr υποκατάστημα LP: pyclibrary
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? CD pyclibrary
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? Python ... / unified2 / _format.py ... / snort-2.XYZ/src/sfutil/Unified2_common.h
installation
Είναι μια τακτική πακέτο για την Python 2.7 (όχι 3.X).
Χρησιμοποιώντας pip είναι ο καλύτερος τρόπος:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % PIP εγκατάσταση unified2
Αν δεν το έχετε, χρησιμοποιήστε:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % Easy_install pip
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % PIP εγκατάσταση unified2
Εναλλακτικά, δείτε επίσης:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % Μπούκλα https://raw.github.com/pypa/pip/master/contrib/get-pip.py | πύθωνα
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % PIP εγκατάσταση unified2
Ή, αν πρέπει οπωσδήποτε να:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % Easy_install unified2
Αλλά, πραγματικά δεν πρέπει να το κάνουμε αυτό.
Τρέχουσα έκδοση-GIT μπορεί να εγκατασταθεί σαν αυτό:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? % PIP εγκαταστήσετε -e 'git: //github.com/mk-fg/unified2.git#egg=unified2 »
Χρήση
Απλό παράδειγμα:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? unified2.parser εισαγωγής
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? για EV, ev_tail σε unified2.parser.parse ('/ var / log / snort / snort.u2.1337060186 »):
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? Εκτύπωση «Εκδήλωση: 'ev
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? αν ev_tail: «ουρά Εκδήλωση:« εκτύπωσης, ev_tail
Αντικείμενο Event εδώ είναι μια dict μεταδεδομένων και μια «ουρά», το οποίο μπορεί να είναι είτε μια άμορφη μάζα ή ένα παρόμοιο αναδρομικά-αναλυθεί πλειάδα των μεταδεδομένων-dict και "ουρά" (π.χ. για UNIFIED2_EXTRA_DATA).
unified2.parser.Parser interface φαίνεται καλύτερα με τον unified2.parser.read λειτουργία:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? parser, buff_agg = Parser (), ''
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? Ενώ αυτό είναι αληθές:
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? βοός = parser.read (SRC)
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? αν δεν βοός: σπάσει # ΕΟΦ
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? buff_agg + = βοός
& Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? & Nbsp? Ενώ αυτό είναι αληθές:
buff_agg, ev = parser.process (buff_agg)
Εάν EV είναι Κανένα: διάλειμμα
απόδοση ev
Ιδέα εδώ είναι ότι η μέθοδος Parser.read πρέπει να κληθεί με ένα ρεύμα (π.χ. ένα αντικείμενο αρχείο), επιστρέφει όμως ο αριθμός των bytes parser χρειάζεται να πάρετε την επόμενη parseable κομμάτι των δεδομένων (ένα πακέτο, σε περίπτωση καταγραφής U2) ή οτιδήποτε άλλο μπορεί να διαβαστεί αυτή τη στιγμή, κενό string είναι συνήθως μια ένδειξη του ΕΟΦ ή ίσως non-blocking διαβάσει επιστροφή.
Parser.process τότε θα πρέπει να ονομάζεται με συσσωρευμένες (από Parser.read κλήσεις) ρυθμιστικό, επιστρέφοντας το πρώτο πακέτο που μπορεί να αναλυθεί από εκεί (ή Κανένα, αν ρυθμιστικό δεν είναι αρκετά μεγάλο) και τα υπόλοιπα (μη-αναλυθεί) δεδομένα buffer.
Απαιτήσεις :
- Python
Τα σχόλια δεν βρέθηκε