From 52af437fe4a746013e79bb5dfe4954b524e6f75b Mon Sep 17 00:00:00 2001 From: ekultek Date: Mon, 20 Nov 2017 14:27:08 -0600 Subject: [PATCH] moved shutdown, startup, and prompt to lib.core.common due to how much they are used --- bin/unzip_gecko.py | 7 +- etc/checksum/md5sum.md5 | 71 ++++++++++---------- lib/attacks/admin_panel_finder/__init__.py | 4 +- lib/attacks/clickjacking_scan/__init__.py | 2 +- lib/attacks/gist_lookup/__init__.py | 2 +- lib/attacks/nmap_scan/__init__.py | 3 +- lib/attacks/sqlmap_scan/__init__.py | 5 +- lib/attacks/xss_scan/__init__.py | 6 +- lib/core/common.py | 60 ++++++++++++++++- lib/core/settings.py | 78 +++------------------- var/auto_issue/github.py | 7 +- var/blackwidow/__init__.py | 4 +- var/google_search/search.py | 6 +- zeus.py | 20 ++---- 14 files changed, 134 insertions(+), 141 deletions(-) diff --git a/bin/unzip_gecko.py b/bin/unzip_gecko.py index 0f27a45..8c148f0 100644 --- a/bin/unzip_gecko.py +++ b/bin/unzip_gecko.py @@ -9,6 +9,7 @@ except ImportError: import whichcraft +import lib.core.common import lib.core.settings @@ -49,7 +50,7 @@ def find_tools(to_search=("sqlmap", "nmap"), directory="{}/bin/paths", filename= path_schema[item] = None for key, value in path_schema.iteritems(): if value is None: - provided_path = lib.core.settings.prompt( + provided_path = lib.core.common.prompt( "what is the full path to {} on your system".format(key) ) path_schema[key] = provided_path @@ -131,7 +132,7 @@ def untar_gecko(filename="{}/bin/drivers/geckodriver-v0.{}.0-linux{}.tar.gz", ve file_arch = arch_info[platform.architecture()[0]] ff_version = lib.core.settings.get_browser_version() if isinstance(ff_version, str) or ff_version is None: - ff_version = lib.core.settings.prompt( + ff_version = lib.core.common.prompt( "enter your firefox browser version (if you don't know it run firefox --version" ) gecko_version = config_gecko_version(ff_version) @@ -139,7 +140,7 @@ def untar_gecko(filename="{}/bin/drivers/geckodriver-v0.{}.0-linux{}.tar.gz", ve lib.core.settings.logger.fatal(lib.core.settings.set_color( "your current firefox version is not supported by Zeus...", level=50 )) - lib.core.settings.shutdown() + lib.core.common.shutdown() gecko_full_filename = filename.format(os.getcwd(), gecko_version, file_arch) with open(lib.core.settings.GECKO_VERSION_INFO_PATH, "a+") as log: log.write(gecko_full_filename.split("/")[-1]) diff --git a/etc/checksum/md5sum.md5 b/etc/checksum/md5sum.md5 index b92fd4d..0736abd 100644 --- a/etc/checksum/md5sum.md5 +++ b/etc/checksum/md5sum.md5 @@ -1,41 +1,25 @@ -dab1f0143e2755b02401dece68a161ed ./zeus.py +6287156b539d0cd67fdd050715f6ecd3 ./zeus.py 4b32db388e8acda35570c734d27c950c ./etc/scripts/launch_sqlmap.sh 6ad5f22ec4a6f8324bfb1b01ab6d51ec ./etc/scripts/cleanup.sh +74d7bee13890a9dd279bb857591647ce ./etc/scripts/reinstall.sh 155c9482f690f1482f324a7ffd8b8098 ./etc/scripts/fix_pie.sh 0e435c641bc636ac0b3d54e032d9cf6a ./etc/scripts/install_nmap.sh -74d7bee13890a9dd279bb857591647ce ./etc/scripts/reinstall.sh 66b11aa388ea909de7b212341259a318 ./etc/auths/git_auth 8f686b05c5c5dfc02f0fcaa7ebc8677c ./etc/auths/whois_auth d3ad89703575a712a0aeead2b176d8c5 ./etc/html/clickjacking_test_page.html -b795ccb193f307a8e9a4a888c018241a ./etc/xml/headers.xml 642a77905d8bb4e5533e0e9c2137c0fa ./etc/text_files/agents.txt 82cc68f46539d0255f7ce14cd86cd49b ./etc/text_files/link_ext.txt b4ac1dab7fee43d1295b0d940e11fac1 ./etc/text_files/dorks.txt dc7bfc3d7b9b23340ee37806316bd770 ./etc/text_files/xss_payloads.txt -cd9c70aa862df26e40c42cbe5909a4aa ./etc/checksum/md5sum.md5 -15b70d0142602288c8d635a6a0ceb665 ./bin/version_info +b795ccb193f307a8e9a4a888c018241a ./etc/xml/headers.xml d41d8cd98f00b204e9800998ecf8427e ./bin/__init__.py -b655fdce8c4d83daa2130f06f2930fcb ./bin/unzip_gecko.py +911451e598154c144639179452879301 ./bin/unzip_gecko.py dc1eb4ebe0f372af48b5a9c107ebc68d ./bin/drivers/geckodriver-v0.18.0-linux32.tar.gz be18faeea6e7db9db6990d8667e2298f ./bin/drivers/geckodriver-v0.17.0-linux64.tar.gz 79b1a158f96d29942a111c0905f1c807 ./bin/drivers/geckodriver-v0.17.0-linux32.tar.gz ca6935a72fd0527d15a78a17a35e56e8 ./bin/drivers/geckodriver-v0.19.0-linux64.tar.gz 4ccb56fb3700005c9f9188f84152f21a ./bin/drivers/geckodriver-v0.18.0-linux64.tar.gz 07cd383c8aef8ea5ef194a506141afd6 ./bin/drivers/geckodriver-v0.19.0-linux32.tar.gz -6ea65a0160c21e144e92334acc2e3667 ./lib/firewall/anquanbao.py -627fd88a80a9ee049e08b113a232f065 ./lib/firewall/cloudflare.py -54815706261c32b57fbbdc99244b5cdd ./lib/firewall/modsecurity.py -6b370050b40d8c1d2221424f756c7842 ./lib/firewall/paloalto.py -24342e7de0c51595d593cef74d80d3a0 ./lib/firewall/sucuri.py -1f303641d59686d544f2986ff74c6b31 ./lib/firewall/webseal.py -ad238be8225c2791d82d4c7582afe820 ./lib/firewall/generic.py -6ccf3a1df5aa6429cd3365b7b8ded8f4 ./lib/firewall/powerful.py -c3f01fc8ff7dfe7759f63bf16b00f127 ./lib/firewall/wordfence.py -2bfc3884ae96cc2443ebf94359b380c0 ./lib/firewall/cloudfront.py -fde5445df5d77d245656adea96673cfa ./lib/firewall/squid.py -9c3ec0cce44c4246b97b431e37e3dcc2 ./lib/firewall/aws.py -e4eef006dd909c222b1b9f48826c3ef5 ./lib/firewall/pk.py -6bbe2f6f6a2a1ddf0e416e94ec1f0763 ./lib/firewall/siteguard.py 785c28da8b681a7e23964f99118b5aab ./lib/tamper_scripts/obfuscateordinal_encode.py 10bf1bc4ef0287d31633148fab557e8a ./lib/tamper_scripts/uppercase_encode.py 5b68de0ce3a783b870921b09b5222146 ./lib/tamper_scripts/hex_encode.py @@ -43,34 +27,47 @@ e4eef006dd909c222b1b9f48826c3ef5 ./lib/firewall/pk.py d41d8cd98f00b204e9800998ecf8427e ./lib/tamper_scripts/__init__.py 7b636a332b2e99547ec9565d8e094308 ./lib/tamper_scripts/unicode_encode.py 07a792bccd13f64873a27aee4aaa8ea6 ./lib/tamper_scripts/space2comment_encode.py -682e1b74cb6de3982c99ca034695928a ./lib/tamper_scripts/enclosebrackets_encode.pyc 1053a0c89e514d2c94bc822d34715896 ./lib/tamper_scripts/randomcase_encode.py 349c30cbab4308bd94829d92b4e34f9d ./lib/tamper_scripts/lowercase_encode.py 6e1d6276a295f6c5d41b6f6f0e1316b0 ./lib/tamper_scripts/enclosebrackets_encode.py -a0fedc86cfb4a370e6c1a606010812ed ./lib/tamper_scripts/space2null_encode.pyc -6d908b077d5809d853999547cadddcd2 ./lib/tamper_scripts/__init__.pyc 694231b4c2f99406481c34ced85ddfe1 ./lib/tamper_scripts/base64_encode.py 6ac38bec8c32eab57efa01f7a06dff14 ./lib/tamper_scripts/space2null_encode.py 3b8c95a6a3b7cecce5118f2fb1ccc6b8 ./lib/tamper_scripts/appendnull_encode.py -0357667b47ce0055ed345f9d43e7c74f ./lib/attacks/clickjacking_scan/__init__.py +d41d8cd98f00b204e9800998ecf8427e ./lib/__init__.py +2bfc3884ae96cc2443ebf94359b380c0 ./lib/firewall/cloudfront.py +d41d8cd98f00b204e9800998ecf8427e ./lib/firewall/__init__.py +24342e7de0c51595d593cef74d80d3a0 ./lib/firewall/sucuri.py +9c3ec0cce44c4246b97b431e37e3dcc2 ./lib/firewall/aws.py +1f303641d59686d544f2986ff74c6b31 ./lib/firewall/webseal.py +e4eef006dd909c222b1b9f48826c3ef5 ./lib/firewall/pk.py +6b370050b40d8c1d2221424f756c7842 ./lib/firewall/paloalto.py +6bbe2f6f6a2a1ddf0e416e94ec1f0763 ./lib/firewall/siteguard.py +627fd88a80a9ee049e08b113a232f065 ./lib/firewall/cloudflare.py +c3f01fc8ff7dfe7759f63bf16b00f127 ./lib/firewall/wordfence.py +6ccf3a1df5aa6429cd3365b7b8ded8f4 ./lib/firewall/powerful.py +54815706261c32b57fbbdc99244b5cdd ./lib/firewall/modsecurity.py +fde5445df5d77d245656adea96673cfa ./lib/firewall/squid.py +6ea65a0160c21e144e92334acc2e3667 ./lib/firewall/anquanbao.py +ad238be8225c2791d82d4c7582afe820 ./lib/firewall/generic.py +4f359db78f12132482f78a7426ea82df ./lib/attacks/gist_lookup/__init__.py +566dc051ce3ac8b877a530fa53f47c66 ./lib/attacks/clickjacking_scan/__init__.py d41d8cd98f00b204e9800998ecf8427e ./lib/attacks/__init__.py -7272a7fd0b0c2e9192bc4adb6154d2f0 ./lib/attacks/sqlmap_scan/__init__.py -aa7268a8f085734a6c577c86440f7a1b ./lib/attacks/sqlmap_scan/sqlmap_opts.py +4fd64046da32edb2cefa6ba5f3ff5848 ./lib/attacks/sqlmap_scan/__init__.py +5e5bb575014ebe613db6bf671d008cf8 ./lib/attacks/sqlmap_scan/sqlmap_opts.py d41d8cd98f00b204e9800998ecf8427e ./lib/attacks/whois_lookup/__init__.py 8bce49d65071969243e98f01fc77dc35 ./lib/attacks/whois_lookup/whois.py -14503e7af9f6346f81788a07a94684e0 ./lib/attacks/admin_panel_finder/__init__.py -edb971a085a2c3be9277def5a0f14d49 ./lib/attacks/xss_scan/__init__.py -27358f26bda30d7356143c3ea1fa99c5 ./lib/attacks/nmap_scan/__init__.py -21faf4679cdeaa731029a48f8963d6e7 ./lib/attacks/nmap_scan/nmap_opts.py -5abc7ca54977e9e0447305cb4bd48d9b ./lib/attacks/gist_lookup/__init__.py +3924cd2219a971c81951c9dcfe0dc80e ./lib/attacks/admin_panel_finder/__init__.py +a27929dffdf979f59675ad21ff5f77a6 ./lib/attacks/xss_scan/__init__.py +fa40d9681c7c3024bd50ad12ef231d6d ./lib/attacks/nmap_scan/__init__.py +216999fa0e84866d5c1d96d5676034e4 ./lib/attacks/nmap_scan/nmap_opts.py +1477efbe270c386057b0170faee4335f ./lib/header_check/__init__.py +10f45e11e9702c173ab019b3b0f004b5 ./lib/core/common.py 1faa2b5dfad6eb538bbfe42942d2a9da ./lib/core/errors.py d41d8cd98f00b204e9800998ecf8427e ./lib/core/__init__.py -60a6b8319c942c4c663e9144f092ddc5 ./lib/core/settings.py -aa541bfde844b009227f664749a39ea8 ./lib/core/common.py -1477efbe270c386057b0170faee4335f ./lib/header_check/__init__.py +48a84b7da7d66b77f27e2ebc5270a30a ./lib/core/settings.py d41d8cd98f00b204e9800998ecf8427e ./var/google_search/__init__.py -647e92795bc53c13ed4bf6022525adcd ./var/google_search/search.py +ebe79f9647d78d519a0307aaaab1e425 ./var/google_search/search.py d41d8cd98f00b204e9800998ecf8427e ./var/__init__.py d41d8cd98f00b204e9800998ecf8427e ./var/auto_issue/__init__.py -4c7c008b28eaac5afb57a4bea46f1b19 ./var/auto_issue/github.py -5e262d79a1e54e4aeb4f500536be59a5 ./var/blackwidow/__init__.py \ No newline at end of file +a12d5ffa2d45347c86e5fab154a89943 ./var/auto_issue/github.py +40228c36886e5908c4c78c945759bd50 ./var/blackwidow/__init__.py \ No newline at end of file diff --git a/lib/attacks/admin_panel_finder/__init__.py b/lib/attacks/admin_panel_finder/__init__.py index dd80921..5cdd389 100644 --- a/lib/attacks/admin_panel_finder/__init__.py +++ b/lib/attacks/admin_panel_finder/__init__.py @@ -55,11 +55,11 @@ def check_for_externals(url, data_sep="-" * 30, **kwargs): else: question_msg = "nothing interesting found in robots.txt would you like to display the entire page" if not batch: - to_display = lib.core.settings.prompt( + to_display = lib.core.common.prompt( question_msg, opts="yN" ) else: - to_display = lib.core.settings.prompt( + to_display = lib.core.common.prompt( question_msg, opts="yN", default="n" ) diff --git a/lib/attacks/clickjacking_scan/__init__.py b/lib/attacks/clickjacking_scan/__init__.py index c98f1ba..72d780c 100644 --- a/lib/attacks/clickjacking_scan/__init__.py +++ b/lib/attacks/clickjacking_scan/__init__.py @@ -60,7 +60,7 @@ def clickjacking_main(url, **kwargs): if not batch: if lib.core.settings.URL_QUERY_REGEX.match(url): - question = lib.core.settings.prompt( + question = lib.core.common.prompt( "it is recommended to use a URL without a GET(query) parameter, " "heuristic testing has detected that the URL provided contains a " "GET(query) parameter in it, would you like to continue", opts="yN" diff --git a/lib/attacks/gist_lookup/__init__.py b/lib/attacks/gist_lookup/__init__.py index 6b50a58..af745c0 100644 --- a/lib/attacks/gist_lookup/__init__.py +++ b/lib/attacks/gist_lookup/__init__.py @@ -22,7 +22,7 @@ def __check_remaining_rate_limit(): "if you need to do more requests it is recommended to run behind a proxy with a different " "user-agent (IE --proxy socks5://127.0.0.1:9050 --random-agent)...", level=40 )) - lib.core.settings.shutdown() + lib.core.common.shutdown() def get_raw_data(page_set, proxy=None, agent=None, verbose=False): diff --git a/lib/attacks/nmap_scan/__init__.py b/lib/attacks/nmap_scan/__init__.py index ab3a924..55b1e15 100644 --- a/lib/attacks/nmap_scan/__init__.py +++ b/lib/attacks/nmap_scan/__init__.py @@ -6,6 +6,7 @@ import subprocess import nmap +import lib.core.common import lib.core.settings from var.auto_issue.github import request_issue_creation @@ -137,7 +138,7 @@ def perform_port_scan(url, scanner=NmapHook, verbose=False, opts=None, **kwargs) lib.core.settings.logger.fatal(lib.core.settings.set_color( "nmap was not found on your system...", level=50 )) - question = lib.core.settings.prompt( + question = lib.core.common.prompt( "would you like to automatically install it", opts="yN" ) if question.lower().startswith("y"): diff --git a/lib/attacks/sqlmap_scan/__init__.py b/lib/attacks/sqlmap_scan/__init__.py index 4d8ced3..c85194c 100644 --- a/lib/attacks/sqlmap_scan/__init__.py +++ b/lib/attacks/sqlmap_scan/__init__.py @@ -10,6 +10,7 @@ except ImportError: import requests +import lib.core.common import lib.core.settings import lib.core.errors import lib.attacks @@ -169,12 +170,12 @@ def sqlmap_scan_main(url, port=None, verbose=None, opts=None, auto_start=False): lib.core.settings.logger.error(lib.core.settings.set_color( "there was a problem starting sqlmap API...", level=40 )) - lib.core.settings.prompt( + lib.core.common.prompt( "manually start the API and press enter when ready..." ) else: if not is_started: - lib.core.settings.prompt( + lib.core.common.prompt( "sqlmap API is not started, start it and press enter to continue..." ) try: diff --git a/lib/attacks/xss_scan/__init__.py b/lib/attacks/xss_scan/__init__.py index aff8ce7..366405a 100644 --- a/lib/attacks/xss_scan/__init__.py +++ b/lib/attacks/xss_scan/__init__.py @@ -77,7 +77,7 @@ def create_urls(url, payload_list, tamper=None, verbose=False): " | ".join(list_tamper_scripts()), level=40 ) )) - lib.core.settings.shutdown() + lib.core.common.shutdown() loaded_url = "{}{}\n".format(url.strip(), payload.strip()) tmp.write(loaded_url) return tf_name @@ -210,11 +210,11 @@ def main_xss(start_url, proxy=None, agent=None, **kwargs): )) question_msg = "would you like to keep the URL's saved for further testing" if not batch: - save = lib.core.settings.prompt( + save = lib.core.common.prompt( question_msg, opts="yN" ) else: - save = lib.core.settings.prompt( + save = lib.core.common.prompt( question_msg, opts="yN", default="n" ) diff --git a/lib/core/common.py b/lib/core/common.py index c88c5d7..479ab59 100644 --- a/lib/core/common.py +++ b/lib/core/common.py @@ -1,6 +1,7 @@ import os import re import json +import time from lxml import etree @@ -30,7 +31,7 @@ class HTTP_HEADER: PROXY_CONNECTION = "Proxy-Connection" RANGE = "Range" REFERER = "Referer" - REFRESH = "Refresh" + REFRESH = "Refresh" # Reference: http://stackoverflow.com/a/283794 SERVER = "Server" SET_COOKIE = "Set-Cookie" TRANSFER_ENCODING = "Transfer-Encoding" @@ -94,3 +95,60 @@ def write_to_log_file(data_to_write, path, filename, blacklist=False): "successfully wrote found items to '{}'...".format(full_file_path) )) return full_file_path + + +def start_up(): + """ + start the program and display the time it was started + """ + print( + "\n\n[*] starting up at {}..\n\n".format(time.strftime("%H:%M:%S")) + ) + + +def shutdown(): + """ + shut down the program and the time it stopped + """ + print( + "\n\n[*] shutting down at {}..\n\n".format(time.strftime("%H:%M:%S")) + ) + exit(0) + + +def prompt(question, opts=None, default=None): + """ + ask a question + """ + if opts is not None and default is None: + options = '/'.join(opts) + return raw_input( + "[{} {}] {}[{}]: ".format( + time.strftime("%H:%M:%S"), + "PROMPT", question, options + ) + ) + elif default is not None: + if opts is not None: + options = "/".join(opts) + print( + "[{} {}] {}[{}] {}".format( + time.strftime("%H:%M:%S"), "PROMPT", + question, options, default + ) + ) + return default + else: + print( + "[{} {}] {} {}".format( + time.strftime("%H:%M:%S"), "PROMPT", + question, default + ) + ) + return default + else: + return raw_input( + "[{} {}] {} ".format( + time.strftime("%H:%M:%S"), "PROMPT", question + ) + ) \ No newline at end of file diff --git a/lib/core/settings.py b/lib/core/settings.py index 165837a..1b3a38c 100644 --- a/lib/core/settings.py +++ b/lib/core/settings.py @@ -26,6 +26,7 @@ import whichcraft import bin.unzip_gecko import lib.core.errors +import lib.core.common from lib.attacks.admin_panel_finder import main from lib.attacks.xss_scan import main_xss @@ -55,7 +56,7 @@ CLONE = "https://github.com/ekultek/zeus-scanner.git" ISSUE_LINK = "https://github.com/ekultek/zeus-scanner/issues" # current version -VERSION = "1.2.24".format(PATCH_ID) +VERSION = "1.2.25".format(PATCH_ID) # colors to output depending on the version VERSION_TYPE_COLORS = {"dev": 33, "stable": 92, "other": 30} @@ -426,25 +427,6 @@ def proxy_string_to_dict(proxy_string): return retval -def start_up(): - """ - start the program and display the time it was started - """ - print( - "\n\n[*] starting up at {}..\n\n".format(time.strftime("%H:%M:%S")) - ) - - -def shutdown(): - """ - shut down the program and the time it stopped - """ - print( - "\n\n[*] shutting down at {}..\n\n".format(time.strftime("%H:%M:%S")) - ) - exit(0) - - def setup(verbose=False): """ setup the application if it has not been setup yet @@ -506,44 +488,6 @@ def grab_random_agent(agent_path="{}/etc/text_files/agents.txt", verbose=False): return retval.strip() -def prompt(question, opts=None, default=None): - """ - ask a question - """ - if opts is not None and default is None: - options = '/'.join(opts) - return raw_input( - "[{} {}] {}[{}]: ".format( - time.strftime("%H:%M:%S"), - "PROMPT", question, options - ) - ) - elif default is not None: - if opts is not None: - options = "/".join(opts) - print( - "[{} {}] {}[{}] {}".format( - time.strftime("%H:%M:%S"), "PROMPT", - question, options, default - ) - ) - return default - else: - print( - "[{} {}] {} {}".format( - time.strftime("%H:%M:%S"), "PROMPT", - question, default - ) - ) - return default - else: - return raw_input( - "[{} {}] {} ".format( - time.strftime("%H:%M:%S"), "PROMPT", question - ) - ) - - def find_application(application, opt="path"): """ find the given application on the users system by parsing the given configuration file @@ -904,7 +848,7 @@ def deprecation(target_version, method, connect=True, *args, **kwargs): ) ) ) - shutdown() + lib.core.common.shutdown() def check_thread_num(number, batch=False, default=5): @@ -919,7 +863,7 @@ def check_thread_num(number, batch=False, default=5): question_msg = "would you like to continue anyways" default_msg = "defaulting to 5 threads..." if not batch: - question = prompt( + question = lib.core.common.prompt( question_msg, opts="yN" ) if question.lower().startswith("n"): @@ -928,7 +872,7 @@ def check_thread_num(number, batch=False, default=5): )) return default else: - prompt( + lib.core.common.prompt( question_msg, opts="yN", default="n" ) logger.info(set_color( @@ -988,15 +932,15 @@ def run_attacks(url, **kwargs): "you do not want to complete an entire search again " "(IE -f /home/me/zeus-scanner/log/url-log/url-log-1.log)...", level=40 )) - shutdown() + lib.core.common.shutdown() question_msg = "would you like to process found URL: '{}'".format(url) if not batch: - question = prompt( + question = lib.core.common.prompt( question_msg, opts="yN" ) else: - question = prompt( + question = lib.core.common.prompt( question_msg, opts="yN", default="y" ) @@ -1057,13 +1001,13 @@ def parse_blacklist(dork, path, batch=False): dorks = log.readlines() if any(d.strip() == dork for d in dorks): if not batch: - question = prompt( + question = lib.core.common.prompt( prompt_msg, opts="yN" ) if not question.lower().startswith("y"): - shutdown() + lib.core.common.shutdown() else: - prompt(prompt_msg, opts="yN", default="y") + lib.core.common.prompt(prompt_msg, opts="yN", default="y") return True diff --git a/var/auto_issue/github.py b/var/auto_issue/github.py index d683d2e..2405a26 100644 --- a/var/auto_issue/github.py +++ b/var/auto_issue/github.py @@ -6,6 +6,7 @@ except ImportError: import json import platform +import lib.core.common import lib.core.settings @@ -15,16 +16,16 @@ def request_issue_creation(): "it appears that your checksums did not match, therefore it is assumed " "that you have edited some of the code, issue request denied...", level=50 )) - lib.core.settings.shutdown() + lib.core.common.shutdown() - question = lib.core.settings.prompt( + question = lib.core.common.prompt( "would you like to create an anonymous issue and post it to Zeus's Github", opts="yN" ) if question.lower().startswith("n"): lib.core.settings.logger.error(lib.core.settings.set_color( "Zeus has experienced an internal error and cannot continue, shutting down...", level=40 )) - lib.core.settings.shutdown() + lib.core.common.shutdown() lib.core.settings.fix_log_file() lib.core.settings.logger.info(lib.core.settings.set_color( diff --git a/var/blackwidow/__init__.py b/var/blackwidow/__init__.py index c0819ca..26c8977 100644 --- a/var/blackwidow/__init__.py +++ b/var/blackwidow/__init__.py @@ -71,7 +71,7 @@ class Blackwidow(object): self.url, info_msg ), level=50 )) - lib.core.settings.shutdown() + lib.core.common.shutdown() else: lib.core.settings.logger.exception(lib.core.settings.set_color( "failed to connect to '{}' received error '{}'...".format( @@ -79,7 +79,7 @@ class Blackwidow(object): ), level=50 )) var.auto_issue.github.request_issue_creation() - lib.core.settings.shutdown() + lib.core.common.shutdown() def scrape_page_for_links(self, given_url, attribute="a", descriptor="href"): """ diff --git a/var/google_search/search.py b/var/google_search/search.py index 1ba4e43..8fe225f 100644 --- a/var/google_search/search.py +++ b/var/google_search/search.py @@ -29,7 +29,9 @@ from selenium.webdriver.remote.errorhandler import ( from var.auto_issue.github import request_issue_creation from lib.core.common import ( write_to_log_file, - HTTP_HEADER + HTTP_HEADER, + shutdown, + prompt ) from lib.core.settings import ( logger, @@ -38,9 +40,7 @@ from lib.core.settings import ( DEFAULT_USER_AGENT, URL_QUERY_REGEX, URL_REGEX, - shutdown, URL_LOG_PATH, - prompt, EXTRACTED_URL_LOG, URL_EXCLUDES, CLEANUP_TOOL_PATH, diff --git a/zeus.py b/zeus.py index 887ac83..b6ee0f3 100755 --- a/zeus.py +++ b/zeus.py @@ -7,10 +7,6 @@ import shlex import optparse import warnings import subprocess -try: - import http.client as http_client # Python 3 -except ImportError: - import httplib as http_client # Python 2 from var import blackwidow from var.google_search import search @@ -23,17 +19,19 @@ from lib.core.errors import ( InvalidInputProvided, InvalidProxyType ) +from lib.core.common import ( + start_up, + shutdown, + prompt +) from lib.core.settings import ( setup, BANNER, - start_up, - shutdown, logger, set_color, get_latest_log_file, CURRENT_LOG_FILE_PATH, URL_LOG_PATH, - prompt, get_random_dork, update_zeus, VERSION_STRING, @@ -153,8 +151,6 @@ if __name__ == "__main__": "These options affect how the program will run") misc.add_option("--verbose", dest="runInVerbose", action="store_true", help="Run the application in verbose mode (more output)") - misc.add_option("--show-requests", dest="showRequestInfo", action="store_true", - help="Show all HTTP requests made by the application") misc.add_option("--batch", dest="runInBatch", action="store_true", help="Skip the questions and run in default batch mode") misc.add_option("--update", dest="updateZeus", action="store_true", @@ -244,12 +240,6 @@ if __name__ == "__main__": "log file being saved to '{}'...".format(get_latest_log_file(CURRENT_LOG_FILE_PATH)) )) - if opt.showRequestInfo: - logger.debug(set_color( - "showing all HTTP requests because --show-requests flag was used...", level=10 - )) - http_client.HTTPConnection.debuglevel = 1 - def __run_attacks_main(**kwargs): """