unified2 yra grynas Python analizatorius už IDS (manau [Snort] (http://snort.org)) unified2 dvejetainis žurnalo formatu.
Modulis leidžia apdoroti IDS rąstų dvejetainėje "unified2" formatu į python objektų.
Tai neišsprendžia taisyklė adresus ir nėra skirtas būti už barnyard2 ar pati Snort toje vaidmenį keitimas.
Pagrindinis tikslas yra išgauti paketinių duomenų iš žurnalo, susijusių su kai pirma sukėlė (ir išspręsta / prisijungęs atskirai kitomis priemonėmis, pavyzdžiui, alert_syslog arba alert_csv Snort modulius) taisyklė, todėl aš ne daug dėmesio tvarkymą metaduomenų.
Modulis neturi C komponentus ir nenaudoja ctypes, todėl turėtų būti gana nešiojamų ne cPython kalbos diegimas.
Formatas
Formatas apibrėžimas yra kilęs iš Snort antraštes (src / sfutil / Unified2_common.h) per pyclibrary modulio ir paslėptas unified2 / _format.py failą.
Naujesni apibrėžimai (tarkim, jei nauji duomenų tipai buvo pridėta) gali būti renkama veikia tą patį scenarijų, kad purkštauti anketa Unified2_common.h:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; bzr filialas 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
Diegimas
Tai įprastas paketas Python 2.7 (ne 3.x).
Naudojant pip yra geriausias būdas:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip įdiegti unified2
Jei neturite, naudokite:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install pip
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip įdiegti unified2
Arba taip pat žr:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Garbanės https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip įdiegti unified2
Arba, jei jūs tikrai turi:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install unified2
Tačiau, jūs tikrai neturėtų daryti.
Aktualus-git versija gali būti įdiegta kaip šis:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip įdiegti-e 'git: //github.com/mk-fg/unified2.git#egg=unified2 "
Naudojimas
Paprastas pavyzdys:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; importo unified2.parser
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; už 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; Spausdinti "renginys:" EV
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; jei ev_tail: spausdinti "Event uodega:" ev_tail
Renginių objektas čia yra metaduomenų dict ir "uodega", kuris gali būti arba lašelis ar panaši rekursyviai-apdoroti kortežas metaduomenų-dict ir "uodega" (pvz UNIFIED2_EXTRA_DATA).
unified2.parser.Parser sąsaja geriausiai iliustruoja unified2.parser.read funkcijos:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; analizatorius, buff_agg = parser (), ''
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; o Tiesa:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buffu = parser.read (src)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; jei ne buff: pertrauka # EOF
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buff_agg + = buffu
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; o Tiesa:
buff_agg, EV = parser.process (buff_agg)
jei EV Nėra: pertrauka
derlius ev
Idėja yra ta, kad Parser.read metodas turėtų būti vadinamas su srove (pvz failo objektą), grąžinant Tačiau daugelis baitų analizatorius turi gauti kitą parseable riekė duomenų (vieną paketą, atveju u2 žurnalą) ar kokia galima skaityti tuo momentu, tuščia eilutė, paprastai iš EOF gal ne blokuoja skaityti grąžinimo nuoroda.
Parser.process tada turėtų būti vadinamas su sukaupta (iki Parser.read skambučiai) buferį, grąžinant pirmąjį paketą, kuris gali būti sparsowania iš ten (arba None, jei buferis yra nepakankamai didelis) ir likę (ne apdoroti) apsaugines duomenis.
Reikalavimai :
- Python
Komentarai nerastas