Package: nopasaran
NoPASARANNoPASARAN is an advanced network tool designed to detect, fingerprint, and locate network middleboxes in a unified framework. Written in Python, NoPASARAN uses finite state machines to describe test cases and leverages Ansible for distributing and orchestrating these tests across a network of nodes.Table of ContentsFeaturesRequirementsInstallationInstalling from Source CodeInstalling as a Python PackageUsageWORKER RolePROXY RoleAdditional OptionsDockerDocumentationGitterAcknowledgementsLicenseFeaturesDetection, fingerprinting, and location of network middleboxes.Utilization of finite state machines for test case description.Network orchestration with Ansible.Flexible roles for network nodes and proxies.Support for JSON-based scenario files for state machine configurations.RequirementsPython 3.8 or laterScapyTwistedInstallationYou can install and use NoPASARAN either by cloning the source code from GitHub or by installing it as a Python package.Installing from Source CodeClone the NoPASARAN repository:gitclonehttps://github.com/BenIlies/NoPASARAN.gitNavigate into the NoPASARAN directory:cdNoPASARANInstall the necessary Python packages:pipinstall-rrequirements.txtInstalling as a Python PackageAlternatively, you can install NoPASARAN as a Python package using pip:pipinstallnopasaranUsageNoPASARAN can be executed in either a WORKER or PROXY role.WORKER RoleIn the WORKER role, NoPASARAN performs a test campaign to evaluate network middleboxes. This could be either a client machine that tests its connection path to another endpoint or a trusted machine registered in the network.To run NoPASARAN in the WORKER role, you need to specify a JSON scenario file that indicates the test campaign the Worker has to run.From the source code:pythonmain.pyWORKER--scenario=<path-to-json-scenario-file>As a package:nopasaranWORKER--scenario=<path-to-json-scenario-file>PROXY RoleIn the PROXY role, NoPASARAN does not perform any tests. It acts as a server accessible to remote Workers, enabling them to communicate when they are unreachable from the Internet, such as when blocked by a firewall.To run NoPASARAN in the PROXY role:From the source code:pythonmain.pyPROXYAs a package:nopasaranPROXYAdditional OptionsYou can further customize the behavior of NoPASARAN with the following options:--verboseor-v: Enable verbose output.--log=<path-to-log-file>or-l=<path-to-log-file>: Specify the path to the log file (default is "conf.log").--log-level=<log-level>or-ll=<log-level>: Specify the log level for output. Valid choices are "debug", "info", "warning", and "error".Replace<path-to-json-scenario-file>with the path to your actual JSON scenario file.For any further assistance, use the--helpargument with any command for additional information.DockerYou can also use Docker to download and run a NoPASARAN node.Pull the latest node image:dockerpullbenilies/nopasaran:latestRun the node container:dockerrun-itbenilies/nopasaran:latestThe node container is now ready for use.DocumentationFor more detailed guides and information about NoPASARAN, please visit ourdocumentation.GitterJoin the discussion onGitter.AcknowledgementsThis software is based on the research paper titled "NoPASARAN: a Novel Platform to Analyse Semi Active elements in Routes Across the Network" by Ilies Benhabbour and Marc Dacier, published in 2022.@article{benhabbour2022nopasaran,title={NoPASARAN: a Novel Platform to Analyse Semi Active elements in Routes Across the Network},author={Benhabbour, Ilies and Dacier, Marc},year={2022},publisher={Index Copernicus}}LicenseNoPASARAN is released under theGNU General Public License v3.0.