unified2 ikili günlük biçiminde unified2 IDS için saf-Python ayrıştırıcı (düşünmek [Snort] (http://snort.org)) 'dir.
Modül Python nesneleri içine ikili "unified2" biçiminde IDS günlükleri işlemek için izin verir.
Bu kural kimlikleri çözmezse ve o rolü barnyard2 veya Snort kendisi için bir yedek olmak anlamına gelmez.
Ana amaç tetikleyen bazı özel ile ilişkili günlüğüne bir paket veri ayıklamak için kural (ve çözülmesi / diğer yollarla, örneğin alert_syslog veya alert_csv snort modülleri aracılığıyla ayrı oturum açmış), bu yüzden işlem olay metadata çok dikkat değil.
C Modülü bileşenleri yoktur ve ctypes kullanmaz, bu yüzden olmayan CPython dil uygulamaları oldukça taşınabilir olmalıdır.
Biçim
Biçim tanımı pyclibrary modülü üzerinden Snort başlıkları (src / sfutil / Unified2_common.h) türetilmiştir ve _format.py / unified2 dosyasında önbelleğe alınır.
Yeni tanımları (yeni veri tipleri eklendi olsaydı diyelim) Snort en Unified2_common.h aynı komut dosyası çalıştırarak elde edilebilir:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; bzr şube 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
Kurulum
Python 2.7 (değil 3.X) için düzenli bir paket.
Pip kullanarak en iyi yoludur:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip unified2 yüklemek
Eğer yoksa, kullanın:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install Pip
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip unified2 yüklemek
Alternatif ayrıca bkz:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Kıvırmak https://raw.github.com/pypa/pip/master/contrib/get-pip.py | piton
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip unified2 yüklemek
Ya da, kesinlikle gerekir eğer:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Easy_install unified2
Ama, gerçekten bunu olmamalıdır.
Akım-git sürüm böyle kurulabilir:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; % Pip -e install 'budala: //github.com/mk-fg/unified2.git#egg=unified2'
Kullanım
Basit bir örnek:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ithalat unified2.parser
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; unified2.parser.parse EV, ev_tail için ('/ var / / snort'u / snort.u2.1337060186 log'):
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; print 'Olay:' ev
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Baskı 'Olay kuyruk:' ev_tail eğer, ev_tail
Olay nesnesi burada leke ya da meta-dict benzer ardışık-çözümlenir demet ve "kuyruk" (UNIFIED2_EXTRA_DATA için örneğin) olabilir ya metadata bir dict ve "kuyruk", olduğunu.
unified2.parser.Parser arayüzü en unified2.parser.read fonksiyonu ile izah edilir:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ayrıştırıcı, buff_agg = Ayrıştırıcı (), ''
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Doğru ise:
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; devetüyü = parser.read (src)
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buff değilse: kırmak # EOF
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; buff_agg + = tutkunu
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; Doğru ise:
buff_agg, ev = parser.process (buff_agg)
molası: ev Yok eğer
verim ev
Buradaki fikir Parser.read yöntemi, ancak birçok bayt ayrıştırıcı (u2 günlüğüne durumunda bir paket) veri sonraki parseable yığın almak gerekiyor ya da ne olursa olsun okunabilir dönen, (örneğin bir dosya nesnesi) bir akım ile adlandırılan gerektiğidir Şu anda, boş bir dize genellikle EOF ya da belki engellenmeyen okuma getiri bir göstergesidir.
Ve (non-çözümlenir) tampon verilerini kalan (tampon yeterince büyük değilse, ya da Yoktur) Parser.process oradan çözümlenebilir ilk paket dönen, birikmiş (Parser.read çağırır) tarafından tampon ile aranmalıdır.
Gereksinimler :
- Python
Yorum Bulunamadı