From 3a4dcd691d42829bf2a8845243f31c56921e048f Mon Sep 17 00:00:00 2001 From: Mokaddem Date: Tue, 9 May 2017 11:13:16 +0200 Subject: [PATCH] Improved description of modules inside the scripts --- README.md | 6 +++++- bin/Attributes.py | 20 +------------------- bin/Credential.py | 11 +++++++++++ bin/CreditCards.py | 13 ++++++++++++- bin/CurveManageTopSets.py | 8 -------- bin/Cve.py | 8 +++++++- bin/DomClassifier.py | 4 ++-- bin/Keys.py | 9 ++++++++- bin/Mail.py | 10 ++++++++++ bin/Mixer.py | 26 ++++++++++---------------- bin/Phone.py | 9 ++++++++- bin/RegexForTermsFrequency.py | 2 ++ bin/Release.py | 5 +++++ bin/SQLInjectionDetection.py | 9 ++++++++- bin/SentimentAnalysis.py | 4 ++-- bin/SetForTermsFrequency.py | 2 ++ bin/Tokenize.py | 4 ++-- bin/Web.py | 9 +++++++++ bin/WebStats.py | 8 +++++++- bin/preProcessFeed.py | 9 +++++++++ doc/screenshots/sentiment.png | Bin 0 -> 52267 bytes 21 files changed, 120 insertions(+), 56 deletions(-) create mode 100644 doc/screenshots/sentiment.png diff --git a/README.md b/README.md index 372aedd3..772c9bde 100644 --- a/README.md +++ b/README.md @@ -100,7 +100,7 @@ Terms manager and occurence ![Term-Manager](./doc/screenshots/terms-manager.png?raw=true "AIL framework termManager") -## Top terms +### Top terms ![Term-Top](./doc/screenshots/terms-top.png?raw=true "AIL framework termTop") ![Term-Plot](./doc/screenshots/terms-plot.png?raw=true "AIL framework termPlot") @@ -108,6 +108,10 @@ Terms manager and occurence [AIL framework screencast](https://www.youtube.com/watch?v=1_ZrZkRKmNo) +Command line module manager +--------------------------- + +![Module-Manager](./doc/screenshots/module-manager.png?raw=true "AIL framework ModuleInformationV2.py") License ======= diff --git a/bin/Attributes.py b/bin/Attributes.py index a7f78696..66e22f39 100755 --- a/bin/Attributes.py +++ b/bin/Attributes.py @@ -5,25 +5,7 @@ The ZMQ_Sub_Attribute Module ============================ -This module is consuming the Redis-list created by the ZMQ_PubSub_Line_Q Module - -It perform a sorting on the line's length and publish/forward them to -differents channels: - -*Channel 1 if max length(line) < max -*Channel 2 if max length(line) > max - -The collected informations about the processed pastes -(number of lines and maximum length line) are stored in Redis. - -..note:: Module ZMQ_Something_Q and ZMQ_Something are closely bound, always put -the same Subscriber name in both of them. - -Requirements ------------- - -*Need running Redis instances. (LevelDB & Redis) -*Need the ZMQ_PubSub_Line_Q Module running to be able to work properly. +This module is saving Attribute of the paste into redis """ import time diff --git a/bin/Credential.py b/bin/Credential.py index 8c62f34a..ff8f8f97 100755 --- a/bin/Credential.py +++ b/bin/Credential.py @@ -1,5 +1,16 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* + +""" +The Credential Module +===================== + +This module is consuming the Redis-list created by the Categ module. + +It apply credential regexes on paste content and warn if above a threshold. + +""" + import time import sys from packages import Paste diff --git a/bin/CreditCards.py b/bin/CreditCards.py index 6c9bf9c1..79442576 100755 --- a/bin/CreditCards.py +++ b/bin/CreditCards.py @@ -1,5 +1,17 @@ #!/usr/bin/env python # -*-coding:UTF-8 -* + +""" +The CreditCards Module +====================== + +This module is consuming the Redis-list created by the Categ module. + +It apply credit card regexes on paste content and warn if above a threshold. + +""" + + import pprint import time from packages import Paste @@ -7,7 +19,6 @@ from packages import lib_refine from pubsublogger import publisher import re - from Helper import Process if __name__ == "__main__": diff --git a/bin/CurveManageTopSets.py b/bin/CurveManageTopSets.py index 562705cf..eea46a8c 100755 --- a/bin/CurveManageTopSets.py +++ b/bin/CurveManageTopSets.py @@ -5,14 +5,6 @@ This module manage top sets for terms frequency. Every 'refresh_rate' update the weekly and monthly set - -Requirements ------------- - -*Need running Redis instances. (Redis) -*Categories files of words in /files/ need to be created -*Need the ZMQ_PubSub_Tokenize_Q Module running to be able to work properly. - """ import redis diff --git a/bin/Cve.py b/bin/Cve.py index 97e5aaae..fb4b0b24 100755 --- a/bin/Cve.py +++ b/bin/Cve.py @@ -1,7 +1,13 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* """ - Template for new modules +The CVE Module +====================== + +This module is consuming the Redis-list created by the Categ module. + +It apply CVE regexes on paste content and warn if a reference to a CVE is spotted. + """ import time diff --git a/bin/DomClassifier.py b/bin/DomClassifier.py index 74522917..c205cb01 100755 --- a/bin/DomClassifier.py +++ b/bin/DomClassifier.py @@ -5,8 +5,8 @@ The DomClassifier Module ============================ -The DomClassifier modules is fetching the list of files to be -processed and index each file with a full-text indexer (Whoosh until now). +The DomClassifier modules extract and classify Internet domains/hostnames/IP addresses from +the out output of the Global module. """ import time diff --git a/bin/Keys.py b/bin/Keys.py index a286dada..d2e7ebd2 100755 --- a/bin/Keys.py +++ b/bin/Keys.py @@ -1,7 +1,14 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* + """ - Template for new modules +The Keys Module +====================== + +This module is consuming the Redis-list created by the Global module. + +It is looking for PGP encrypted messages + """ import time diff --git a/bin/Mail.py b/bin/Mail.py index 6ec938f3..99dd6948 100755 --- a/bin/Mail.py +++ b/bin/Mail.py @@ -1,6 +1,16 @@ #!/usr/bin/env python # -*-coding:UTF-8 -* +""" +The CreditCards Module +====================== + +This module is consuming the Redis-list created by the Categ module. + +It apply mail regexes on paste content and warn if above a threshold. + +""" + import redis import pprint import time diff --git a/bin/Mixer.py b/bin/Mixer.py index 266eada3..40614253 100755 --- a/bin/Mixer.py +++ b/bin/Mixer.py @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*-coding:UTF-8 -* """ -The ZMQ_Feed_Q Module -===================== +The Mixer Module +================ This module is consuming the Redis-list created by the ZMQ_Feed_Q Module. @@ -22,13 +22,7 @@ Depending on the configuration, this module will process the feed as follow: Note that the hash of the content is defined as the sha1(gzip64encoded). Every data coming from a named feed can be sent to a pre-processing module before going to the global module. -The mapping can be done via the variable feed_queue_mapping - -Requirements ------------- - -*Need running Redis instances. -*Need the ZMQ_Feed_Q Module running to be able to work properly. +The mapping can be done via the variable FEED_QUEUE_MAPPING """ import base64 @@ -44,7 +38,7 @@ from Helper import Process # CONFIG # refresh_time = 30 -feed_queue_mapping = { "feeder2": "preProcess1" } # Map a feeder name to a pre-processing module +FEED_QUEUE_MAPPING = { "feeder2": "preProcess1" } # Map a feeder name to a pre-processing module if __name__ == '__main__': publisher.port = 6380 @@ -117,8 +111,8 @@ if __name__ == '__main__': else: # New content # populate Global OR populate another set based on the feeder_name - if feeder_name in feed_queue_mapping: - p.populate_set_out(relay_message, feed_queue_mapping[feeder_name]) + if feeder_name in FEED_QUEUE_MAPPING: + p.populate_set_out(relay_message, FEED_QUEUE_MAPPING[feeder_name]) else: p.populate_set_out(relay_message, 'Mixer') @@ -139,8 +133,8 @@ if __name__ == '__main__': server.expire('HASH_'+paste_name, ttl_key) # populate Global OR populate another set based on the feeder_name - if feeder_name in feed_queue_mapping: - p.populate_set_out(relay_message, feed_queue_mapping[feeder_name]) + if feeder_name in FEED_QUEUE_MAPPING: + p.populate_set_out(relay_message, FEED_QUEUE_MAPPING[feeder_name]) else: p.populate_set_out(relay_message, 'Mixer') @@ -153,8 +147,8 @@ if __name__ == '__main__': server.expire(paste_name, ttl_key) # populate Global OR populate another set based on the feeder_name - if feeder_name in feed_queue_mapping: - p.populate_set_out(relay_message, feed_queue_mapping[feeder_name]) + if feeder_name in FEED_QUEUE_MAPPING: + p.populate_set_out(relay_message, FEED_QUEUE_MAPPING[feeder_name]) else: p.populate_set_out(relay_message, 'Mixer') diff --git a/bin/Phone.py b/bin/Phone.py index 6ad4b1b6..61000f98 100755 --- a/bin/Phone.py +++ b/bin/Phone.py @@ -1,7 +1,14 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* + """ - module for finding phone numbers +The Phone Module +================ + +This module is consuming the Redis-list created by the Categ module. + +It apply phone number regexes on paste content and warn if above a threshold. + """ import time diff --git a/bin/RegexForTermsFrequency.py b/bin/RegexForTermsFrequency.py index 023710c4..2efdfee5 100755 --- a/bin/RegexForTermsFrequency.py +++ b/bin/RegexForTermsFrequency.py @@ -2,6 +2,8 @@ # -*-coding:UTF-8 -* """ This Module is used for term frequency. +It processes every paste coming from the global module and test the regexs +supplied in the term webpage. """ import redis diff --git a/bin/Release.py b/bin/Release.py index ce30ea3f..98e60a96 100755 --- a/bin/Release.py +++ b/bin/Release.py @@ -6,6 +6,11 @@ from pubsublogger import publisher from Helper import Process import re +''' +This module takes its input from the global module. +It applies some regex and publish matched content +''' + if __name__ == "__main__": publisher.port = 6380 publisher.channel = "Script" diff --git a/bin/SQLInjectionDetection.py b/bin/SQLInjectionDetection.py index 1901d4b6..d2948f1b 100755 --- a/bin/SQLInjectionDetection.py +++ b/bin/SQLInjectionDetection.py @@ -1,7 +1,14 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* + """ - Sql Injection module +The SQLInjectionDetection Module +================================ + +This module is consuming the Redis-list created by the Web module. + +It test different possibility to makes some sqlInjection. + """ import time diff --git a/bin/SentimentAnalysis.py b/bin/SentimentAnalysis.py index 8cd71305..00b15abb 100755 --- a/bin/SentimentAnalysis.py +++ b/bin/SentimentAnalysis.py @@ -4,8 +4,8 @@ Sentiment analyser module. It takes its inputs from 'global'. - The content analysed comes from the pastes with length of the line - above a defined threshold removed (get_p_content_with_removed_lines). + The content is analysed if the length of the line is + above a defined threshold (get_p_content_with_removed_lines). This is done because NLTK sentences tokemnizer (sent_tokenize) seems to crash for long lines (function _slices_from_text line#1276). diff --git a/bin/SetForTermsFrequency.py b/bin/SetForTermsFrequency.py index b3100073..c4e480ff 100755 --- a/bin/SetForTermsFrequency.py +++ b/bin/SetForTermsFrequency.py @@ -2,6 +2,8 @@ # -*-coding:UTF-8 -* """ This Module is used for term frequency. +It processes every paste coming from the global module and test the sets +supplied in the term webpage. """ import redis diff --git a/bin/Tokenize.py b/bin/Tokenize.py index 5e5c9b17..377cba5a 100755 --- a/bin/Tokenize.py +++ b/bin/Tokenize.py @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*-coding:UTF-8 -* """ -The ZMQ_PubSub_Lines Module -============================ +The Tokenize Module +=================== This module is consuming the Redis-list created by the ZMQ_PubSub_Tokenize_Q Module. diff --git a/bin/Web.py b/bin/Web.py index 0fae546d..dc2bf2fd 100755 --- a/bin/Web.py +++ b/bin/Web.py @@ -1,5 +1,14 @@ #!/usr/bin/env python # -*-coding:UTF-8 -* + +""" +The Web Module +============================ + +This module tries to parse URLs and warns if some defined contry code are present. + +""" + import redis import pprint import time diff --git a/bin/WebStats.py b/bin/WebStats.py index 4cc05b48..cbb52e7a 100755 --- a/bin/WebStats.py +++ b/bin/WebStats.py @@ -1,7 +1,13 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* + """ - Template for new modules +The WebStats Module +====================== + +This module makes stats on URL recolted from the web module. +It consider the TLD, Domain and protocol. + """ import time diff --git a/bin/preProcessFeed.py b/bin/preProcessFeed.py index fe542647..d9ef419d 100755 --- a/bin/preProcessFeed.py +++ b/bin/preProcessFeed.py @@ -1,6 +1,15 @@ #!/usr/bin/env python2 # -*-coding:UTF-8 -* +''' +The preProcess Module +===================== + +This module is just an example of how we can pre-process a feed coming from the Mixer +module before seding it to the Global module. + +''' + import time from pubsublogger import publisher diff --git a/doc/screenshots/sentiment.png b/doc/screenshots/sentiment.png new file mode 100644 index 0000000000000000000000000000000000000000..d7f1dbec8c1a08e4abc6f5c758722318eedb8447 GIT binary patch literal 52267 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

1%6isVfP? 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 literal 0 HcmV?d00001