diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
new file mode 100644
index 000000000..cfa671d2f
--- /dev/null
+++ b/.github/CODEOWNERS
@@ -0,0 +1,6 @@
+# People marked here will be automatically requested for a review.
+#
+# For more information on CODEOWNERS, see:
+# https://help.github.com/en/articles/about-code-owners
+
+* @arkid15r @securestep9
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index a6905c43f..f450f37c5 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,16 +1,45 @@
-#### Checklist
-- [ ] I have followed the [Contributor Guidelines](https://github.com/OWASP/Nettacker/wiki/Developers#contribution-guidelines).
-- [ ] The code has been thoroughly tested in my local development environment with flake8 and pylint.
-- [ ] The code is Python 3 compatible.
-- [ ] The code follows the PEP8 styling guidelines with 4 spaces indentation.
-- [ ] This Pull Request relates to only one issue or only one feature
-- [ ] I have referenced the corresponding issue number in my commit message
-- [ ] I have added the relevant documentation.
-- [ ] My branch is up-to-date with the Upstream master branch.
-
-#### Changes proposed in this pull request
-
-#### Your development environment
-- OS: `x`
-- OS Version: `x`
-- Python Version: `x`
+
+
+## Proposed change
+
+
+
+Your PR description goes here.
+
+## Type of change
+
+
+
+- [ ] New core framework functionality
+- [ ] Bugfix (non-breaking change which fixes an issue)
+- [ ] Code refactoring without any functionality changes
+- [ ] New or existing module/payload change
+- [ ] Documentation/localization improvement
+- [ ] Test coverage improvement
+- [ ] Dependency upgrade
+- [ ] Other improvement (best practice, cleanup, optimization, etc)
+
+## Checklist
+
+
+
+- [ ] I've followed the [contributing guidelines][contributing-guidelines]
+- [ ] I've run `make pre-commit`, it didn't generate any changes
+- [ ] I've run `make test`, all tests passed locally
+
+
+
+[contributing-guidelines]: https://nettacker.readthedocs.io/en/latest/Developers/
diff --git a/.github/workflows/ci_cd.yml b/.github/workflows/ci_cd.yml
index d1bc9365b..efb0a7d98 100644
--- a/.github/workflows/ci_cd.yml
+++ b/.github/workflows/ci_cd.yml
@@ -1,15 +1,76 @@
name: CI/CD
-on: [push, pull_request]
+
+on:
+ merge_group:
+ pull_request:
+ branches:
+ - master
+ push:
+ branches:
+ - master
+ tags:
+ - '*'
+ workflow_dispatch:
+
+concurrency:
+ cancel-in-progress: true
+ group: ${{ github.repository }}-${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
jobs:
- run-pytest:
- name: Run pytest
- runs-on: ubuntu-latest
+ # Code quality checks.
+ pre-commit:
+ name: Run pre-commit
+ runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout@v4
+ - name: Check out repository
+ uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.11'
+ - name: Run pre-commit
+ uses: pre-commit/action@v3.0.1
+
+ code-ql:
+ name: CodeQL
+ needs:
+ - pre-commit
+ permissions:
+ security-events: write
+ runs-on: ubuntu-24.04
+ strategy:
+ fail-fast: false
+ matrix:
+ language:
+ - javascript
+ - python
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v3
+ with:
+ languages: ${{ matrix.language }}
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v3
+ with:
+ category: /language:${{ matrix.language }}
+
+ # Code tests.
+ run-tests:
+ name: Run tests
+ needs:
+ - pre-commit
+ runs-on: ubuntu-24.04
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
with:
python-version: '3.11'
@@ -24,20 +85,21 @@ jobs:
build-package:
name: Build package
- needs: run-pytest
- runs-on: ubuntu-latest
+ needs:
+ - run-tests
+ runs-on: ubuntu-24.04
steps:
- - uses: actions/checkout@v4
+ - name: Check out repository
+ uses: actions/checkout@v4
- name: Set up Python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: |
- python -m pip install --upgrade pip
- python -m pip install --upgrade poetry
+ python -m pip install --upgrade pip poetry
poetry install
- name: Build package
@@ -45,19 +107,54 @@ jobs:
poetry build --no-interaction
- name: Upload package artifacts
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
+ with:
+ name: dist
+ path: dist
+
+ test-build-package:
+ name: Test build on ${{ matrix.os }}
+ runs-on: ${{ matrix.os }}
+ needs: build-package
+ strategy:
+ matrix:
+ os:
+ - macos-latest
+ - ubuntu-24.04
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Set up Python
+ uses: actions/setup-python@v5
+ with:
+ python-version: '3.11'
+
+ - name: Get package artifacts
+ uses: actions/download-artifact@v4
with:
name: dist
path: dist
+ - name: Run tests
+ shell: bash
+ run: |
+ rm -rf nettacker
+ python -m pip install dist/*.whl
+ nettacker --version
+ python -m pip uninstall -y nettacker
+ python -m pip install dist/*.tar.gz
+ nettacker --version
+ # Docker related jobs.
test-docker-image:
name: Test Docker image
- # needs: publish-to-pypi
- runs-on: ubuntu-latest
+ needs:
+ - run-tests
+ runs-on: ubuntu-24.04
steps:
- - name: Check out the repo
- uses: actions/checkout@v4.1.2
+ - name: Check out repository
+ uses: actions/checkout@v4
- name: Build Docker image
run: docker build . -t nettacker
@@ -106,14 +203,62 @@ jobs:
poetry run python nettacker.py -i 127.0.0.1 -L fa -u user1,user2 -p pass1,pass2 --profile all \
-g 21,25,80,443 -t 1000 -T 3 --graph d3_tree_v2_graph -v --skip-service-discovery
- publish-to-docker-registry:
- name: Publish Docker image
+ test-docker-image-build:
+ name: Test Docker ${{ matrix.docker-version }} image build
+ needs:
+ - run-tests
+ runs-on: ubuntu-24.04
+ strategy:
+ matrix:
+ docker-version:
+ - '27.5.0-1~ubuntu.24.04~noble'
+ - '26.1.4-1~ubuntu.24.04~noble'
+ - '26.0.0-1~ubuntu.24.04~noble'
+ steps:
+ - name: Uninstall pre-installed Docker
+ run: |
+ sudo apt-get remove docker-ce docker-ce-cli
+
+ # https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
+ - name: Install Docker ${{ matrix.docker-version }}
+ run: |
+ sudo apt-get update
+ sudo apt-get install ca-certificates curl gnupg
+ sudo install -m 0755 -d /etc/apt/keyrings
+ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+ sudo chmod a+r /etc/apt/keyrings/docker.gpg
+ echo \
+ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
+ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
+ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+ sudo apt-get update
+ sudo apt-get install docker-ce=5:${{ matrix.docker-version }} docker-ce-cli=5:${{ matrix.docker-version }}
+
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Print Docker version
+ run: docker -v
+
+ - name: Build Nettacker image
+ run: docker build . -t nettacker
+
+ - name: Run pip install
+ run: docker run nettacker pip install .
+
+ publish-nettacker-dev-to-docker-registry:
+ name: Publish nettacker:dev Docker image
+ if: |
+ github.repository == 'owasp/nettacker' &&
+ github.event_name == 'push' &&
+ github.ref_name == 'master'
needs:
- test-docker-image
- runs-on: ubuntu-latest
+ - test-docker-image-build
+ runs-on: ubuntu-24.04
steps:
- - name: Checkout
- uses: actions/checkout@v4.1.0
+ - name: Check out repository
+ uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
@@ -121,10 +266,96 @@ jobs:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
- name: Build and push
- uses: docker/build-push-action@v5
+ uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
push: true
tags: owasp/nettacker:dev
+
+ publish-nettacker-latest-to-docker-registry:
+ name: Publish nettacker:latest Docker image
+ if: |
+ github.repository == 'owasp/nettacker' &&
+ github.event_name == 'push' &&
+ startsWith(github.event.ref, 'refs/tags/v')
+ needs:
+ - test-docker-image
+ - test-docker-image-build
+ runs-on: ubuntu-24.04
+ steps:
+ - name: Check out repository
+ uses: actions/checkout@v4
+
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v3
+
+ - name: Login to Docker Hub
+ uses: docker/login-action@v3
+ with:
+ username: ${{ secrets.DOCKER_HUB_USERNAME }}
+ password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
+
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v3
+
+ - name: Build and push
+ uses: docker/build-push-action@v6
+ with:
+ context: .
+ file: Dockerfile
+ push: true
+ tags: owasp/nettacker:latest
+
+ publish-to-test-pypi:
+ name: Publish Test PyPI package
+ if: |
+ github.repository == 'OWASP/Nettacker' &&
+ github.event_name == 'push' &&
+ github.ref_name == 'master'
+ environment: dev
+ needs:
+ - test-build-package
+ permissions:
+ contents: read
+ id-token: write
+ runs-on: ubuntu-24.04
+ steps:
+ - name: Get package artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: dist
+ path: dist
+
+ - name: Publish package distributions to Test PyPI
+ uses: pypa/gh-action-pypi-publish@release/v1
+ with:
+ repository-url: https://test.pypi.org/legacy/
+ skip-existing: true
+
+ publish-to-pypi:
+ name: Publish PyPI package
+ if: |
+ github.repository == 'OWASP/Nettacker' &&
+ github.event_name == 'push' &&
+ startsWith(github.event.ref, 'refs/tags/')
+ environment: release
+ needs:
+ - test-build-package
+ permissions:
+ contents: read
+ id-token: write
+ runs-on: ubuntu-24.04
+ steps:
+ - name: Get package artifacts
+ uses: actions/download-artifact@v4
+ with:
+ name: dist
+ path: dist
+
+ - name: Publish package distributions to PyPI
+ uses: pypa/gh-action-pypi-publish@release/v1
diff --git a/.github/workflows/codeql_analysis.yml b/.github/workflows/codeql_analysis.yml
deleted file mode 100644
index 2f55bec20..000000000
--- a/.github/workflows/codeql_analysis.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-# For most projects, this workflow file will not need changing; you simply need
-# to commit it to your repository.
-#
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-#
-# ******** NOTE ********
-# We have attempted to detect the languages in your repository. Please check
-# the `language` matrix defined below to confirm you have the correct set of
-# supported CodeQL languages.
-#
-name: "CodeQL"
-
-on:
- push:
- branches: [ "master" ]
- pull_request:
- # The branches below must be a subset of the branches above
- branches: [ "master" ]
- schedule:
- - cron: '00 0 * * *'
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- actions: read
- contents: read
- security-events: write
-
- strategy:
- fail-fast: false
- matrix:
- language: [ 'javascript', 'python' ]
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
- # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v4.1.2
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v3
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
-
- # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
- # queries: security-extended,security-and-quality
-
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v3
-
- # ℹ️ Command-line programs to run using the OS shell.
- # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
-
- # If the Autobuild fails above, remove it and uncomment the following three lines.
- # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance.
-
- # - run: |
- # echo "Run, Build Application using script"
- # ./location_of_script_within_repo/buildscript.sh
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v3
- with:
- category: "/language:${{matrix.language}}"
diff --git a/.github/workflows/publish_docker_image.yml b/.github/workflows/publish_docker_image.yml
deleted file mode 100644
index d9151d618..000000000
--- a/.github/workflows/publish_docker_image.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-# build and publish docker image from master branch
-name: Publish Docker image
-on:
- push:
- branches:
- - master
-jobs:
- push_to_registry:
- runs-on: ubuntu-latest
- steps:
- - name: Checkout
- uses: actions/checkout@v4.1.2
- - name: Set up QEMU
- uses: docker/setup-qemu-action@v3
- - name: Login to Docker Hub
- uses: docker/login-action@v3
- with:
- username: ${{ secrets.DOCKER_HUB_USERNAME }}
- password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- - name: Set up Docker Buildx
- uses: docker/setup-buildx-action@v3
- - name: Build and push
- uses: docker/build-push-action@v5
- with:
- context: .
- file: ./Dockerfile
- push: true
- tags: owasp/nettacker:latest
\ No newline at end of file
diff --git a/.github/workflows/pypi_publish.yml b/.github/workflows/pypi_publish.yml
deleted file mode 100644
index def761373..000000000
--- a/.github/workflows/pypi_publish.yml
+++ /dev/null
@@ -1,52 +0,0 @@
-name: "PYPI Publish"
-on:
- workflow_dispatch:
-jobs:
- publish-to-test-pypi:
- name: Publish to Test PyPI
-
- if: |
- ${{
- github.repository == 'owasp/nettacker' &&
- github.event_name == 'push' &&
- github.ref_name == 'implement-package-publishing-poc' }}
- # environment: test
- needs:
- - build-package
- permissions:
- contents: read
- id-token: write
- runs-on: ubuntu-latest
- steps:
- - name: Get package artifacts
- uses: actions/download-artifact@v3
- with:
- name: dist
- path: dist
-
- - name: Publish package distributions to Test PyPI
- uses: pypa/gh-action-pypi-publish@release/v1
- with:
- repository-url: https://test.pypi.org/legacy/
- publish-to-pypi:
- name: Publish to PyPI
- if: |
- ${{ github.repository == 'owasp/nettacker' &&
- github.event_name == 'push' &&
- github.ref_name == 'implement-package-publishing-poc' }}
- # environment: release
- needs:
- - build-package
- permissions:
- contents: read
- id-token: write
- runs-on: ubuntu-latest
- steps:
- - name: Get package artifacts
- uses: actions/download-artifact@v3
- with:
- name: dist
- path: dist
-
- - name: Publish package distributions to PyPI
- uses: pypa/gh-action-pypi-publish@release/v1
diff --git a/ADOPTERS.md b/ADOPTERS.md
new file mode 100644
index 000000000..91d006aa6
--- /dev/null
+++ b/ADOPTERS.md
@@ -0,0 +1,32 @@
+ # Adopters
+
+ This document highlights organizations, projects, and individuals using OWASP Nettacker in their security workflows.
+
+ ## Why list adopters?
+ Showcasing adoption encourages community engagement, provides credibility, and helps new users discover real-world use cases.
+
+ ## How to add yourself
+ If you or your organization use OWASP Nettacker, please:
+ 1. Fork this repository.
+ 2. Add your name, logo, and a short description below.
+ 3. Submit a pull request.
+
+ ## Organizations
+
+ | Logo | Name | Description | Website |
+ | ---- | ---- | ----------- | ------- |
+ | | **Example Acme Corp** | Uses Nettacker for automated penetration testing. | https://acme.example.com |
+ | | **Example SecurityCo** | Integrates Nettacker into their CI/CD pipeline for continuous security assessment. | https://securityco.example.org |
+
+ ## Community Projects
+
+ - **Example project X** — integrates Nettacker for infrastructure scanning in Kubernetes environments.
+ - **Example tool** — extends Nettacker modules for custom vulnerability detection.
+
+ ## Individuals
+
+ - **Alice Smith example person** — security researcher (Twitter: @alice)
+
+
+ ## Thank You
+ Thanks to everyone using and contributing to OWASP Nettacker! We appreciate your support and feedback.
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
index 419b40605..9f02c71dc 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,11 +1,18 @@
-FROM python:3.11.9-slim
-RUN apt update
+FROM python:3.11.11-slim
+
+RUN apt-get update && \
+ apt-get install -y gcc libssl-dev && \
+ apt-get clean && \
+ rm -rf /var/lib/apt/lists/* && \
+ pip install --upgrade pip poetry
+
WORKDIR /usr/src/owaspnettacker
-COPY . .
-RUN mkdir -p .data/results
-RUN apt-get update
-RUN apt-get install -y gcc libssl-dev
-RUN pip3 install --upgrade poetry
-RUN python -m poetry install
+
+COPY nettacker nettacker
+COPY nettacker.py poetry.lock pyproject.toml README.md ./
+
+RUN poetry install --no-cache --no-root --without dev --without test
+
ENV docker_env=true
+
CMD [ "poetry", "run", "python", "./nettacker.py" ]
diff --git a/Makefile b/Makefile
new file mode 100644
index 000000000..9cc0d5995
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,5 @@
+pre-commit:
+ pre-commit run --all-files
+
+test:
+ poetry run pytest
diff --git a/README.md b/README.md
index 2b3ffe3cb..e505089b2 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,12 @@
OWASP Nettacker
=========
-[](https://github.com/OWASP/Nettacker/actions/workflows/CI.yml)
+[](https://github.com/OWASP/Nettacker/actions/workflows/ci_cd.yml/badge.svg?branch=master)
[](https://github.com/OWASP/Nettacker/blob/master/LICENSE)
[](https://twitter.com/iotscan)

+[](https://nettacker.readthedocs.io/en/latest/?badge=latest)
[](https://github.com/OWASP/Nettacker)
+[](https://hub.docker.com/r/owasp/nettacker)
@@ -48,6 +50,15 @@ _____________
Thanks to our awesome contributors
============

+
+## Adopters
+
+We’re grateful to the organizations, community projects, and individuals who adopt and rely on OWASP Nettacker for their security workflows.
+
+If you’re using OWASP Nettacker in your organization or project, we’d love to hear from you! Feel free to add your details to the [ADOPTERS.md](ADOPTERS.md) file by submitting a pull request or reach out to us via GitHub issues. Let’s showcase how Nettacker is making a difference in the security community!
+
+ See [ADOPTERS.md](ADOPTERS.md) for details.
+
_____________
## ***IoT Scanner***
diff --git a/SECURITY.md b/SECURITY.md
index 0d16b2e7f..c5cdfa2e1 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -5,7 +5,7 @@ The latest release and the current master branch
## Reporting a Vulnerability
-Report a vulnerability to the project maintainers by rainsg a security advisory [here](https://github.com/OWASP/Nettacker/security/advisories/new)
+Report a vulnerability to the project maintainers by raising a security advisory [here](https://github.com/OWASP/Nettacker/security/advisories/new)
## Contacting Maintainers
The Project Leaders are listed on the OWASP Nettacker Project page here: [https://owasp.org/nettacker](https://owasp.org/nettacker)
diff --git a/docker-compose.yml b/docker-compose.yml
index 16cccb42f..c939f83a4 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,14 +1,13 @@
-version: "3"
-
services:
nettacker:
build:
context: .
- dockerfile: "Dockerfile"
- command: poetry run python nettacker.py --start-api --api-host 0.0.0.0
+ dockerfile: Dockerfile
+ command: poetry run python ./nettacker.py --start-api --api-host 0.0.0.0
+ container_name: nettacker
+ environment:
+ - docker_env=true
ports:
- 5000:5000
volumes:
- - ./:/usr/src/owaspnettacker
- environment:
- - docker_env=true
+ - ./nettacker:/usr/src/owaspnettacker/nettacker
diff --git a/docs/API.md b/docs/API.md
index 30c805f43..48406f95c 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -75,7 +75,7 @@ At the first, you must send an API key through the request each time you send a
To submit a new scan follow this step.
```python
->>> r = requests.post('https://127.0.0.1:5000/new/scan', data={"key": "8370bd0a0b9a98ac25b341833fb0fb07", "targets": "127.0.0.1,owasp.org", "scan_method": "port_scan"})
+>>> r = requests.post('https://127.0.0.1:5000/new/scan', data={"key": "8370bd0a0b9a98ac25b341833fb0fb07", "targets": "127.0.0.1,owasp.org", "selected_modules": "port_scan", "report_path_filename": "/home/test.html"})
>>> r.status_code
200
>>> import json
@@ -120,7 +120,7 @@ To submit a new scan follow this step.
}
```
-Please note, `targets` and `scan_method` are **necessary** to submit a new scan unless you modify the config file before! The `scan_method` could be empty if you define the `profile`.
+Please note, `targets` and `selected_modules` are **necessary** to submit a new scan unless you modify the config file before! The `selected_modules` could be empty if you define the `profile`.
```python
>>> r = requests.post('https://127.0.0.1:5000/new/scan', data={"key": "8370bd0a0b9a98ac25b341833fb0fb07"})
@@ -131,7 +131,7 @@ Please note, `targets` and `scan_method` are **necessary** to submit a new scan
>>> r.content
u'{"msg":"please choose your scan method!","status":"error"}\n'
->>> r = requests.post('https://127.0.0.1:5000/new/scan', data={"key": "09877e92c75f6afdca6ae61ad3f53727", "targets": "127.0.0.1", "scan_method": "dir_scan,port_scan"})
+>>> r = requests.post('https://127.0.0.1:5000/new/scan', data={"key": "09877e92c75f6afdca6ae61ad3f53727", "targets": "127.0.0.1", "selected_modules": "dir_scan,port_scan", "report_path_filename": "/home/test.html"})
>>> print json.dumps(json.loads(r.content), sort_keys=True, indent=4)
{
"backup_ports": null,
@@ -429,7 +429,7 @@ To enable session-based requests, like (e.g. Python `requests.session()` or brow
+
+