acido


Nameacido JSON
Version 0.41.1 PyPI version JSON
download
home_pagehttps://github.com/merabytes/acido
SummaryAzure Container Instance Distributed Operations
upload_time2025-11-03 02:59:50
maintainerNone
docs_urlNone
authorXavier Álvarez
requires_pythonNone
licenseMIT
keywords security cloud computing red team pentesting
VCS
bugtrack_url
requirements azure-cli azure-core azure-mgmt-core azure-identity azure-keyvault-secrets azure-storage-blob azure-mgmt-network azure-mgmt-containerinstance websockets huepy msrestazure beaupy tqdm requests cryptography
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # acido  🔥
[![GitHub release](https://img.shields.io/github/v/release/merabytes/acido?include_prereleases&color=blueviolet)](https://github.com/merabytes/acido/releases)
[![Build](https://img.shields.io/github/actions/workflow/status/merabytes/acido/ci.yml?label=build&logo=github)](https://github.com/merabytes/acido/actions)
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
[![Live Demo](https://img.shields.io/badge/docs-online-blue?logo=readthedocs)](https://secrets.merabytes.com)
[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat&logo=github)](https://github.com/merabytes/acido/pulls)
[![Twitter Follow](https://img.shields.io/twitter/follow/merabytes?style=social)](https://twitter.com/merabytes)


> **The open-source engine powering [Secrets by Merabytes™](https://secrets.merabytes.com)**  
> Disrupting how secrets, tokens, and one-time credentials are shared — forever.

acido isn’t just another CLI tool. It’s the backbone of an infrastructure-first rethink of how secrets, tokens and one-time credentials are built, deployed and consumed.

Already powering Secrets by Merabytes™ — the first truly open-source secret-sharing app — acido installs like a developer tool and scales like an enterprise service.

Deploy fleets of workloads on Azure Container Instances in minutes.

Leverage full transparency: open source, auditable, no lock-in.

Built for the next generation of identity, secrets and “one-time everything”.

Whether you’re building a secure secret-sharing system, a distributor of short-lived credentials, or simply pushing containerised tasks to the edge — acido gives you the power, the scale and the freedom of open source.

## Table of Contents

- [Why Acido?](#why-acido)
- [Installation](#installation)
- [Quick Start](#quick-start)
- [CLI Reference](#cli-reference)
- [Examples](#examples)
- [AWS Lambda Support](#aws-lambda-support)
- [Secrets Sharing Service](#secrets-sharing-service)
- [Credits](#credits)

## Why Acido?

**Speed**: Distribute scans across 10, 50, or 100+ containers. What takes 24 hours on one machine completes in minutes with parallelization.

**Cost-Effective**: Pay only when scanning. Spin up 100 containers for 30 minutes, then destroy them - no idle infrastructure costs.

**Tool Support**: Works with any containerized security tool (nmap, masscan, Nuclei, Nikto, gowitness, etc.).

**Simple**: Split targets automatically, deploy containers, collect results, cleanup - all automated.

```
+---------------------------+
| 1. Prepare targets file   |
|    urls.txt               |
+------------+--------------+
             |
             v
+---------------------------+
| 2. Configure (first time) |
|    acido configure        |
+------------+--------------+
             |
             v
+-----------------------------+
| 3. Create nuclei image      |
|    `acido create nuclei     |
|    --image projectdiscovery/|
|          nuclei:latest`     |
+------------+----------------+
             |
             v
+----------------------------------------------+
| 4. Run distributed scan fleet                |
|    ` acido fleet nuclei-scan                 |
|      -n 10                                   |
|      -im nuclei                              |
|      -t "nuclei -list input"                 |
|      -i urls.txt                             |
|      -o results                              |
|      --rm-when-done (optional auto cleanup)` |
+------------+---------------------------------+
             |
             v
+---------------------------+
| 5. View results           |
|    Open 'results' file    |
+------------+--------------+
             |
             v
+------------------------+
| 6. Cleanup acido fleet |-- Yes (auto --rm-when-done)
+------------------------+
             |
        No   v
+---------------------------+
| Manual cleanup            |
| `acido rm nuclei-scan`    |
+---------------------------+

(If --rm-when-done was used, skip manual cleanup.)
```

Inspired by [axiom](https://github.com/pry0cc/axiom).

## Installation

**Prerequisites:**
- Python 3.7+
- Docker
- Azure account ([free tier](https://azure.microsoft.com/free/) works)

**Setup:**

1. Install acido:
```bash
pip install acido
```

2. Login to Azure:
```bash
az login
```

3. Create Azure Container Registry:
```bash
az acr create --resource-group MyResourceGroup --name myregistry --sku Basic
```

4. Configure acido:
```bash
acido -c
# or
acido configure
```
Provide: resource group name, registry server (e.g., `myregistry.azurecr.io`), registry username, registry password, and storage account name.

**Note:** For CI/CD pipelines and Lambda deployments, you can use environment variables instead:
- `AZURE_RESOURCE_GROUP`
- `IMAGE_REGISTRY_SERVER`
- `IMAGE_REGISTRY_USERNAME`
- `IMAGE_REGISTRY_PASSWORD`
- `STORAGE_ACCOUNT_NAME`
- `STORAGE_ACCOUNT_KEY` (optional, if not provided will fetch from Azure)

See [.github/AZURE_PERMISSIONS.md](.github/AZURE_PERMISSIONS.md) for Service Principal setup.

## Quick Start

1. Create a target list (`targets.txt`):
```
facebook.com
uber.com
paypal.com
```

2. Create scanning image:
```bash
# Using short name (will look for 'nmap' image)
acido create nmap

# Or specify the full Docker image URL
acido create nuclei --image projectdiscovery/nuclei:latest
```

3. Run distributed scan (Docker-like syntax):
```bash
acido fleet nmap-scan \
    -n 3 \
    -im nmap \
    -t 'nmap -iL input -p 0-1000' \
    -i targets.txt \
    -o output \
    --rm-when-done
```

Or using the classic syntax (still supported):
```bash
acido -f nmap-scan \
    -n 3 \
    -im nmap \
    -t 'nmap -iL input -p 0-1000' \
    -i targets.txt \
    -o output \
    --rm-when-done
```

Parameters:
- `fleet` / `-f` Fleet name
- `-n` Number of container instances
- `-im` Image name (e.g., 'nmap', 'nuclei:latest', or full URL)
- `-t` Command to execute
- `-i` Input file (auto-split across containers)
- `-o` Output file
- `--rm-when-done` Auto-delete containers after completion

Results saved to `output.json` and `all_output.txt`.

## CLI Reference

Acido now supports Docker-like subcommands for a more intuitive experience:

### Subcommands

```bash
# Create acido-compatible image
acido create <name> [--image <full-image-url>]

# Configure acido
acido configure

# Deploy a fleet of containers
acido fleet <fleet-name> [options]

# List all container instances
acido ls

# Remove container instances
acido rm <name-or-pattern>

# Select instances by pattern
acido select <pattern>

# Execute command on selected instances  
acido exec <command> [options]
```

### Fleet Command Options

```bash
acido fleet <fleet-name> [options]

Options:
  -n, --num-instances NUM   Number of container instances
  -im, --image IMAGE        Image name (e.g., 'nmap', 'nuclei:latest')
  -t, --task TASK          Command to execute
  -i, --input-file FILE    Input file (auto-split across containers)
  -w, --wait SECONDS       Max timeout in seconds
  -o, --output FILE        Save output to file
  --format FORMAT          Output format: txt or json (default: txt)
  -q, --quiet              Quiet mode with progress bar
  --rm-when-done          Remove containers after completion
```

### Legacy Flags (Still Supported)

For backward compatibility, all original flags are still supported:

```
usage: acido [-h] [-c] [-f FLEET] [-im IMAGE_NAME] [--create-ip CREATE_IP] 
             [--ip] [-n NUM_INSTANCES] [-t TASK] [-e EXEC_CMD] 
             [-i INPUT_FILE] [-w WAIT] [-s SELECT] [-l] [-r REMOVE] [-in]
             [-sh SHELL] [-d DOWNLOAD_INPUT] [-o WRITE_TO_FILE] [-rwd]
             {create,configure,fleet,ls,rm,select,exec}

positional arguments:
  {create,configure,fleet,ls,rm,select,exec}
                        Subcommands

optional arguments:
  -h, --help            Show help message
  -c, --config          Configure acido
  -f FLEET              Fleet name (deprecated: use 'acido fleet' subcommand)
  -im IMAGE_NAME        Deploy specific image
  --create IMAGE        Create acido-compatible image (alternative syntax)
  --create-ip NAME      Create IPv4 address for routing
  --ip                  Use existing IPv4 address
  -n NUM                Number of instances
  -t TASK               Command to execute
  -e EXEC_CMD           Execute on selected instances
  -i INPUT_FILE         Input file for task
  -w WAIT               Max timeout
  -s SELECT             Select instances by name/regex
  -l, --list            List all instances (deprecated: use 'acido ls')
  -r REMOVE             Remove instances by name/regex (deprecated: use 'acido rm')
  -in, --interactive    Interactive session
  -sh SHELL             Execute and upload to blob
  -d DOWNLOAD           Download from blob
  -o OUTPUT             Save output in JSON
  -rwd, --rm-when-done  Remove containers after completion
```


## Examples

### Distributed Nmap Scan

Scan 1,000 hosts with 20 containers using new Docker-like syntax:

```bash
acido fleet nmap-fleet \
    -n 20 \
    -im nmap \
    -t 'nmap -iL input -p- --min-rate 1000' \
    -i targets.txt \
    -o output \
    --rm-when-done
```

Or using classic syntax:
```bash
acido -f nmap-fleet \
    -n 20 \
    -im nmap \
    -t 'nmap -iL input -p- --min-rate 1000' \
    -i targets.txt \
    -o output \
    --rm-when-done
```

### Nuclei Vulnerability Scan

Scan 10,000 URLs with 50 containers:

```bash
acido fleet nuclei-scan \
    -n 50 \
    -im nuclei \
    -t 'nuclei -list input -t /nuclei-templates/' \
    -i urls.txt \
    -o results
```

### Masscan Port Discovery

Scan entire network with 100 containers:

```bash
acido fleet masscan \
    -n 100 \
    -im masscan \
    -t 'masscan -iL input -p0-65535 --rate 10000' \
    -i networks.txt \
    -o masscan-results
```

### Fleet Management

List all running container instances:
```bash
acido ls
```

Remove specific fleet:
```bash
acido rm nmap-fleet
```

Remove all fleets matching pattern:
```bash
acido rm 'scan-*'
```

### Single IP Routing

Route all containers through one IP for whitelisting:

```bash
# Create IP
acido --create-ip pentest-ip

# Deploy with IP routing
acido fleet scan -n 50 --ip \
    -im nmap \
    -t 'nmap -iL input -p-' \
    -i targets.txt
```

## AWS Lambda Support

Acido can be deployed as an AWS Lambda function, enabling serverless security scanning workflows.

**Key Features:**
- Serverless invocation via AWS Lambda
- Automatic container provisioning in Azure
- JSON-based event interface
- Continuous deployment via GitHub Actions

**Quick Example:**
```json
{
  "image": "nmap",
  "targets": ["merabytes.com", "uber.com", "facebook.com"],
  "task": "nmap -iL input -p 0-1000"
}
```

**Documentation:**
- See [LAMBDA.md](LAMBDA.md) for complete deployment and usage instructions
- Example payload: [examples/example_lambda_payload.json](examples/example_lambda_payload.json)
- Automatic deployment workflow: [.github/workflows/deploy-lambda.yml](.github/workflows/deploy-lambda.yml)

## Secrets Sharing Service

Acido includes a OneTimeSecret-like service for secure secrets sharing via AWS Lambda and Azure KeyVault.

**Key Features:**
- Generate UUID-based secrets
- One-time access (auto-delete after retrieval)
- Secure storage in Azure KeyVault
- Serverless AWS Lambda deployment
- Optional CloudFlare Turnstile bot protection

**Quick Example:**

Create a secret:
```json
{
  "action": "create",
  "secret": "Your secret message here"
}
```

Retrieve the secret (one-time only):
```json
{
  "action": "retrieve",
  "uuid": "generated-uuid-from-create"
}
```

**Documentation:**
- See [SECRETS.md](SECRETS.md) for complete documentation
- Example payloads: [examples/example_lambda_secrets_create_payload.json](examples/example_lambda_secrets_create_payload.json) and [examples/example_lambda_secrets_retrieve_payload.json](examples/example_lambda_secrets_retrieve_payload.json)
- Automatic deployment workflow: [.github/workflows/deploy-lambda-secrets.yml](.github/workflows/deploy-lambda-secrets.yml)

## Credits

* Xavier Álvarez (xalvarez@merabytes.com)
* Juan Ramón Higueras Pica (jrhigueras@dabbleam.com)

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/merabytes/acido",
    "name": "acido",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "Security, Cloud Computing, Red Team, Pentesting",
    "author": "Xavier \u00c1lvarez",
    "author_email": "xalvarez@merabytes.com",
    "download_url": "https://files.pythonhosted.org/packages/15/4d/be40e994519b13ca69ec7f1fce54cfa4b0a78ea487c764def0b9484e8198/acido-0.41.1.tar.gz",
    "platform": null,
    "description": "# acido &nbsp;\ud83d\udd25\n[![GitHub release](https://img.shields.io/github/v/release/merabytes/acido?include_prereleases&color=blueviolet)](https://github.com/merabytes/acido/releases)\n[![Build](https://img.shields.io/github/actions/workflow/status/merabytes/acido/ci.yml?label=build&logo=github)](https://github.com/merabytes/acido/actions)\n[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)\n[![Live Demo](https://img.shields.io/badge/docs-online-blue?logo=readthedocs)](https://secrets.merabytes.com)\n[![Contributions welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg?style=flat&logo=github)](https://github.com/merabytes/acido/pulls)\n[![Twitter Follow](https://img.shields.io/twitter/follow/merabytes?style=social)](https://twitter.com/merabytes)\n\n\n> **The open-source engine powering [Secrets by Merabytes\u2122](https://secrets.merabytes.com)**  \n> Disrupting how secrets, tokens, and one-time credentials are shared \u2014 forever.\n\nacido isn\u2019t just another CLI tool. It\u2019s the backbone of an infrastructure-first rethink of how secrets, tokens and one-time credentials are built, deployed and consumed.\n\nAlready powering Secrets by Merabytes\u2122 \u2014 the first truly open-source secret-sharing app \u2014 acido installs like a developer tool and scales like an enterprise service.\n\nDeploy fleets of workloads on Azure Container Instances in minutes.\n\nLeverage full transparency: open source, auditable, no lock-in.\n\nBuilt for the next generation of identity, secrets and \u201cone-time everything\u201d.\n\nWhether you\u2019re building a secure secret-sharing system, a distributor of short-lived credentials, or simply pushing containerised tasks to the edge \u2014 acido gives you the power, the scale and the freedom of open source.\n\n## Table of Contents\n\n- [Why Acido?](#why-acido)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n- [CLI Reference](#cli-reference)\n- [Examples](#examples)\n- [AWS Lambda Support](#aws-lambda-support)\n- [Secrets Sharing Service](#secrets-sharing-service)\n- [Credits](#credits)\n\n## Why Acido?\n\n**Speed**: Distribute scans across 10, 50, or 100+ containers. What takes 24 hours on one machine completes in minutes with parallelization.\n\n**Cost-Effective**: Pay only when scanning. Spin up 100 containers for 30 minutes, then destroy them - no idle infrastructure costs.\n\n**Tool Support**: Works with any containerized security tool (nmap, masscan, Nuclei, Nikto, gowitness, etc.).\n\n**Simple**: Split targets automatically, deploy containers, collect results, cleanup - all automated.\n\n```\n+---------------------------+\n| 1. Prepare targets file   |\n|    urls.txt               |\n+------------+--------------+\n             |\n             v\n+---------------------------+\n| 2. Configure (first time) |\n|    acido configure        |\n+------------+--------------+\n             |\n             v\n+-----------------------------+\n| 3. Create nuclei image      |\n|    `acido create nuclei     |\n|    --image projectdiscovery/|\n|          nuclei:latest`     |\n+------------+----------------+\n             |\n             v\n+----------------------------------------------+\n| 4. Run distributed scan fleet                |\n|    ` acido fleet nuclei-scan                 |\n|      -n 10                                   |\n|      -im nuclei                              |\n|      -t \"nuclei -list input\"                 |\n|      -i urls.txt                             |\n|      -o results                              |\n|      --rm-when-done (optional auto cleanup)` |\n+------------+---------------------------------+\n             |\n             v\n+---------------------------+\n| 5. View results           |\n|    Open 'results' file    |\n+------------+--------------+\n             |\n             v\n+------------------------+\n| 6. Cleanup acido fleet |-- Yes (auto --rm-when-done)\n+------------------------+\n             |\n        No   v\n+---------------------------+\n| Manual cleanup            |\n| `acido rm nuclei-scan`    |\n+---------------------------+\n\n(If --rm-when-done was used, skip manual cleanup.)\n```\n\nInspired by [axiom](https://github.com/pry0cc/axiom).\n\n## Installation\n\n**Prerequisites:**\n- Python 3.7+\n- Docker\n- Azure account ([free tier](https://azure.microsoft.com/free/) works)\n\n**Setup:**\n\n1. Install acido:\n```bash\npip install acido\n```\n\n2. Login to Azure:\n```bash\naz login\n```\n\n3. Create Azure Container Registry:\n```bash\naz acr create --resource-group MyResourceGroup --name myregistry --sku Basic\n```\n\n4. Configure acido:\n```bash\nacido -c\n# or\nacido configure\n```\nProvide: resource group name, registry server (e.g., `myregistry.azurecr.io`), registry username, registry password, and storage account name.\n\n**Note:** For CI/CD pipelines and Lambda deployments, you can use environment variables instead:\n- `AZURE_RESOURCE_GROUP`\n- `IMAGE_REGISTRY_SERVER`\n- `IMAGE_REGISTRY_USERNAME`\n- `IMAGE_REGISTRY_PASSWORD`\n- `STORAGE_ACCOUNT_NAME`\n- `STORAGE_ACCOUNT_KEY` (optional, if not provided will fetch from Azure)\n\nSee [.github/AZURE_PERMISSIONS.md](.github/AZURE_PERMISSIONS.md) for Service Principal setup.\n\n## Quick Start\n\n1. Create a target list (`targets.txt`):\n```\nfacebook.com\nuber.com\npaypal.com\n```\n\n2. Create scanning image:\n```bash\n# Using short name (will look for 'nmap' image)\nacido create nmap\n\n# Or specify the full Docker image URL\nacido create nuclei --image projectdiscovery/nuclei:latest\n```\n\n3. Run distributed scan (Docker-like syntax):\n```bash\nacido fleet nmap-scan \\\n    -n 3 \\\n    -im nmap \\\n    -t 'nmap -iL input -p 0-1000' \\\n    -i targets.txt \\\n    -o output \\\n    --rm-when-done\n```\n\nOr using the classic syntax (still supported):\n```bash\nacido -f nmap-scan \\\n    -n 3 \\\n    -im nmap \\\n    -t 'nmap -iL input -p 0-1000' \\\n    -i targets.txt \\\n    -o output \\\n    --rm-when-done\n```\n\nParameters:\n- `fleet` / `-f` Fleet name\n- `-n` Number of container instances\n- `-im` Image name (e.g., 'nmap', 'nuclei:latest', or full URL)\n- `-t` Command to execute\n- `-i` Input file (auto-split across containers)\n- `-o` Output file\n- `--rm-when-done` Auto-delete containers after completion\n\nResults saved to `output.json` and `all_output.txt`.\n\n## CLI Reference\n\nAcido now supports Docker-like subcommands for a more intuitive experience:\n\n### Subcommands\n\n```bash\n# Create acido-compatible image\nacido create <name> [--image <full-image-url>]\n\n# Configure acido\nacido configure\n\n# Deploy a fleet of containers\nacido fleet <fleet-name> [options]\n\n# List all container instances\nacido ls\n\n# Remove container instances\nacido rm <name-or-pattern>\n\n# Select instances by pattern\nacido select <pattern>\n\n# Execute command on selected instances  \nacido exec <command> [options]\n```\n\n### Fleet Command Options\n\n```bash\nacido fleet <fleet-name> [options]\n\nOptions:\n  -n, --num-instances NUM   Number of container instances\n  -im, --image IMAGE        Image name (e.g., 'nmap', 'nuclei:latest')\n  -t, --task TASK          Command to execute\n  -i, --input-file FILE    Input file (auto-split across containers)\n  -w, --wait SECONDS       Max timeout in seconds\n  -o, --output FILE        Save output to file\n  --format FORMAT          Output format: txt or json (default: txt)\n  -q, --quiet              Quiet mode with progress bar\n  --rm-when-done          Remove containers after completion\n```\n\n### Legacy Flags (Still Supported)\n\nFor backward compatibility, all original flags are still supported:\n\n```\nusage: acido [-h] [-c] [-f FLEET] [-im IMAGE_NAME] [--create-ip CREATE_IP] \n             [--ip] [-n NUM_INSTANCES] [-t TASK] [-e EXEC_CMD] \n             [-i INPUT_FILE] [-w WAIT] [-s SELECT] [-l] [-r REMOVE] [-in]\n             [-sh SHELL] [-d DOWNLOAD_INPUT] [-o WRITE_TO_FILE] [-rwd]\n             {create,configure,fleet,ls,rm,select,exec}\n\npositional arguments:\n  {create,configure,fleet,ls,rm,select,exec}\n                        Subcommands\n\noptional arguments:\n  -h, --help            Show help message\n  -c, --config          Configure acido\n  -f FLEET              Fleet name (deprecated: use 'acido fleet' subcommand)\n  -im IMAGE_NAME        Deploy specific image\n  --create IMAGE        Create acido-compatible image (alternative syntax)\n  --create-ip NAME      Create IPv4 address for routing\n  --ip                  Use existing IPv4 address\n  -n NUM                Number of instances\n  -t TASK               Command to execute\n  -e EXEC_CMD           Execute on selected instances\n  -i INPUT_FILE         Input file for task\n  -w WAIT               Max timeout\n  -s SELECT             Select instances by name/regex\n  -l, --list            List all instances (deprecated: use 'acido ls')\n  -r REMOVE             Remove instances by name/regex (deprecated: use 'acido rm')\n  -in, --interactive    Interactive session\n  -sh SHELL             Execute and upload to blob\n  -d DOWNLOAD           Download from blob\n  -o OUTPUT             Save output in JSON\n  -rwd, --rm-when-done  Remove containers after completion\n```\n\n\n## Examples\n\n### Distributed Nmap Scan\n\nScan 1,000 hosts with 20 containers using new Docker-like syntax:\n\n```bash\nacido fleet nmap-fleet \\\n    -n 20 \\\n    -im nmap \\\n    -t 'nmap -iL input -p- --min-rate 1000' \\\n    -i targets.txt \\\n    -o output \\\n    --rm-when-done\n```\n\nOr using classic syntax:\n```bash\nacido -f nmap-fleet \\\n    -n 20 \\\n    -im nmap \\\n    -t 'nmap -iL input -p- --min-rate 1000' \\\n    -i targets.txt \\\n    -o output \\\n    --rm-when-done\n```\n\n### Nuclei Vulnerability Scan\n\nScan 10,000 URLs with 50 containers:\n\n```bash\nacido fleet nuclei-scan \\\n    -n 50 \\\n    -im nuclei \\\n    -t 'nuclei -list input -t /nuclei-templates/' \\\n    -i urls.txt \\\n    -o results\n```\n\n### Masscan Port Discovery\n\nScan entire network with 100 containers:\n\n```bash\nacido fleet masscan \\\n    -n 100 \\\n    -im masscan \\\n    -t 'masscan -iL input -p0-65535 --rate 10000' \\\n    -i networks.txt \\\n    -o masscan-results\n```\n\n### Fleet Management\n\nList all running container instances:\n```bash\nacido ls\n```\n\nRemove specific fleet:\n```bash\nacido rm nmap-fleet\n```\n\nRemove all fleets matching pattern:\n```bash\nacido rm 'scan-*'\n```\n\n### Single IP Routing\n\nRoute all containers through one IP for whitelisting:\n\n```bash\n# Create IP\nacido --create-ip pentest-ip\n\n# Deploy with IP routing\nacido fleet scan -n 50 --ip \\\n    -im nmap \\\n    -t 'nmap -iL input -p-' \\\n    -i targets.txt\n```\n\n## AWS Lambda Support\n\nAcido can be deployed as an AWS Lambda function, enabling serverless security scanning workflows.\n\n**Key Features:**\n- Serverless invocation via AWS Lambda\n- Automatic container provisioning in Azure\n- JSON-based event interface\n- Continuous deployment via GitHub Actions\n\n**Quick Example:**\n```json\n{\n  \"image\": \"nmap\",\n  \"targets\": [\"merabytes.com\", \"uber.com\", \"facebook.com\"],\n  \"task\": \"nmap -iL input -p 0-1000\"\n}\n```\n\n**Documentation:**\n- See [LAMBDA.md](LAMBDA.md) for complete deployment and usage instructions\n- Example payload: [examples/example_lambda_payload.json](examples/example_lambda_payload.json)\n- Automatic deployment workflow: [.github/workflows/deploy-lambda.yml](.github/workflows/deploy-lambda.yml)\n\n## Secrets Sharing Service\n\nAcido includes a OneTimeSecret-like service for secure secrets sharing via AWS Lambda and Azure KeyVault.\n\n**Key Features:**\n- Generate UUID-based secrets\n- One-time access (auto-delete after retrieval)\n- Secure storage in Azure KeyVault\n- Serverless AWS Lambda deployment\n- Optional CloudFlare Turnstile bot protection\n\n**Quick Example:**\n\nCreate a secret:\n```json\n{\n  \"action\": \"create\",\n  \"secret\": \"Your secret message here\"\n}\n```\n\nRetrieve the secret (one-time only):\n```json\n{\n  \"action\": \"retrieve\",\n  \"uuid\": \"generated-uuid-from-create\"\n}\n```\n\n**Documentation:**\n- See [SECRETS.md](SECRETS.md) for complete documentation\n- Example payloads: [examples/example_lambda_secrets_create_payload.json](examples/example_lambda_secrets_create_payload.json) and [examples/example_lambda_secrets_retrieve_payload.json](examples/example_lambda_secrets_retrieve_payload.json)\n- Automatic deployment workflow: [.github/workflows/deploy-lambda-secrets.yml](.github/workflows/deploy-lambda-secrets.yml)\n\n## Credits\n\n* Xavier \u00c1lvarez (xalvarez@merabytes.com)\n* Juan Ram\u00f3n Higueras Pica (jrhigueras@dabbleam.com)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Azure Container Instance Distributed Operations",
    "version": "0.41.1",
    "project_urls": {
        "Homepage": "https://github.com/merabytes/acido"
    },
    "split_keywords": [
        "security",
        " cloud computing",
        " red team",
        " pentesting"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "353f44c1a2f9b5545ec77d304a6079e23282fa728d9559bebca4b7cf7f8d28fb",
                "md5": "b1832af3764960681be8403f13e01b46",
                "sha256": "6c0c710598d8f536fa6874d9b79663c37c90374d92d422608da2943f3445bbaf"
            },
            "downloads": -1,
            "filename": "acido-0.41.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "b1832af3764960681be8403f13e01b46",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 38664,
            "upload_time": "2025-11-03T02:59:49",
            "upload_time_iso_8601": "2025-11-03T02:59:49.530848Z",
            "url": "https://files.pythonhosted.org/packages/35/3f/44c1a2f9b5545ec77d304a6079e23282fa728d9559bebca4b7cf7f8d28fb/acido-0.41.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "154dbe40e994519b13ca69ec7f1fce54cfa4b0a78ea487c764def0b9484e8198",
                "md5": "e172599f22d21c706b24d9b040b2920b",
                "sha256": "69a4bbc8a79f7cc239a5852bc92bb8dd1e676612b70df9d2d4a21c37013d828d"
            },
            "downloads": -1,
            "filename": "acido-0.41.1.tar.gz",
            "has_sig": false,
            "md5_digest": "e172599f22d21c706b24d9b040b2920b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 49002,
            "upload_time": "2025-11-03T02:59:50",
            "upload_time_iso_8601": "2025-11-03T02:59:50.898560Z",
            "url": "https://files.pythonhosted.org/packages/15/4d/be40e994519b13ca69ec7f1fce54cfa4b0a78ea487c764def0b9484e8198/acido-0.41.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-03 02:59:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "merabytes",
    "github_project": "acido",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "azure-cli",
            "specs": []
        },
        {
            "name": "azure-core",
            "specs": []
        },
        {
            "name": "azure-mgmt-core",
            "specs": []
        },
        {
            "name": "azure-identity",
            "specs": []
        },
        {
            "name": "azure-keyvault-secrets",
            "specs": []
        },
        {
            "name": "azure-storage-blob",
            "specs": []
        },
        {
            "name": "azure-mgmt-network",
            "specs": []
        },
        {
            "name": "azure-mgmt-containerinstance",
            "specs": []
        },
        {
            "name": "websockets",
            "specs": []
        },
        {
            "name": "huepy",
            "specs": []
        },
        {
            "name": "msrestazure",
            "specs": []
        },
        {
            "name": "beaupy",
            "specs": [
                [
                    "==",
                    "3.8.2"
                ]
            ]
        },
        {
            "name": "tqdm",
            "specs": []
        },
        {
            "name": "requests",
            "specs": []
        },
        {
            "name": "cryptography",
            "specs": []
        }
    ],
    "lcname": "acido"
}
        
Elapsed time: 2.10878s