Added ability to add an additional plugins directory instead of overriding the original. Useful for plugin dev.
Also added a new non-default port scan which guesses services based on open ports.
Changed keyboard control to some custom code which should work with all systems. Unfortunately occasionally it will not register inputs. Unsure why. Good enough for now.
Added IPv6 support.
If a hostname has an IPv4 address, that will be used.
Plugins can either rely on nmap_extra for IPv6 compatibility, or access service.target.type to see if the target address is IPv4 or IPv6.
Added exception handling for required modules.
Added ability to disable keyboard controls.
Added separate keyboard control module for SSH/Docker (running as root).
Updated global option parsing to allow default None values by removing the "default=" setting.
Added a match_service() function to ServiceScan plugins to match combinations of protocol/port/name.
Fixed bug in status times.
Removed defaul from global.domain.
Added new WinRM detection plugin.
Previously, add_list_option() used argparse's "append" type. Now it uses nargs='+' to allow multiple options (space separated) that also override defaults rather than appending.
Added a stream readlines() function to read all lines into a list.
Added fformat() function, giving plugin authors more access to variables.
Fixed "Curl Robots" plugin (suggestion by Alh4zr3d) so it only saves the robots.txt file if it finds one.
Fixed bug where commands were double formatted when being written to _commands.txt
Fixed bug where plugin warnings would print multiple times per plugin.
Added --create-port-dirs option which will create port directories (e.g. tcp80, udp53) in the scans directory and put all relevant scans there.
Now most command line options can be set in the config.toml file as well.
The manual commands function will now merge command arrays instead of replacing them, while removing duplicate commands and preserving order.
Added a default option to get_global / get_global_option function in case user deletes global options.
Updated several plugins that use global options.
Switched spaces to tabs throughout for consistency.
Changed add_port_match() to match_port()
Changed add_service_match() to match_service_name()
Removed un-used variables.
* Restructured program to enable packaging. Moved main into its own function and resolved global dependency issues. Configured pyproject.toml
* Restructured configuration management such that configuration files are stored in the default user configuration directory for the OS they're using, utilising appdirs
* Added exclusion for byte compiled python files
* Removed build files from version control
* Restructured config file initialisation into a function so that it can be called by the entrypoint main() function
* Resolved issues updating global variables from within function scope. Added global identifiers to global variables to make them more readily identifiable as such
* Formatting revision
* Updated documentation to reflect package installation instructions and usage
* Grammatical revision to improve instructional clarity
* Added default sudo for udp scans to prompt for password to elevate privileges
* Added an installation command for all required packages to the README
* Added manual installation instructions, clarification of oscp vm limitations installing pip3, and instructions on how to elevate privileges when installed with pipx
* Formatting revision to improve clarity of instructions and added requirements.txt
* Removed hardcoded sudo commands from default scan configurations
* Changed suggestion to add alias to .bashrc to .profile as this is what's used by default in kali to set initial temrinal conditions
* Fixed error in manual installation that would have resulted in installing python2 packages