moved shutdown, startup, and prompt to lib.core.common due to how much they are used

This commit is contained in:
ekultek 2017-11-20 14:27:08 -06:00
parent 9eca1950cb
commit 52af437fe4
14 changed files with 134 additions and 141 deletions

View file

@ -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])

View file

@ -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
a12d5ffa2d45347c86e5fab154a89943 ./var/auto_issue/github.py
40228c36886e5908c4c78c945759bd50 ./var/blackwidow/__init__.py

View file

@ -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"
)

View file

@ -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"

View file

@ -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):

View file

@ -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"):

View file

@ -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:

View file

@ -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"
)

View file

@ -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
)
)

View file

@ -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 <major.minor.commit.patch ID>
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

View file

@ -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(

View file

@ -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"):
"""

View file

@ -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,

20
zeus.py
View file

@ -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):
"""