unified2 egy tiszta Python értelmező az IDS (gondolom [Snort] (http://snort.org)) unified2 bináris napló formában.
Modul lehetővé teszi, hogy feldolgozza IDS naplók bináris "unified2" formátumú python tárgyakat.
Ez nem oldja meg a szabály azonosítók és nem célja, hogy helyettesítse az barnyard2 vagy orron át magát ebben a szerepben.
Fő célja, hogy kivonat egy csomag az adatokat a log, összefüggő egyes különösen kiváltott (és megoldott / vagy bejelentkezve keresztül külön más módon, pl alert_syslog vagy alert_csv felhorkant modulok) szabályt, így már nem sok figyelmet szentelt a feldolgozás esetén metaadatok.
Modulnak nincs C alkatrészeket, és nem használja ctypes, ezért kell viszonylag hordozható hogy nem CPython nyelvi implementációk.
Format
Format meghatározása származik Snort fejlécek (src / sfutil / Unified2_common.h) keresztül pyclibrary modul és gyorsítótáraz unified2 / _format.py fájlt.
Újabb meghatározások (mondjuk, ha új adattípusok adtunk) generálható futó azonos script a Snort a Unified2_common.h:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; bzr ága 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
Telepítés
Ez egy szabályos csomag Python 2.7 (nem 3.x között).
Segítségével pip a legjobb módja:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip telepíteni unified2
Ha nincs, akkor használjuk:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install pip
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip telepíteni unified2
Alternatív lásd még:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Curl https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip telepíteni unified2
Vagy, ha feltétlenül kell:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install unified2
De, tényleg nem szabad csinálni.
Aktuális-git verziót lehet telepíteni, mint ez:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip telepíteni -e 'git: //github.com/mk-fg/unified2.git#egg=unified2 "
Használat
Egyszerű példa:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; import unified2.parser
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; A ev, ev_tail a unified2.parser.parse ("/ var / log / snort / snort.u2.1337060186"):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; print "Esemény: ', ev
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Ha ev_tail: print 'Event farka: "ev_tail
Esemény cél itt is a dict metaadatok és a "farok", amely lehet egy blob vagy hasonló rekurzív-elemzett tuple metaadat-dict és a "farok" (pl UNIFIED2_EXTRA_DATA).
unified2.parser.Parser interfész a legjobban bemutatni a unified2.parser.read funkció:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; elemző, buff_agg = értelmező (), ''
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; míg a True:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buff = parser.read (src)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ha nem meztelenek: megtörni # EOF
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buff_agg + = buff
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; míg a True:
buff_agg, ev = parser.process (buff_agg)
ha ev van Nincs: szünet
hozam ev
Elképzelés az, hogy Parser.read metódust egy patak (pl fájl objektum), visszatérő azonban sok elemző bytes kell, hogy a következő kiírása emészthető darab adatok (egy csomag, abban az esetben a U2 napló) vagy bármelyik olvasható abban a pillanatban, üres string általában jelzi EOF vagy talán nem blokkoló olvasható vissza.
Parser.process akkor kell hívni a felhalmozott (a Parser.read kéri) buffer, visszatérő az első csomagot, hogy lehet elemzett onnan (vagy nincs, ha puffer nem elég nagy) és a maradék (nem elemzett) puffer adatokat.
követelmények :
- Python
Hozzászólás nem található