From 7408e131b7ec974fe0bc7367eecdd7d3b756c145 Mon Sep 17 00:00:00 2001 From: Tib3rius <48113936+Tib3rius@users.noreply.github.com> Date: Sun, 12 Sep 2021 13:05:27 -0400 Subject: [PATCH] Revert "Reformatted code to be pip compatible." This reverts commit 8c44455869756e422acea78aabb0ec3d914c138b. --- autorecon/main.py => autorecon.py | 27 +++------- autorecon/{autorecon => }/__init__.py | 0 autorecon/{autorecon => }/config.py | 9 ++-- autorecon/{autorecon => }/io.py | 0 autorecon/{autorecon => }/plugins.py | 0 autorecon/{autorecon => }/targets.py | 0 autorecon/config.toml => config.toml | 0 autorecon/global.toml => global.toml | 0 {autorecon/plugins => plugins}/__init__.py | 0 {autorecon/plugins => plugins}/databases.py | 0 .../plugins => plugins}/default-port-scan.py | 0 {autorecon/plugins => plugins}/dns.py | 0 {autorecon/plugins => plugins}/ftp.py | 0 .../plugins => plugins}/guess-port-scan.py | 0 {autorecon/plugins => plugins}/http_server.py | 0 {autorecon/plugins => plugins}/kerberos.py | 0 {autorecon/plugins => plugins}/ldap.py | 0 {autorecon/plugins => plugins}/misc.py | 0 {autorecon/plugins => plugins}/nfs.py | 0 {autorecon/plugins => plugins}/rdp.py | 0 {autorecon/plugins => plugins}/redis.py | 0 {autorecon/plugins => plugins}/reporting.py | 0 {autorecon/plugins => plugins}/rpc.py | 0 {autorecon/plugins => plugins}/rsync.py | 0 {autorecon/plugins => plugins}/sip.py | 0 {autorecon/plugins => plugins}/smb.py | 0 {autorecon/plugins => plugins}/smtp.py | 0 {autorecon/plugins => plugins}/snmp.py | 0 {autorecon/plugins => plugins}/ssh.py | 0 {autorecon/plugins => plugins}/sslscan.py | 0 poetry.lock | 54 ------------------- pyproject.toml | 26 --------- 32 files changed, 10 insertions(+), 106 deletions(-) rename autorecon/main.py => autorecon.py (98%) rename autorecon/{autorecon => }/__init__.py (100%) rename autorecon/{autorecon => }/config.py (86%) rename autorecon/{autorecon => }/io.py (100%) rename autorecon/{autorecon => }/plugins.py (100%) rename autorecon/{autorecon => }/targets.py (100%) rename autorecon/config.toml => config.toml (100%) rename autorecon/global.toml => global.toml (100%) rename {autorecon/plugins => plugins}/__init__.py (100%) rename {autorecon/plugins => plugins}/databases.py (100%) rename {autorecon/plugins => plugins}/default-port-scan.py (100%) rename {autorecon/plugins => plugins}/dns.py (100%) rename {autorecon/plugins => plugins}/ftp.py (100%) rename {autorecon/plugins => plugins}/guess-port-scan.py (100%) rename {autorecon/plugins => plugins}/http_server.py (100%) rename {autorecon/plugins => plugins}/kerberos.py (100%) rename {autorecon/plugins => plugins}/ldap.py (100%) rename {autorecon/plugins => plugins}/misc.py (100%) rename {autorecon/plugins => plugins}/nfs.py (100%) rename {autorecon/plugins => plugins}/rdp.py (100%) rename {autorecon/plugins => plugins}/redis.py (100%) rename {autorecon/plugins => plugins}/reporting.py (100%) rename {autorecon/plugins => plugins}/rpc.py (100%) rename {autorecon/plugins => plugins}/rsync.py (100%) rename {autorecon/plugins => plugins}/sip.py (100%) rename {autorecon/plugins => plugins}/smb.py (100%) rename {autorecon/plugins => plugins}/smtp.py (100%) rename {autorecon/plugins => plugins}/snmp.py (100%) rename {autorecon/plugins => plugins}/ssh.py (100%) rename {autorecon/plugins => plugins}/sslscan.py (100%) delete mode 100644 poetry.lock delete mode 100644 pyproject.toml diff --git a/autorecon/main.py b/autorecon.py similarity index 98% rename from autorecon/main.py rename to autorecon.py index 55afc6b..950bb08 100644 --- a/autorecon/main.py +++ b/autorecon.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -import appdirs, argparse, asyncio, importlib, inspect, ipaddress, math, os, re, select, shutil, signal, socket, sys, termios, time, traceback, tty +import argparse, asyncio, importlib, inspect, ipaddress, math, os, re, sys, signal, select, socket, termios, time, traceback, tty from datetime import datetime try: @@ -17,16 +17,6 @@ from autorecon.io import slugify, e, fformat, cprint, debug, info, warn, error, from autorecon.plugins import Pattern, PortScan, ServiceScan, Report, AutoRecon from autorecon.targets import Target, Service -def install(): - shutil.rmtree(config['config_dir'], ignore_errors=True) - os.makedirs(config['config_dir'], exist_ok=True) - shutil.copy(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'config.toml'), os.path.join(config['config_dir'], 'config.toml')) - shutil.copy(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'global.toml'), os.path.join(config['config_dir'], 'global.toml')) - shutil.copytree(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'plugins'), os.path.join(config['config_dir'], 'plugins')) - -if not os.path.exists(config['config_dir']): - install() - # Save current terminal settings so we can restore them. terminal_settings = termios.tcgetattr(sys.stdin.fileno()) @@ -721,15 +711,15 @@ async def scan_target(target): autorecon.completed_targets.append(target) autorecon.scanning_targets.remove(target) -async def run(): +async def main(): parser = argparse.ArgumentParser(add_help=False, description='Network reconnaissance tool to port scan and automatically enumerate services found on multiple targets.') parser.add_argument('targets', action='store', help='IP addresses (e.g. 10.0.0.1), CIDR notation (e.g. 10.0.0.1/24), or resolvable hostnames (e.g. foo.bar) to scan.', nargs='*') parser.add_argument('-t', '--targets', action='store', type=str, default='', dest='target_file', help='Read targets from file.') parser.add_argument('-p', '--ports', action='store', type=str, help='Comma separated list of ports / port ranges to scan. Specify TCP/UDP ports by prepending list with T:/U: To scan both TCP/UDP, put port(s) at start or specify B: e.g. 53,T:21-25,80,U:123,B:123. Default: %(default)s') parser.add_argument('-m', '--max-scans', action='store', type=int, help='The maximum number of concurrent scans to run. Default: %(default)s') parser.add_argument('-mp', '--max-port-scans', action='store', type=int, help='The maximum number of concurrent port scans to run. Default: 10 (approx 20%% of max-scans unless specified)') - parser.add_argument('-c', '--config', action='store', type=str, default=os.path.join(config['config_dir'], 'config.toml'), dest='config_file', help='Location of AutoRecon\'s config file. Default: %(default)s') - parser.add_argument('-g', '--global-file', action='store', type=str, dest='global_file', help='Location of AutoRecon\'s global file. Default: ' + os.path.join(config['config_dir'], 'global.toml')) + parser.add_argument('-c', '--config', action='store', type=str, default=os.path.dirname(os.path.realpath(__file__)) + '/config.toml', dest='config_file', help='Location of AutoRecon\'s config file. Default: %(default)s') + parser.add_argument('-g', '--global-file', action='store', type=str, dest='global_file', help='Location of AutoRecon\'s global file. Default: ' + os.path.dirname(os.path.realpath(__file__)) + '/global.toml') parser.add_argument('--tags', action='store', type=str, default='default', help='Tags to determine which plugins should be included. Separate tags by a plus symbol (+) to group tags together. Separate groups with a comma (,) to create multiple groups. For a plugin to be included, it must have all the tags specified in at least one group. Default: %(default)s') parser.add_argument('--exclude-tags', action='store', type=str, default='', metavar='TAGS', help='Tags to determine which plugins should be excluded. Separate tags by a plus symbol (+) to group tags together. Separate groups with a comma (,) to create multiple groups. For a plugin to be excluded, it must have all the tags specified in at least one group. Default: %(default)s') parser.add_argument('--port-scans', action='store', type=str, metavar='PLUGINS', help='Override --tags / --exclude-tags for the listed PortScan plugins (comma separated). Default: %(default)s') @@ -763,7 +753,7 @@ async def run(): autorecon.argparse = parser if args.version: - print('AutoRecon v2.0') + print('AutoRecon v2.0-beta3') sys.exit(0) # Parse config file and args for global.toml first. @@ -1378,15 +1368,12 @@ async def run(): # Restore original terminal settings. termios.tcsetattr(sys.stdin, termios.TCSADRAIN, terminal_settings) -def main(): +if __name__ == '__main__': # Capture Ctrl+C and cancel everything. signal.signal(signal.SIGINT, cancel_all_tasks) try: - asyncio.run(run()) + asyncio.run(main()) except asyncio.exceptions.CancelledError: pass except RuntimeError: pass - -if __name__ == '__main__': - main() diff --git a/autorecon/autorecon/__init__.py b/autorecon/__init__.py similarity index 100% rename from autorecon/autorecon/__init__.py rename to autorecon/__init__.py diff --git a/autorecon/autorecon/config.py b/autorecon/config.py similarity index 86% rename from autorecon/autorecon/config.py rename to autorecon/config.py index 0279d63..d269aeb 100644 --- a/autorecon/autorecon/config.py +++ b/autorecon/config.py @@ -1,6 +1,4 @@ -import appdirs, os - -config_dir = appdirs.user_config_dir('AutoRecon') +import os configurable_keys = [ 'ports', @@ -41,8 +39,7 @@ configurable_boolean_keys = [ config = { 'protected_classes': ['autorecon', 'target', 'service', 'commandstreamreader', 'plugin', 'portscan', 'servicescan', 'global', 'pattern'], - 'config_dir': config_dir, - 'global_file': os.path.join(config_dir, 'global.toml'), + 'global_file': os.path.dirname(os.path.realpath(os.path.join(__file__, '..'))) + '/global.toml', 'ports': None, 'max_scans': 50, 'max_port_scans': None, @@ -51,7 +48,7 @@ config = { 'port_scans': None, 'service_scans': None, 'reports': None, - 'plugins_dir': os.path.join(config_dir, 'plugins'), + 'plugins_dir': os.path.dirname(os.path.abspath(os.path.join(__file__, '..'))) + '/plugins', 'add_plugins_dir': None, 'outdir': 'results', 'single_target': False, diff --git a/autorecon/autorecon/io.py b/autorecon/io.py similarity index 100% rename from autorecon/autorecon/io.py rename to autorecon/io.py diff --git a/autorecon/autorecon/plugins.py b/autorecon/plugins.py similarity index 100% rename from autorecon/autorecon/plugins.py rename to autorecon/plugins.py diff --git a/autorecon/autorecon/targets.py b/autorecon/targets.py similarity index 100% rename from autorecon/autorecon/targets.py rename to autorecon/targets.py diff --git a/autorecon/config.toml b/config.toml similarity index 100% rename from autorecon/config.toml rename to config.toml diff --git a/autorecon/global.toml b/global.toml similarity index 100% rename from autorecon/global.toml rename to global.toml diff --git a/autorecon/plugins/__init__.py b/plugins/__init__.py similarity index 100% rename from autorecon/plugins/__init__.py rename to plugins/__init__.py diff --git a/autorecon/plugins/databases.py b/plugins/databases.py similarity index 100% rename from autorecon/plugins/databases.py rename to plugins/databases.py diff --git a/autorecon/plugins/default-port-scan.py b/plugins/default-port-scan.py similarity index 100% rename from autorecon/plugins/default-port-scan.py rename to plugins/default-port-scan.py diff --git a/autorecon/plugins/dns.py b/plugins/dns.py similarity index 100% rename from autorecon/plugins/dns.py rename to plugins/dns.py diff --git a/autorecon/plugins/ftp.py b/plugins/ftp.py similarity index 100% rename from autorecon/plugins/ftp.py rename to plugins/ftp.py diff --git a/autorecon/plugins/guess-port-scan.py b/plugins/guess-port-scan.py similarity index 100% rename from autorecon/plugins/guess-port-scan.py rename to plugins/guess-port-scan.py diff --git a/autorecon/plugins/http_server.py b/plugins/http_server.py similarity index 100% rename from autorecon/plugins/http_server.py rename to plugins/http_server.py diff --git a/autorecon/plugins/kerberos.py b/plugins/kerberos.py similarity index 100% rename from autorecon/plugins/kerberos.py rename to plugins/kerberos.py diff --git a/autorecon/plugins/ldap.py b/plugins/ldap.py similarity index 100% rename from autorecon/plugins/ldap.py rename to plugins/ldap.py diff --git a/autorecon/plugins/misc.py b/plugins/misc.py similarity index 100% rename from autorecon/plugins/misc.py rename to plugins/misc.py diff --git a/autorecon/plugins/nfs.py b/plugins/nfs.py similarity index 100% rename from autorecon/plugins/nfs.py rename to plugins/nfs.py diff --git a/autorecon/plugins/rdp.py b/plugins/rdp.py similarity index 100% rename from autorecon/plugins/rdp.py rename to plugins/rdp.py diff --git a/autorecon/plugins/redis.py b/plugins/redis.py similarity index 100% rename from autorecon/plugins/redis.py rename to plugins/redis.py diff --git a/autorecon/plugins/reporting.py b/plugins/reporting.py similarity index 100% rename from autorecon/plugins/reporting.py rename to plugins/reporting.py diff --git a/autorecon/plugins/rpc.py b/plugins/rpc.py similarity index 100% rename from autorecon/plugins/rpc.py rename to plugins/rpc.py diff --git a/autorecon/plugins/rsync.py b/plugins/rsync.py similarity index 100% rename from autorecon/plugins/rsync.py rename to plugins/rsync.py diff --git a/autorecon/plugins/sip.py b/plugins/sip.py similarity index 100% rename from autorecon/plugins/sip.py rename to plugins/sip.py diff --git a/autorecon/plugins/smb.py b/plugins/smb.py similarity index 100% rename from autorecon/plugins/smb.py rename to plugins/smb.py diff --git a/autorecon/plugins/smtp.py b/plugins/smtp.py similarity index 100% rename from autorecon/plugins/smtp.py rename to plugins/smtp.py diff --git a/autorecon/plugins/snmp.py b/plugins/snmp.py similarity index 100% rename from autorecon/plugins/snmp.py rename to plugins/snmp.py diff --git a/autorecon/plugins/ssh.py b/plugins/ssh.py similarity index 100% rename from autorecon/plugins/ssh.py rename to plugins/ssh.py diff --git a/autorecon/plugins/sslscan.py b/plugins/sslscan.py similarity index 100% rename from autorecon/plugins/sslscan.py rename to plugins/sslscan.py diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index eeaf603..0000000 --- a/poetry.lock +++ /dev/null @@ -1,54 +0,0 @@ -[[package]] -name = "appdirs" -version = "1.4.4" -description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." -category = "main" -optional = false -python-versions = "*" - -[[package]] -name = "colorama" -version = "0.4.4" -description = "Cross-platform colored terminal text." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "toml" -version = "0.10.2" -description = "Python Library for Tom's Obvious, Minimal Language" -category = "main" -optional = false -python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "unidecode" -version = "1.3.1" -description = "ASCII transliterations of Unicode text" -category = "main" -optional = false -python-versions = ">=3.5" - -[metadata] -lock-version = "1.1" -python-versions = "^3.7" -content-hash = "681db41aa556d6d3f79e1e8ee0107bccd078e39c8db7e6e0159860c96ea93c5b" - -[metadata.files] -appdirs = [ - {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, - {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, -] -colorama = [ - {file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, - {file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, -] -toml = [ - {file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, - {file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, -] -unidecode = [ - {file = "Unidecode-1.3.1-py3-none-any.whl", hash = "sha256:5f58926b9125b499f8ab6816828e737578fa3e31fa24d351a3ab7f4b7c064ab0"}, - {file = "Unidecode-1.3.1.tar.gz", hash = "sha256:6efac090bf8f29970afc90caf4daae87b172709b786cb1b4da2d0c0624431ecc"}, -] diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index d8ba3c0..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,26 +0,0 @@ -[tool.poetry] -name = "autorecon" -version = "2.0.0" -description = "A multi-threaded network reconaissance tool which performs automated enumeration of services." -authors = ["Tib3rius"] -license = "GNU GPL v3" -packages = [ - {include = "main.py", from = "autorecon"}, - {include = "autorecon", from = "autorecon"}, -] - -[tool.poetry.dependencies] -python = "^3.7" -appdirs = "^1.4.4" -colorama = "^0.4.4" -toml = "^0.10.2" -Unidecode = "^1.3.1" - -[tool.poetry.dev-dependencies] - -[tool.poetry.scripts] -autorecon = "main:main" - -[build-system] -requires = ["poetry-core>=1.0.0"] -build-backend = "poetry.core.masonry.api"