unified2は、IDS(考える[Snortの](http://snort.org))unified2バイナリログ形式のための純粋なPythonパーサーです。
モジュールは、Pythonオブジェクトにバイナリ「unified2」形式でのIDSログを処理することができます。
それは、ルールIDが解決しないと、その役割でbarnyard2やSnortの自体の代わりとなるものではありません。
主な目的は、トリガー(および解決/、他の手段を介して別々にログインして例えばalert_syslogまたはalert_csv Snortのモジュール)は、いくつかの特定に関連したログからパケットデータを、抽出することで、ルールので、私はイベントのメタデータの処理に多くの注意を払っていない。
モジュールは、Cコンポーネントを持っていないとのctypesを使用していないので、非CPythonの言語の実装にかなりのポータブルにする必要があります。
の書式の
フォーマット定義はpyclibraryモジュールを介してSnortのヘッダ(SRC / sfutil / Unified2_common.h)に由来していると_format.py / unified2ファイルにキャッシュされます。
新しい定義(新しいデータ型が追加された場合たとえば、)のSnortのUnified2_common.hで同じスクリプトを実行することによって生成することができます:
        bzrのブランチLP:pyclibrary
        CDのpyclibrary
        Pythonの... / unified2 / _format.py ... / snort-2.XYZ/src/sfutil/Unified2_common.h
<強い>インストールの
これは、Python 2.7(しない3.X)のための定期的なパッケージです。
PIPを使用すると、最良の方法である:
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; %ピップunified2インストール
あなたはそれを持っていない場合は、使用します。
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; %easy_installをピップ
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; %ピップ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; %ピップunified2インストール
それとも、あなたは絶対に必要がある場合は、以下の
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; %easy_installをunified2
しかし、あなたは本当にそれを行うべきではありません。
電流gitのバージョンは次のようにインストールできます。
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; %PIP -e '://github.com/mk-fg/unified2.git#egg=unified2 gitの'をインストール
の使用法の
簡単な例:
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;輸入unified2.parser
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP; EV用、unified2.parser.parseでev_tail( 'は/ 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オブジェクトは、BLOBまたはメタデータ辞書と「テール」(UNIFIED2_EXTRA_DATA用など)の類似の再帰的に解析されたタプルいずれかであることができるメタデータと「テール」の辞書、です。
unified2.parser.Parserインターフェイスは、最高のunified2.parser.read機能によって示されている:
&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;パーサ、buff_agg =パーサー()、 ''
&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;そうでない場合バフ:#EOFを破る
&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方法はしかし何バイトパーサーは、(U2ログの場合は1パケット、)次のデータの解析可能なチャンクを取得する必要があるか、何を読み取ることができます戻って、(例えばファイルオブジェクト)ストリームで呼び出さなければならないということである現時点では、空の文字列は、通常はEOFまたは多分非ブロック読み込みリターンの指標である。
と(非解析された)バッファ·データを、残りの(バッファが十分な大きさでない場合、またはなし)Parser.processは、その後そこから解析することができない最初のパケットを返す、蓄積された(Parser.read呼び出しによって)緩衝液を用いて呼び出す必要があります。
の要件の
- のPythonます。
コメントが見つかりません