unified2是一個純粹的Python解析器IDS(想想[Snort的](http://snort.org))unified2二進制日誌格式。
模塊可以處理二進制“unified2”格式IDS日誌為Python對象。
它不能解決規則ID,並不意味著要取代barnyard2或Snort的本身的作用。
主要目的是提取日誌分組數據,與一些特定的觸發相關規則(和解決/通過其他方式,如alert_syslog或alert_csv哼模塊單獨記錄),所以我也沒有很重視處理事件的元數據。
模塊沒有C組分,並且不使用ctypes的,所以應該是相當移植到非CPython的語言實現。
格式
格式定義是從Snort的報頭(SRC / sfutil / Unified2_common.h)通過pyclibrary模塊派生並緩存在unified2 / _format.py文件。
較新的定義(例如,如果加入新的數據類型)可通過運行在Snort的Unified2_common.h同一腳本生成:
        BZR分公司LP:pyclibrary
        CD pyclibrary
       蟒蛇... / unified2 / _format.py ... / snort-2.XYZ/src/sfutil/Unified2_common.h
安裝
這是一個普通的包的Python 2.7(不3.X)。
使用PIP是最好的方法:
        %PIP安裝unified2
如果沒有它,使用方法:
        %的easy_install點子
        %PIP安裝unified2
另外也見:
        %捲曲https://raw.github.com/pypa/pip/master/contrib/get-pip.py |蟒蛇
        %PIP安裝unified2
或者,如果你絕對必須:
        %easy_install的unified2
但是,你真的不應該這樣做。
目前,Git版本可以安裝這樣的:
        PIP%安裝-e'混帳://github.com/mk-fg/unified2.git#egg=unified2“
用法
簡單的例子:
       進口unified2.parser
       為EV,ev_tail在unified2.parser.parse('/無功/日誌/鼻息/ snort.u2.1337060186'):
               打印“事件:”,EV
               如果ev_tail:打印“事件尾巴:”,ev_tail
事件對象這裡是元數據的字典和一個“尾巴”,它可以是一個BLOB或元數據字典中類似的遞歸解析的元組和“尾”(例如UNIFIED2_EXTRA_DATA)。
unified2.parser.Parser接口被最佳地示出由unified2.parser.read功能:
       解析器buff_agg =分析器()“,”
       而真正的:
                BUFF = parser.read(SRC)
               如果不是淺黃色:打破#EOF
                buff_agg + =的buff
               而真正的:
buff_agg,EV = parser.process(buff_agg)
如果EV是無:突破
產量EV
想法這裡是Parser.read方法應被調用以流(例如,一個文件對象),返回然而許多字節分析器需要獲得數據的下一個可解析塊(一個分組,如果U2日誌),或者任何可以被讀目前,空字符串通常是EOF也許非阻塞讀回報的指示。
Parser.process然後應該被稱為與積累(通過Parser.read調用)緩衝液,返回可從那裡被分析的第一個分組(或無,如果緩衝器不是足夠大)和剩餘的(非解析)緩衝的數據。
要求:
- 在Python中
評論沒有發現