unified2 ay isang purong-Python pang-parse para sa IDS (tingin [pagsisingasing] (http://snort.org)) unified2 binary format ng log.
Module ay nagbibigay-daan upang iproseso ang IDS mga log sa binary format "unified2" sa python bagay.
Hindi nito malutas ang mga id ng panuntunan at hindi nilalayong maging isang kapalit para sa barnyard2 o pagsisingasing mismo sa papel na iyon.
Pangunahing layunin ay upang kunin ang isang packet data mula sa log, na nauugnay sa ilang partikular na trigger (at nalutas / log nang hiwalay sa pamamagitan ng ibang paraan, gaya ng alert_syslog o alert_csv pagsisingasing module) panuntunan, kaya hindi ako nagbayad magkano pansin sa metadata pagpoproseso ng kaganapan.
Module ay walang C mga bahagi at hindi gumagamit ng ctypes, kaya dapat na walang kinikilingan portable na-cPython hindi pagpapatupad wika.
Format
Kahulugan Format ay nagmula sa pagsisingasing header (src / sfutil / Unified2_common.h) sa pamamagitan ng pyclibrary module at na-cache sa unified2 / _format.py file.
Mas bagong mga kahulugan (halimbawa, kung bagong uri ng data ay idinagdag) ay maaaring likhain sa pamamagitan ng pagpapatakbo ng parehong script sa pagsisingasing ng Unified2_common.h:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; bzr sangay 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
Pag-install
Ito ay isang regular na pakete para sa Python 2.7 (hindi 3.x).
Paggamit ng buto ng bungang-kahoy ay ang pinakamahusay na paraan:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Buto ng bungang-kahoy-install unified2
Kung hindi ka pa nito, gamitin ang:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install buto ng bungang-kahoy
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Buto ng bungang-kahoy-install unified2
Bilang kahalili tingnan din:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Mabaluktot https://raw.github.com/pypa/pip/master/contrib/get-pip.py | python
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Buto ng bungang-kahoy-install unified2
O kaya naman, kung talagang ay dapat na:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install unified2
Ngunit, ikaw talaga dapat hindi gawin iyon.
Maaaring i-install Kasalukuyang-Git version tulad nito:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Buto ng bungang-kahoy-install -e 'Git: //github.com/mk-fg/unified2.git#egg=unified2'
Paggamit
Simpleng halimbawa:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; -import unified2.parser
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; para sa EV, ev_tail sa unified2.parser.parse ('/ var / log / singhal / snort.u2.1337060186'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; naka-print na 'Kaganapan:', EV
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; kung ev_tail: 'buntot ng Kaganapan:' print, ev_tail
Bagay na Kaganapan dito ay isang dict ng metadata at isang "buntot", na maaaring maging isang patak o isang katulad na recursively-parse tuple ng metadata-dict at "buntot" (hal para sa UNIFIED2_EXTRA_DATA).
interface unified2.parser.Parser ay pinakamahusay na isinalarawan sa pamamagitan ng unified2.parser.read pag-andar:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; pang-parse, buff_agg = pang-parse (), ''
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; habang Tama:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; magpadilaw = parser.read (src)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; kung hindi magpadilaw: masira # EOF
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buff_agg + = magpadilaw
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; habang Tama:
buff_agg, EV = parser.process (buff_agg)
kung EV ay Wala: break na
ani EV
Ideya dito ay na Parser.read pamamaraan ay dapat na matawag na may isang stream (eg isang file na bagay), mga bumabalik na gayunpaman ay nangangailangan ng maraming byte pang-parse upang makuha ang susunod na parseable tipak ng data (isang packet, sa kaso ng U2 log) o kahit anong mababasa sa sandaling ito, walang laman na string ay karaniwang isang pahiwatig ng EOF o siguro hindi bina-block basahin ang balik.
Parser.process pagkatapos ay dapat na matawag may naipon (sa pamamagitan ng Parser.read tawag) buffer, bumabalik sa unang packet na maaaring i-parse mula doon (o Wala, kung buffer ay hindi sapat malaki) at ang natitira buffer data (-parse non).
Mga Kinakailangan :
- Python
Mga Komento hindi natagpuan