
AIEngine अगली पीढ़ी का इंटरैक्टिव/प्रोग्रामेबल Python/Ruby/Java/Lua और Go NIDS (नेटवर्क इंट्रूज़न डिटेक्शन सिस्टम) है।
AIEngine अगली पीढ़ी का इंटरैक्टिव/प्रोग्रामेबल Python/Ruby/Java/Lua और Go नेटवर्क घुसपैठ पहचान प्रणाली इंजन है जिसमें बिना किसी मानवीय हस्तक्षेप के सीखने की क्षमता है, DNS डोमेन वर्गीकरण, स्पैम डिटेक्शन, नेटवर्क कलेक्टर, नेटवर्क फॉरेंसिक और कई अन्य चीज़ें।
AIEngine नेटवर्क/सुरक्षा पेशेवरों को ट्रैफिक की पहचान करने और NIDS, फ़ायरवॉल, ट्रैफिक क्लासिफायर आदि में उपयोग के लिए सिग्नेचर विकसित करने में भी मदद करता है।
AIEngine की मुख्य कार्यक्षमताएँ हैं:
अधिक जानकारी के लिए docs फ़ोल्डर देखें
AIEngine (छोटा संस्करण) का उपयोग करने के लिए बस aiengine बाइनरी चलाएँ या python/ruby/java/lua बाइंडिंग का उपयोग करें।
luis@luis-xps:~/c++/aiengine/src$ ./aiengine -h
aiengine 2.1.0
अनिवार्य तर्क:
-I [ --input ] arg नेटवर्क इंटरफ़ेस, pcap फ़ाइल या pcap फ़ाइलों वाली निर्देशिका सेट करता है।
लिंक लेयर वैकल्पिक तर्क:
-q [ --tag ] arg ईथरनेट लेयर का टैग प्रकार चुनता है (vlan, mpls)।
TCP वैकल्पिक तर्क:
-t [ --tcp-flows ] arg (=32768) पूल पर TCP फ़्लो की संख्या सेट करता है।
UDP वैकल्पिक तर्क:
-u [ --udp-flows ] arg (=16384) पूल पर UDP फ़्लो की संख्या सेट करता है।
डोमेन वैकल्पिक तर्क:
-D [ --domain-file ] arg फ़ाइल से डोमेन नाम पढ़ता है।
-B [ --domain-protocol ] arg (=dns) domain-file को प्लग करने का प्रोटोकॉल (dns, ssl, http)।
-S [ --matched-domain ] केवल वे डोमेन दिखाता है जो मेल खाते हैं।
रेगेक्स वैकल्पिक तर्क:
-R [ --enable-signatures ] सिग्नेचर इंजन सक्षम करता है।
-r [ --regex ] arg (=.*) फ़्लो के विरुद्ध मूल्यांकन करने के लिए रेगेक्स सेट करता है।
-c [ --flow-class ] arg (=all) फ़्लो पर सिग्नेचर मैच करने के लिए tcp, udp या all का उपयोग करता है।
-m [ --matched-flows ] वे फ़्लो दिखाता है जो रेगेक्स से मेल खाते हैं।
-M [ --matched-packet ] पैकेट पेलोड दिखाता है जो रेगेक्स से मेल खाता है।
-C [ --continue ] फ़्लो के अगले पैकेट के साथ रेगेक्स मूल्यांकन जारी रखता है।
-j [ --reject-flows ] उन फ़्लो को अस्वीकार करता है जो रेगेक्स से मेल खाते हैं।
-w [ --evidence ] फॉरेंसिक विश्लेषण के लिए मिलान रेगेक्स के साथ एक pcap फ़ाइल उत्पन्न करता है।
आवृत्तियाँ वैकल्पिक तर्क:
-F [ --enable-frequencies ] आवृत्ति इंजन सक्षम करता है।
-g [ --group-by ] arg (=dst-port) आवृत्तियों को src-ip, dst-ip, src-port और dst-port द्वारा समूहित करता है।
-f [ --flow-type ] arg (=tcp) tcp या udp फ़्लो का उपयोग करता है।
-L [ --enable-learner ] शिक्षार्थी इंजन सक्षम करता है।
-k [ --key-learner ] arg (=80) शिक्षार्थी इंजन के लिए कुंजी सेट करता है।
-b [ --buffer-size ] arg (=64) रेगेक्स उत्पन्न करने के लिए आंतरिक बफर का आकार सेट करता है।
-Q [ --byte-quality ] arg (=80) उत्पन्न रेगेक्स के बाइट्स के लिए न्यूनतम गुणवत्ता सेट करता है।
-y [ --enable-yara ] एक yara हस्ताक्षर उत्पन्न करता है।
वैकल्पिक तर्क:
-n [ --stack ] arg (=lan) नेटवर्क स्टैक सेट करता है (lan, mobile, lan6, virtual, oflow)।
-d [ --dumpflows ] फ़्लो को stdout पर डंप करता है।
-s [ --statistics ] arg (=0) नेटवर्क स्टैक के आँकड़े दिखाता है (5 स्तर)।
-T [ --timeout ] arg (=180) फ़्लो का टाइमआउट सेट करता है।
-P [ --protocol ] arg नेटवर्क स्टैक के एक विशिष्ट प्रोटोकॉल के आँकड़े दिखाता है।
-a [ --port ] arg (=0) HTTP लिसनिंग पोर्ट सेट करता है।
-e [ --release ] कैशे जारी करता है।
-l [ --release-cache ] arg एक विशिष्ट कैशे जारी करता है।
-p [ --pstatistics ] प्रक्रिया के आँकड़े दिखाता है।
-o [ --summary ] प्रोटोकॉल सारांश आँकड़े दिखाता है (बाइट्स, पैकेट, % बाइट्स, कैश मिस, मेमोरी)।
-h [ --help ] सहायता दिखाता है।
-v [ --version ] संस्करण स्ट्रिंग दिखाता है।
AIEngine नेटवर्क टोपोलॉजी के आधार पर छह प्रकार के नेटवर्क स्टैक का समर्थन करता है।
StackLan (lan) IPv4 पर आधारित स्थानीय क्षेत्र नेटवर्क।
StackLanIPv6 (lan6) IPv6 समर्थन के साथ स्थानीय क्षेत्र नेटवर्क।
StackMobile (mobile) IPv4 के लिए नेटवर्क मोबाइल (Gn इंटरफ़ेस)।
StackVirtual (virtual) VxLan और GRE ट्रांसपेरेंट के साथ वर्चुअल/क्लाउड वातावरण के लिए स्टैक।
StackOpenFlow (oflow) ओपनफ़्लो वातावरण के लिए स्टैक।
StackMobileIPv6 (mobile6) IPv6 के लिए नेटवर्क मोबाइल (Gn इंटरफ़ेस)।
AIEngine एक python/ruby/java/lua मॉड्यूल भी है जो अन्य सिस्टमों और कार्यक्षमताओं के साथ एकीकरण के मामले में अधिक लचीला होने की अनुमति देता है। python मॉड्यूल जो मुख्य ऑब्जेक्ट प्रदान करता है वे निम्नलिखित हैं।
BitcoinInfo
Cache
CoAPInfo
DCERCPInfo
DHCPInfo
DHCPv6Info
DNSInfo
DTLSInfo
DatabaseAdaptor
DomainName
DomainNameManager
Flow
FlowManager
Frequencies
FrequencyGroup
HTTPInfo
HTTPUriSet
IMAPInfo
IPAbstractSet
IPRadixTree
IPSet
IPSetManager
LearnerEngine
MQTTInfo
NetbiosInfo
NetworkStack
StackLan
StackLanIPv6
StackMobile
StackMobileIPv6
StackOpenFlow
StackVirtual
POPInfo
PacketDispatcher
PacketFrequencies
QuicInfo
Regex
RegexManager
SIPInfo
SMBInfo
SMTPInfo
SSDPInfo
SSHInfo
SSLInfo
TCPInfo
Python में क्लास विधियों के पूर्ण विवरण के लिए
import pyaiengine
help(pyaiengine)
उपयोगी उपयोग के मामलों के लिए उदाहरण निर्देशिका देखें, और दस्तावेज़ीकरण के लिए /docs देखें
आपके सिस्टम में न्यूनतम रूप से pcre-devel, libpcap-devel और boost-devel स्थापित होना चाहिए।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ make
सिस्टम आपकी आवश्यकताओं के अनुसार निम्नलिखित सक्षम/अक्षम कार्यक्षमताएँ प्रदान करता है।
ये विकल्प केवल कंपाइलेशन समय पर कॉन्फ़िगर स्क्रिप्ट में सक्षम/अक्षम किए जा सकते हैं।
Python लाइब्रेरी को संकलित करने के लिए boost-python3-devel या boost-python-devel और python-devel की भी अनुशंसा की जाती है।
लाइब्रेरी को संकलित करने का पहला विकल्प O3 कंपाइल ऑप्टिमाइज़ेशन का उपयोग करना है, यह एक छोटी लाइब्रेरी उत्पन्न करेगा
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make python
$ python pyai_test.py
दूसरा विकल्प setup.py का उपयोग करके मानक पायथोनिक तरीके से लाइब्रेरी को संकलित करेगा, यह पिछले वाले की तुलना में एक बड़ा लाइब्रेरी आकार उत्पन्न करेगा।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ python setup.py build_ext -i
$ python pyai_test.py
$ python3.6 setup.py build_ext -i
$ python3.6 pyai_test.py
Python लिब में इंजन द्वारा प्रदान की गई सभी कार्यक्षमताएँ शामिल हैं।
Ruby पर संकलित करने के लिए swig और ruby-devel की आवश्यकता है।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make ruby
$ ruby ruai_tests.rb
Ruby लिब इंजन की सभी कार्यक्षमताएँ प्रदान नहीं करता है।
Java पर संकलित करने के लिए java डेवलपैकेज की आवश्यकता है।
$ 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
Java लिब इंजन की कुछ कार्यक्षमताएँ प्रदान करता है, कुछ अपवादों के साथ।
Lua swig पर संकलित करने के लिए lua-devel पैकेज की आवश्यकता है।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make lua
$ lua luai_tests.lua
Lua लिब इंजन की अधिकांश कार्यक्षमताएँ प्रदान करता है।
Go swig पर संकलित करने के लिए।
$ git clone https://bitbucket.com/camp0/aiengine
$ ./autogen.sh
$ ./configure
$ cd src
$ make go
$ ./goai_test
Go लिब में भाषा की प्रकृति के कारण कुछ कार्यात्मक प्रतिबंध हैं।
आप सबसे सामान्य NIDS के साथ विभिन्न उपयोग मामलों का पूर्ण विवरण http://aiengine.readthedocs.io/en/latest/aiengine.html#performance-with-other-engines पर पा सकते हैं
AIEngine c++11/14/17 मानक के साथ विकसित किया गया है और GPLv2 की शर्तों के अंतर्गत है।
AIEngine स्रोत की जाँच करें
$ git clone https://bitbucket.com/camp0/aiengine
यदि आप किसी विशिष्ट कार्यक्षमता में रुचि रखते हैं, परियोजना को बढ़ावा देना चाहते हैं या बस कुछ मदद की आवश्यकता है, तो मुझे ईमेल करें। योगदान हमेशा सहायक होते हैं।
AIEngine परीक्षण-चालित विकास का उपयोग करके विकसित किया गया है। इसलिए उसी जीवन चक्र को बनाए रखने के लिए, नई कार्यक्षमता में नई कार्यक्षमता के निर्मित निर्देशिका पर यूनिट परीक्षण होना चाहिए और सभी सिस्टम के साथ एकीकृत करने के लिए, बाद में /src निर्देशिका पर मुख्य tests.cc फ़ाइल के साथ एकीकृत करें।
यदि आपके पास एक उपयोग मामला है जो प्रदान किए गए उदाहरणों के साथ कवर नहीं किया गया है, तो कृपया मुझसे संपर्क करने में संकोच न करें।
यदि आपको परियोजना पसंद है, तो आप मुझे बिटकॉइन के साथ बीयर खरीद सकते हैं :)
3DG7FhkFUuKq7VhfXdP9QpsUzfWPXu49ng