
محرك فحص حزم قابل للبرمجة مع تصنيف NIDS، وتصنيف DNS، وتحليل التردد، وتوليد تعبيرات نمطية تلقائي (auto-regex). يدعم ارتباطات (bindings) بلغات Python/Ruby/Java/Lua للتكامل مع قواعد البيانات وأدوات الأمان الأخرى.
AIEngine هو محرك فحص حزم من الجيل التالي تفاعلي/قابل للبرمجة بلغات Python/Ruby/Java/Lua، مع قدرات تعلم دون أي تدخل بشري، ووظائف نظام كشف التسلل الشبكي (NIDS)، وتصنيف نطاقات DNS، ومجمع شبكات، وتحليل جنائي شبكي، وغيرها الكثير.
المشروع الفعلي موجود على https://bitbucket.org/camp0/aiengine
يساعد AIEngine أيضًا المتخصصين في الشبكات/الأمن على تحديد حركة المرور وتطوير تواقيع لاستخدامها في أنظمة NIDS، وجدران الحماية، ومصنفات حركة المرور، وما إلى ذلك.
الوظائف الرئيسية لـ AIEngine هي:
لاستخدام AIEngine (نسخة مصغرة) فقط قم بتشغيل الملف الثنائي aiengine أو استخدم ربط Python/Ruby/Java/Lua.
luis@luis-xps:~/c++/aiengine/src$ ./aiengine -h
aiengine 1.5
Mandatory arguments:
-I [ --input ] arg Sets the network interface ,pcap file or
directory with pcap files.
Link Layer optional arguments:
-q [ --tag ] arg Selects the tag type of the ethernet layer (vlan,mpls).
TCP optional arguments:
-t [ --tcp-flows ] arg (=32768) Sets the number of TCP flows on the pool.
UDP optional arguments:
-u [ --udp-flows ] arg (=16384) Sets the number of UDP flows on the pool.
Regex optional arguments:
-R [ --enable-signatures ] Enables the Signature engine.
-r [ --regex ] arg (=.*) Sets the regex for evaluate agains the flows.
-c [ --flow-class ] arg (=all) Uses tcp, udp or all for matches the signature
on the flows.
-m [ --matched-flows ] Shows the flows that matchs with the regex.
-j [ --reject-flows ] Rejects the flows that matchs with the
regex.
-w [ --evidence ] Generates a pcap file with the matching
regex for forensic analysis.
Frequencies optional arguments:
-F [ --enable-frequencies ] Enables the Frequency engine.
-g [ --group-by ] arg (=dst-port) Groups frequencies by src-ip,dst-ip,src-por
t and dst-port.
-f [ --flow-type ] arg (=tcp) Uses tcp or udp flows.
-L [ --enable-learner ] Enables the Learner engine.
-k [ --key-learner ] arg (=80) Sets the key for the Learner engine.
-b [ --buffer-size ] arg (=64) Sets the size of the internal buffer for
generate the regex.
-y [ --enable-yara ] Generates a yara signature.
Optional arguments:
-n [ --stack ] arg (=lan) Sets the network stack (lan,mobile,lan6,virtual,
oflow).
-d [ --dumpflows ] Dump the flows to stdout.
-s [ --statistics ] arg (=0) Show statistics of the network stack (5 levels).
-T [ --timeout ] arg (=180) Sets the flows timeout.
-P [ --protocol ] arg Show statistics of a specific protocol of the
network stack.
-e [ --release ] Release the caches.
-l [ --release-cache ] arg Release a specific cache.
-p [ --pstatistics ] Show statistics of the process.
-h [ --help ] Show help.
-v [ --version ] Show version string.
يدعم AIEngine خمسة أنواع من مكدسات الشبكة حسب طوبولوجيا الشبكة.
StackLan (lan) شبكة محلية قائمة على IPv4.
StackLanIPv6 (lan6) شبكة محلية مع دعم IPv6.
StackMobile (mobile) شبكة نقالة (واجهة Gn) لـ IPv4.
StackVirtual (virtual) مكدس للبيئات الافتراضية/السحابية مع VxLan و GRE شفاف.
StackOpenFlow (oflow) مكدس لبيئات OpenFlow.
AIEngine هو أيضًا وحدة Python/Ruby/Java/Lua تسمح بمزيد من المرونة من حيث التكامل مع الأنظمة والوظائف الأخرى. الكائنات الرئيسية التي يوفرها تصدير وحدة Python هي التالية.
DNSInfo
BitcoinInfo
DatabaseAdaptor (Abstract class)
DomainName
DomainNameManager
Flow
FlowManager
Frequencies
FrequencyGroup
HTTPInfo
HTTPUriSet
IMAPInfo
IPAbstractSet (Abstract class)
IPSet
IPSetManager
LearnerEngine
NetworkStack (Abstract class)
StackLan
StackLanIPv6
StackMobile
StackOpenFlow
StackVirtual
POPInfo
PacketDispatcher
PacketFrequencies
Regex
RegexManager
SIPInfo
SMTPInfo
SSLInfo
MQTTInfo
CoAPInfo
للحصول على وصف كامل لأساليب الفئة
import pyaiengine
help(pyaiengine)
تفقد صفحات تكوين الويكي أو دليل الأمثلة للحصول على أمثلة أكثر إثارة للاهتمام. [https://bitbucket.org/camp0/aiengine/wiki/Configurations]
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ make
الخيار الأول لتجميع المكتبة هو استخدام تحسينات الترجمة O3، مما سينتج مكتبة صغيرة الحجم
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make python
$ python pyai_test.py
الخيار الثاني سيقوم بتجميع المكتبة باستخدام الطريقة القياسية في Python عن طريق setup.py، مما سينتج حجم مكتبة أكبر مقارنة بالخيار السابق.
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ python setup.py build_ext -i
$ python pyai_test.py
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make ruby
$ ruby ruai_tests.rb
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make java
$ java -cp ".:/usr/share/java/junit.jar:/usr/share/java/hamcrest/core.jar:./buildjava" org.junit.runner.JUnitCore JunitTestSuite
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make lua
$ lua luai_tests.lua
AIEngine مطور بمعايير c++11/14 وهو بموجب شروط GPLv2.
احصل على كود مصدر AIEngine باستخدام
$ git clone https://bitbucket.com/camp0/aiengine
إذا كنت مهتمًا ببعض الوظائف أو بحاجة إلى مساعدة، فقط أرسل لي بريدًا إلكترونيًا. المساهمات مفيدة دائمًا.
تم تطوير AIEngine باستخدام التطوير الموجه بالاختبارات. لذلك، للحفاظ على نفس دورة الحياة، يجب أن تحتوي الوظيفة الجديدة على اختبارات وحدة في الدليل المنشأ للوظيفة الجديدة، وللتكامل مع النظام بأكمله، ثم التكامل مع ملف tests.cc الرئيسي في دليل /src.