Seamless deployment and management of cybersecurity solutions ๐Ÿ—๏ธ

Overview
Cover



Description ๐Ÿ–ผ๏ธ

Background ๐Ÿ‘ด๐Ÿผ

In today's fast-paced society, most people are unaware of the potential consequences of cyberattacks on their organizations. Furthermore, they do not invest in cybersecurity solutions due to the costs of setup, licensing, and maintenance.

Vision ๐Ÿ“œ

MutableSecurity ๐Ÿ—๏ธ is a software product for making cybersecurity solution management easier and more accessible, from deployment and configuration to monitoring.

Despite the current lack of complex functionalities, we have a vision in mind that we hope to achieve in the near future. As we must begin somewhere, the first step in our progress is this command line interface for automatic management of cybersecurity solutions.

Come join the MutableSecurity journey!

Concepts ๐Ÿ’ฌ

MutableSecurity implements and operates on a few concepts:

  • Target host (or target machine): A computer where the actions will be performed. Can be the local machine or remote one.
  • Solution: A cybersecurity solution that needs to be set up on a target machine.
  • Operation: A manipulation of a solution that is installed or needs to be installed. Could vary from effective installation to testing.
  • Solution's lifecycle: States in which a solution exists. MutableSecurity implements a set of operations for each state.
  • Configuration: A set of parameters (in pairs of aspect and value) specific to the solution. Can be initial, if it is used in the deployment process, or production, if it accompanies the solution on the target host and stores its current configuration.
  • Logs: Logging messages generated by the solution, relevant to understand its functioning.
  • Stats: Metrics offered by the installed solution, relevant to measure the protection provided to the machine.

Solutions' Lifecycle. Operations โญ•

Stage Operation Description
Deployment Initial Configuration Setting Sets an aspect of the initial configuration used during the installation process.
Install Installs the solution in the target host.
Test Tests the proper functioning of the newly installed solution.
Production* Production Configuration Retrieval Retrieves the production configuration of the running solution
Production Configuration Setting Sets an aspect of the production configuration.
Logs Retrieval Retrieves the logs generated by the solution.
Stats Retrieval Retrieves the stats generated by the solution.
Test Tests the proper functioning of the running solution.
Update Updates the solution to its latest version.
Disconnection Uninstall Uninstalls the solution from the target host.

* All the operations listed in the production stage are optional and can be executed in any order.

Functionalities ๐Ÿš€

  • Local or remote (via password-based SSH) deployment
  • One solution supported so far (and more under development)
  • Intuitive command line interface

Supported Cybersecurity Solutions ๐Ÿ“ฆ

Supported Solution Short Description Supported Operating Systems
Open source network intrusion detection and prevention system Ubuntu 20.04 LTS and 22.04 LTS
More coming soon...

Installation ๐Ÿฅก

The easiest way to install MutableSecurity is from PyPI. Just run pip install mutablesecurity and you'll have everything set!

Requirements ๐Ÿฅข

The only requirements are Python 3.9 and pip.

To avoid warnings when using pip to install Python scripts, add /home/<username>/.local/bin (where <username> identifies the current user) to your $PATH variable.

Usage and Demos ๐Ÿชœ

0๏ธโƒฃ Get help.

Syntax

mutablesecurity --help or mutablesecurity --solution <solution> --help

Example

โžœ mutablesecurity --help

              _        _     _      __                      _ _         
  /\/\  _   _| |_ __ _| |__ | | ___/ _\ ___  ___ _   _ _ __(_| |_ _   _ 
 /    \| | | | __/ _` | '_ \| |/ _ \ \ / _ \/ __| | | | '__| | __| | | |
/ /\/\ | |_| | || (_| | |_) | |  ___\ |  __| (__| |_| | |  | | |_| |_| |
\/    \/\__,_|\__\__,_|_.__/|_|\___\__/\___|\___|\__,_|_|  |_|\__|\__, |
     Seamless deployment and management of cybersecurity solutions |___/ 

Usage: mutablesecurity [OPTIONS]

Options:
  -r, --remote TEXT               Connect to remote in the
                                  [email protected]:PORT format. If ommited,
                                  the operations are executed locally.
  -s, --solution [SURICATA]       Solution to manage
  -o, --operation [GET_CONFIGURATION|GET_LOGS|GET_STATS|INSTALL|SET_CONFIGURATION|TEST|UNINSTALL|UPDATE]
                                  Operation to perform
  -a, --aspect TEXT               Configuration's aspect to modify. Available
                                  only with a value (--value)
  -v, --value TEXT                New value of the configuration's aspect.
                                  Available only with an aspect (--aspect).
  --verbose                       Increase in the logging volume
  -h, --help                      Useful information for using MutableSecurity
                                  or about a solution
โžœ mutablesecurity --solution SURICATA --help

              _        _     _      __                      _ _         
  /\/\  _   _| |_ __ _| |__ | | ___/ _\ ___  ___ _   _ _ __(_| |_ _   _ 
 /    \| | | | __/ _` | '_ \| |/ _ \ \ / _ \/ __| | | | '__| | __| | | |
/ /\/\ | |_| | || (_| | |_) | |  ___\ |  __| (__| |_| | |  | | |_| |_| |
\/    \/\__,_|\__\__,_|_.__/|_|\___\__/\___|\___|\__,_|_|  |_|\__|\__, |
     Seamless deployment and management of cybersecurity solutions |___/  

Full name: Suricata Intrusion Detection and Prevention System

Description:
Suricata is the leading independent open source threat detection engine. By combining intrusion detection (IDS), intrusion prevention (IPS), network 
security monitoring (NSM) and PCAP processing, Suricata can quickly identify, stop, and assess even the most sophisticated attacks.

References:
- https://suricata.io
- https://github.com/OISF/suricata

Configuration:
โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Aspect            โ”ƒ Type โ”ƒ  Possible Values  โ”ƒ Description                          โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ interface         โ”‚ str  โ”‚         *         โ”‚ Interface on which Suricata listens  โ”‚
โ”‚ automatic_updates โ”‚ str  โ”‚ ENABLED, DISABLED โ”‚ State of the automatic daily updates โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
1๏ธโƒฃ Install a solution.

Syntax

mutablesecurity --solution <solution> --operation INSTALL

Example

โžœ mutablesecurity --solution SURICATA --operation INSTALL  
๐Ÿ” Password for localhost: 
โœ… Suricata is now installed on this machine.

Optional: To connect to a remote host via a privileged user, just add the --remote flag.

โžœ mutablesecurity --remote [email protected]:22 --solution SURICATA --operation INSTALL  
๐Ÿ” Password for adm[email protected]:22:
โœ… Suricata is now installed on this machine.
2๏ธโƒฃ Test the solution.

Syntax

mutablesecurity --solution <solution> --operation TEST

Example

โžœ mutablesecurity --solution SURICATA --operation TEST             
๐Ÿ” Password for localhost: 
โœ… Suricata works as expected.
3๏ธโƒฃ Get the production configuration.

Syntax

mutablesecurity --solution <solution> --operation GET_CONFIGURATION

Example

โžœ mutablesecurity --solution SURICATA --operation GET_CONFIGURATION
๐Ÿ” Password for localhost: 
โœ… The configuration of Suricata was retrieved.

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Attribute         โ”ƒ Value    โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ automatic_updates โ”‚ DISABLED โ”‚
โ”‚ interface         โ”‚ enp0s3   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
4๏ธโƒฃ Modify the production configuration.

Syntax

mutablesecurity --solution <solution> --operation SET_CONFIGURATION --aspect <aspect> --value <value>

Example

โžœ mutablesecurity --solution SURICATA --operation SET_CONFIGURATION --aspect automatic_updates --value ENABLED    
๐Ÿ” Password for localhost: 
โœ… The configuration of Suricata was set.

Optional: To test the modifications, run the configuration retrieval and testing operations.

โžœ mutablesecurity --solution SURICATA --operation GET_CONFIGURATION               
๐Ÿ” Password for localhost: 
โœ… The configuration of Suricata was retrieved.

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Attribute         โ”ƒ Value   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ automatic_updates โ”‚ ENABLED โ”‚
โ”‚ interface         โ”‚ enp0s3  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โžœ mutablesecurity --solution SURICATA --operation TEST                                             
๐Ÿ” Password for localhost: 
โœ… Suricata works as expected.
5๏ธโƒฃ Retrieve the solution logs.

Syntax

mutablesecurity --solution <solution> --operation GET_LOGS

Example

โžœ mutablesecurity --solution SURICATA --operation GET_LOGS
๐Ÿ” Password for localhost: 
โœ… The logs of Suricata were retrieved.

[...]
04/18/2022-10:55:31.134760  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2]
{TCP} 54.192.235.64:80 -> 10.0.2.15:50690
[...]
6๏ธโƒฃ Retrieve the solution statistics.

Syntax

mutablesecurity --solution <solution> --operation GET_STATS

Example

โžœ mutablesecurity --solution SURICATA --operation GET_STATS
๐Ÿ” Password for localhost: 
โœ… The stats of Suricata were retrieved.

โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ณโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”“
โ”ƒ Attribute                              โ”ƒ Value                   โ”ƒ
โ”กโ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ•‡โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”ฉ
โ”‚ Total number of alerts                 โ”‚ 5                       โ”‚
โ”‚ Total number of alerts generated today โ”‚ 5                       โ”‚
โ”‚ Uptime                                 โ”‚ 1 minute and 23 seconds โ”‚
โ”‚ Current installed version              โ”‚ 6.0.4 RELEASE           โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
7๏ธโƒฃ Updates the solution.

Syntax

mutablesecurity --solution <solution> --operation UPDATE

Example

โžœ mutablesecurity --solution SURICATA --operation UPDATE        
๐Ÿ” Password for localhost: 
โœ… Suricata was updated to its latest version.
8๏ธโƒฃ Uninstall the solution.

Syntax

mutablesecurity --solution <solution> --operation UNINSTALL

Example

โžœ mutablesecurity --solution SURICATA --operation UNINSTALL        
๐Ÿ” Password for localhost: 
โœ… Suricata is no longer installed on this machine.

Support ๐Ÿ†˜

If you have any type of suggestion (for example, proposals for new functionalities or support for other security solutions), please open an issue or drop us a line at [email protected].

Contributing ๐Ÿค

To find out how you can contribute to this project, check out our contribution guide.

Comments
  • Adds support for Let's Encrypt x Certbot

    Adds support for Let's Encrypt x Certbot

    Metadata

    • Fixed Issue: #51
    • Contributors: @AntociAlin

    Proposed Changes

    • Implements the new Let's Encrypt x Certbot module for the new MutableSecurity structure.

    New Functioning

    Let's Encrypt x Certbot will be able to generate a certificate for a single domain. It supports only Nginx for the moment.

    improvement 
    opened by AntociAlin 4
  • Update mypy requirement from ^0.982 to ^0.990

    Update mypy requirement from ^0.982 to ^0.990

    Updates the requirements on mypy to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    package-update 
    opened by dependabot[bot] 1
  • Adds support for Vector

    Adds support for Vector

    Metadata

    • Fixed Issue: #88
    • Contributors: @iosifache

    Proposed Changes

    • Changes the logs API to allow Vector to automatically discover log files.
    • Adapts the other integrated solutions to the new logs API.
    • Adds support for Vector.

    New Functioning

    Vector can now be installed to send logs from other security solutions to a Loki instance.

    Other Information

    The API changes, namely to the BaseLog objects, were propagated in the docs.

    improvement 
    opened by iosifache 1
  • Updates REAMDE.md and its template

    Updates REAMDE.md and its template

    Metadata

    • Fixed Issue: #73
    • Contributors: @iosifache

    Proposed Changes

    • Updates README.md by adding multiple installation methods and removing some content

    New Functioning

    MutableSecurity's behavior was not changed.

    improvement 
    opened by iosifache 1
  • Update mypy requirement from ^0.971 to ^0.981

    Update mypy requirement from ^0.971 to ^0.981

    Updates the requirements on mypy to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    package-update 
    opened by dependabot[bot] 1
  • Adds support for ClamAV

    Adds support for ClamAV

    Metadata

    • Fixed Issue: #54
    • Contributors: @AntociAlin

    Proposed Changes

    • Implements the new ClamAV module for the new MutableSecurity structure.
    • Bug fixes to the already existing solutions.
    • Adds new categories: ANTIMALWARE and HOST_PROTECTION.

    New Functioning

    • ClamAV is able to offer real-time protection to Ubuntu type OS.
    • It contains an easy to use and customizable crontab. It is used to run custom scans.
    • It contains a Start Scan action to run a custom scan in a given directory at will.
    • Every information and test can be easily seen and controlled.
    improvement 
    opened by AntociAlin 1
  • Adds Poe and further configure some tools

    Adds Poe and further configure some tools

    Metadata

    • Fixed Issue: #42
    • Contributors: @iosifache

    Proposed Changes

    • Poe integration by pyproject.yaml

    New Functioning

    Only the development environment was changes. No functionality was added to MutableSecurity.

    improvement 
    opened by iosifache 1
  • Adds support for Fail2ban and integrates with teler

    Adds support for Fail2ban and integrates with teler

    Metadata

    • Fixed Issue: #35
    • Contributors: @iosifache

    Proposed Changes

    • Adds support for Fail2ban.
    • Creates an integration with the already-supported teler.
    • Changes the README.md generation workflow to include solutions under refactoring.

    New Functioning

    MutableSecurity now have Fail2ban as a supported solution. In addition, the integration from teler can be enabled by changing rhe fail2ban_integration information.

    improvement 
    opened by iosifache 1
  • OpenCTI Support

    OpenCTI Support

    Feature Description

    Add support for OpenCTI, an open source Cyber Threat Intelligence platform.

    Possible Solution

    No response

    Contact Details

    No response

    feature-request 
    opened by iosifache 1
  • Adds a feedback form in the CLI

    Adds a feedback form in the CLI

    Metadata

    • Fixed Issue: #6
    • Contributors: @iosifache

    Proposed Changes

    • Adds a feedback form for testers

    New Functioning

    MutableSecurity will show on its first run a message and an input for email addresses. After that, is can be shown only by requesting it explicitly by providing the --feedback flag.

    feature-request 
    opened by iosifache 1
  • Implements the check of Python version

    Implements the check of Python version

    Metadata

    • Fixed Issue: #5
    • Contributors: @iosifache

    Proposed Changes

    • Check for Python version
    • Error message shown when the check fails

    New Functioning

    When running MutableSecurity in an inadequate environment (for example, Python 3.8), an error message is shown (check the snippet below) and the execution is canceled.

                  _        _     _      __                      _ _         
      /\/\  _   _| |_ __ _| |__ | | ___/ _\ ___  ___ _   _ _ __(_| |_ _   _ 
     /    \| | | | __/ _` | '_ \| |/ _ \ \ / _ \/ __| | | | '__| | __| | | |
    / /\/\ | |_| | || (_| | |_) | |  ___\ |  __| (__| |_| | |  | | |_| |_| |
    \/    \/\__,_|\__\__,_|_.__/|_|\___\__/\___|\___|\__,_|_|  |_|\__|\__, |
         Seamless deployment and management of cybersecurity solutions |___/ 
    
    ๐Ÿ›‘ Please make sure that your Python version is at least 3.9 before executing MutableSecurity.
    
    feature-request 
    opened by iosifache 1
  • Update packaging requirement from ^21.3 to >=21.3,<23.0

    Update packaging requirement from ^21.3 to >=21.3,<23.0

    Updates the requirements on packaging to permit the latest version.

    Release notes

    Sourced from packaging's releases.

    22.0

    What's Changed

    ... (truncated)

    Changelog

    Sourced from packaging's changelog.

    22.0 - 2022-12-07

    
    * Explicitly declare support for Python 3.11 (:issue:`587`)
    * Remove support for Python 3.6 (:issue:`500`)
    * Remove ``LegacySpecifier`` and ``LegacyVersion`` (:issue:`407`)
    * Add ``__hash__`` and ``__eq__`` to ``Requirement`` (:issue:`499`)
    * Add a ``cpNNN-none-any`` tag (:issue:`541`)
    * Adhere to :pep:`685` when evaluating markers with extras (:issue:`545`)
    * Allow accepting locally installed prereleases with ``SpecifierSet``  (:issue:`515`)
    * Allow pre-release versions in marker evaluation (:issue:`523`)
    * Correctly parse ELF for musllinux on Big Endian (:issue:`538`)
    * Document ``packaging.utils.NormalizedName`` (:issue:`565`)
    * Document exceptions raised by functions in ``packaging.utils`` (:issue:`544`)
    * Fix compatible version specifier incorrectly strip trailing ``0`` (:issue:`493`)
    * Fix macOS platform tags with old macOS SDK (:issue:`513`)
    * Forbid prefix version matching on pre-release/post-release segments (:issue:`563`)
    * Normalize specifier version for prefix matching (:issue:`561`)
    * Improve documentation for ``packaging.specifiers`` and ``packaging.version``. (:issue:`572`)
    * ``Marker.evaluate`` will now assume evaluation environment with empty ``extra``.
      Evaluating markers like ``"extra == 'xyz'"`` without passing any extra in the
      ``environment`` will no longer raise an exception (:issue:`550`)
    * Remove dependency on ``pyparsing``, by replacing it with a hand-written parser.
      This package now has no runtime dependencies (:issue:`468`)
    * Update return type hint for ``Specifier.filter`` and ``SpecifierSet.filter``
      to use ``Iterator`` instead of ``Iterable`` (:issue:`584`)
    

    21.3 - 2021-11-17

    • Add a pp3-none-any tag (:issue:311)
    • Replace the blank pyparsing 3 exclusion with a 3.0.5 exclusion (:issue:481, :issue:486)
    • Fix a spelling mistake (:issue:479)

    21.2 - 2021-10-29

    
    * Update documentation entry for 21.1.
    

    21.1 - 2021-10-29

    • Update pin to pyparsing to exclude 3.0.0.

    21.0 - 2021-07-03

    
    * PEP 656: musllinux support (:issue:`411`)
    * Drop support for Python 2.7, Python 3.4 and Python 3.5.
    * Replace distutils usage with sysconfig (:issue:`396`)
    </tr></table> 
    

    ... (truncated)

    Commits
    • b6e9bbc Bump for release
    • 55bdc66 Bump version to 22.0
    • b997a48 Permit arbitrary whitespace around versions specifier in parenthesis
    • e7ce051 Fix a typo in an error message
    • cb09331 Enforce word boundaries in operators and names
    • b41326d Rename marker_expr to marker
    • 975cd32 Permit whitespace around marker_atom
    • 8cba45c Add ParserSyntaxError as the cause of Invalid{Requirement/Marker}
    • 7930b73 Improve error message for bad version specifiers in Requirement
    • 258d252 Rewrite test suite for requirements parsing
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    package-update 
    opened by dependabot[bot] 0
  • Update mypy requirement from ^0.982 to ^0.991

    Update mypy requirement from ^0.982 to ^0.991

    Updates the requirements on mypy to permit the latest version.

    Commits
    • b7788fc Update version to remove "+dev" for releasing 0.991
    • 6077d19 manually CP typeshed #9130
    • ab0ea1e Fix crash with function redefinition (#14064)
    • 592a9ce Fix another crash with report generation on namespace packages (#14063)
    • 1650ae0 Update --no-warn-no-return docs for empty body changes (#14065)
    • b9daa31 Don't ignore errors in files passed on the command line (#14060)
    • 02fd8a5 Filter out wasm32 wheel in upload-pypi.py (#14035)
    • 131c8d7 Fix crash on inference with recursive alias to recursive instance (#14038)
    • 1368338 Change version to 0.991+dev in preparation for the point release
    • b71dc3d Remove +dev from version
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    package-update 
    opened by dependabot[bot] 0
  • Stacktrace Print on Error in Development Environments

    Stacktrace Print on Error in Development Environments

    Improvement Description

    The except in the cli module catches all exception. This makes MutableSecurity more user-friendly. As a regular user, you don't want to see a messy stack trace directly into your terminal. You only want to know the reason, a thing that can be achieved with a pretty error message.

    The same does not apply to development environments. If an error occurs after changing the codebase, you are interested in seeing more than a shallow reason, namely a stack trace. It helps to have a starting point in the debugging process.

    Possible Solution

    In the cli module, the except can check if the user is a developer (using the configuration module). If it is, then the stacktrace is printed.

    Contact Details

    No response

    improvement good-first-issue 
    opened by iosifache 2
  • Invalid Executable Name When Running via PEX

    Invalid Executable Name When Running via PEX

    Bug Description

    The manual displays a PEX-related command (python -m __pex_executable__ [OPTIONS]) on the usage section. This should be replaced with the actual executable path.

    Software Version

    v0.4.0

    Operating System

    Linux

    Contact Details

    No response

    bug-report good-first-issue 
    opened by iosifache 0
  • Workflows for Automatic Distribution of New Versions

    Workflows for Automatic Distribution of New Versions

    Improvement Description

    At the moment, the Python package is manually published to PyPi. In addition, PEX executables and Debian packages are locally built using the distribution repository and guides from documentation.

    To automate this, we can create multiple GitHub workflows to:

    • Publish the new package to PyPi
    • Build PEX executables for different Python versions
    • Build Debian packages for different Python versions
    • Push the newly created Debian packages into the repository.

    Possible Solution

    • Workflows creation

    Contact Details

    No response

    improvement good-first-issue 
    opened by iosifache 0
Releases(v0.4.0)
Owner
MutableSecurity
Seamlessly deployment and management of cybersecurity solutions
MutableSecurity
Polkit - Local Privilege Escalation (CVE-2021-3560)

CVE-2021-3560 Polkit - Local Privilege Escalation Original discovery by kevin_backhouse from GitHub Security Lab References https://github.blog/2021-0

Salman Asad 1 Nov 12, 2021
Security tool to test different bypass of forbidden

notForbidden Security tool to test different bypass of forbidden Usage python3 notForbidden.py URL Features Bypass with different methods (POST, OPT

6 Sep 08, 2022
Open-source keylogger write in python

Python open-source keylogger Language Python open-source keylogger using pynput module Using Install dependences in archive setup.py or install.sh in

Dio brando 4 Jan 15, 2022
python script for hack gmail account using brute force attack

#Creator: johnry #coded by john ry GBrute python script for hack gmail account using brute force attack Commands apt update && apt upgrade git clone h

6 Dec 09, 2022
DepFine Is a tool to find the unregistered dependency based on dependency confusion valunerablility and lead to RCE

DepFine DepFine Is a tool to find the unregistered dependency based on dependency confusion valunerablility and lead to RCE Installation: You Can inst

Hossam mesbah 14 Nov 11, 2022
Advanced subdomain scanner, any domain hidden subdomains

little advanced subdomain scanner made in python, works very quick and has options to change the port u want it to connect for

Nano 5 Nov 23, 2021
CTF framework and exploit development library

pwntools - CTF toolkit Pwntools is a CTF framework and exploit development library. Written in Python, it is designed for rapid prototyping and develo

Gallopsled 9.8k Dec 31, 2022
Bandit is a tool designed to find common security issues in Python code.

A security linter from PyCQA Free software: Apache license Documentation: https://bandit.readthedocs.io/en/latest/ Source: https://github.com/PyCQA/ba

Python Code Quality Authority 4.8k Dec 31, 2022
Wordlist attacks on Bitwarden data.json files

BitwardenDecryptBrute This is a slightly modified version of BitwardenDecrypt. In addition to the decryption this version can do wordlist attacks for

42 Nov 09, 2022
Log4j2 intranet scan

Log4j2-intranet-scan โš ๏ธ ๅ…่ดฃๅฃฐๆ˜Ž ๆœฌ้กน็›ฎไป…้ขๅ‘ๅˆๆณ•ๆŽˆๆƒ็š„ไผไธšๅฎ‰ๅ…จๅปบ่ฎพ่กŒไธบ๏ผŒๅœจไฝฟ็”จๆœฌ้กน็›ฎ่ฟ›่กŒๆฃ€ๆต‹ๆ—ถ๏ผŒๆ‚จๅบ”็กฎไฟ่ฏฅ่กŒไธบ็ฌฆๅˆๅฝ“ๅœฐ็š„ๆณ•ๅพ‹ๆณ•่ง„๏ผŒๅนถไธ”ๅทฒ็ปๅ–ๅพ—ไบ†่ถณๅคŸ็š„ๆŽˆๆƒ ๅฆ‚ๆ‚จๅœจไฝฟ็”จๆœฌ้กน็›ฎ็š„่ฟ‡็จ‹ไธญๅญ˜ๅœจไปปไฝ•้žๆณ•่กŒไธบ๏ผŒๆ‚จ้œ€่‡ช่กŒๆ‰ฟๆ‹…็›ธๅบ”ๅŽๆžœ๏ผŒๆˆ‘ไปฌๅฐ†ไธๆ‰ฟๆ‹…ไปปไฝ•ๆณ•ๅพ‹ๅŠ่ฟžๅธฆ่ดฃไปป ๅœจไฝฟ็”จๆœฌ้กน็›ฎๅ‰๏ผŒ่ฏทๆ‚จๅŠก

k3rwin 16 Dec 19, 2022
This is a simple tool to create ZIP payloads using a provided wordlist for the symlink attack (present in some file upload vulnerabilities)

zip-symlink-payload-creator This is a simple tool to create ZIP payloads using a provided wordlist for the symlink attack (present in some file upload

stark0de 6 Aug 18, 2022
A tool combined with the advantages of masscan and nmap

A tool combined with the advantages of masscan and nmap

59 Dec 24, 2022
This is a simple PoC for the newly found Polkit error names PwnKit

A Python3 and a BASH PoC for CVE-2021-4034 by Kim Schulz

Kim Schulz 16 Sep 06, 2022
Jolokia Exploitation Toolkit (JET) helps exploitation of exposed jolokia endpoints.

jolokia-exploitation-toolkit Jolokia Exploitation Toolkit (JET) helps exploitation of exposed jolokia endpoints. Core concept Jolokia is a protocol br

Laluka 194 Jan 01, 2023
Encrypted Python Password Manager

PyPassKeep Encrypted Python Password Manager About PyPassKeep (PPK for short) is an encrypted python password manager used to secure your passwords fr

KrisIsHere 1 Nov 17, 2021
Monty Hall Problem simulation written in Python.

Monty Hall Problem Simulation monty_hall_sim is a brute-force method of determining the optimal strategy for the Monty Hall Problem. Usage Set boolean

Xavier D 1 Aug 29, 2022
Tools Crack Fb Terbaru

Tools Crack Fb Terbaru

Jeeck 12 Jan 06, 2022
GitGuardian Shield: protect your secrets with GitGuardian

Detect secret in source code, scan your repo for leaks. Find secrets with GitGuardian and prevent leaked credentials. GitGuardian is an automated secrets detection & remediation service.

GitGuardian 1.2k Dec 27, 2022
Password-Manager - This app can generate ,save , find and delete passwords.

Password-Manager This app can generate ,save , find and delete passwords. In the StartUp() Function , there are three buttons to choose from : Generat

1 Jan 01, 2022
โœจ Powerfull & Universal Link Bypasser โœจ

โœจ Powerfull & Universal Link Bypasser โœจ

Vodkarm06 4 Jun 03, 2022