mirror of
https://github.com/Ekultek/Zeus-Scanner.git
synced 2026-03-11 08:55:51 +00:00
moved shutdown, startup, and prompt to lib.core.common due to how much they are used
This commit is contained in:
parent
9eca1950cb
commit
52af437fe4
14 changed files with 134 additions and 141 deletions
|
|
@ -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])
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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"):
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
)
|
||||
)
|
||||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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"):
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -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
20
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):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Reference in a new issue