Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
shodscript — Automate exploit/PoC execution against Shodan search results - concurrent dispatch, filtering, structured output, and export. | Kitploit
Tools/GitHubGitHub/momenbasel/shodscript
ReconnaissanceVulnerability ScannersExploitationInformation GatheringPenetration Testing
GitHubmomenbasel/shodscript

shodscript

Automate exploit/PoC execution against Shodan search results - concurrent dispatch, filtering, structured output, and export.

View Repository
125 months agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

ShodScript

Automate exploit and PoC execution against Shodan search results. Query Shodan, filter targets, and run your scripts against every match - concurrently, with structured output and export.

Why

You have a PoC script that takes an IP and port. You want to run it against every host matching a Shodan query. ShodScript bridges the gap: search, filter, dispatch, collect results.

Install

root@kitploit:~
pip install git+https://github.com/momenbasel/shodscript.git

Or clone and install locally:

root@kitploit:~
git clone https://github.com/momenbasel/shodscript.git
cd shodscript
pip install -e .

Setup

Set your Shodan API key:

root@kitploit:~
export SHODAN_API_KEY="your-api-key-here"

Or pass it with --api-key / -k on every command.

Usage

Search Shodan

root@kitploit:~
# Table output
shodscript search "apache 2.4.49"

# Filter by port and country
shodscript search "nginx" --port 443 --country US --limit 50

# JSON output
shodscript search "apache" --json

Run a script against results

root@kitploit:~
# Run check_http.py against each host matching "apache 2.4.49"
shodscript run "apache 2.4.49" ./exploit.py

# 20 concurrent workers, 60s timeout per target
shodscript run "apache 2.4.49" ./exploit.py -w 20 -t 60

# Filter to port 80 in Germany, save results
shodscript run "apache" ./exploit.py --port 80 --country DE -o results.json

# CSV export
shodscript run "nginx" ./check.py -o results.csv --format csv

# Only show successful hits
shodscript run "apache" ./exploit.py --quiet

How targets are passed to your script

Three modes via --pass-via:

root@kitploit:~
# Pass via environment variables
shodscript run "nginx" ./script.py --pass-via env

# Pass via stdin
shodscript run "nginx" ./script.py --pass-via stdin

# Forward extra arguments to the script
shodscript run "nginx" ./script.py -e "--verbose" -e "--ssl"

Dump IPs (pipe-friendly)

root@kitploit:~
# One IP per line - pipe to other tools
shodscript ips "apache 2.4.49" | xargs -I{} curl -s http://{}

# Include port
shodscript ips "apache 2.4.49" --with-port

# Pipe to nuclei, httpx, etc.
shodscript ips "apache 2.4.49" -n 500 | httpx -silent

Host lookup

root@kitploit:~
shodscript host 1.2.3.4
shodscript host 1.2.3.4 --json

Account info

root@kitploit:~
shodscript info

Writing compatible scripts

Your script just needs to accept an IP and port. Minimal example:

root@kitploit:~
#!/usr/bin/env python3
import sys

ip = sys.argv[1]
port = int(sys.argv[2])

# Your exploit/check logic here
print(f"[+] {ip}:{port} - vulnerable")
# Exit 0 = success (marked green), non-zero = failure (marked red)

See the examples/ directory for more patterns including env-based and banner grabbing scripts.

Export formats

Results can be saved as JSON, JSONL, or CSV:

root@kitploit:~
shodscript run "query" ./script.py -o results.json            # JSON (default)
shodscript run "query" ./script.py -o results.jsonl --format jsonl  # One JSON object per line
shodscript run "query" ./script.py -o results.csv --format csv     # CSV

Each record contains: ip, port, host, org, country, returncode, success, stdout, stderr, elapsed, error.

License

MIT

Disclaimer

For authorized security testing and research only.

Download Tool
ModeHow your script receives the target
arg (default)python3 script.py <ip> <port>
envTARGET_IP, TARGET_PORT, TARGET_HOST environment variables
stdinip:port\n written to stdin