Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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.

FeedsContactPrivacy© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
dorkbot — Command-line tool to scan Google search results for vulnerabilities | Kitploit
Tools/GitHubGitHub/utiso/dorkbot
OSINT (Open Source Intelligence)ReconnaissanceVulnerability ScannersInformation GatheringWeb SecurityPenetration Testing
GitHubutiso/dorkbot

dorkbot

Command-line tool to scan Google search results for vulnerabilities

View Repository
5471051216 days agoReviewed by Kitploit

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share
Website

Image of Dorkbot

dorkbot

Scan Google (or other) search results for vulnerabilities.

dorkbot is a modular command-line tool for performing vulnerability scans against sets of webpages returned by Google search queries or other supported sources. It is broken up into two sets of modules:

  • Indexers - modules that return a list of targets
  • Scanners - modules that perform a vulnerability scan against each target

Targets are stored in a database as they are indexed. Once scanned, a standard JSON report is produced containing any vulnerabilities found. Indexing and scanning processes can be run separately or combined in a single command (up to one of each).

Quickstart

  • Create a Google API credential via the Developer Console
  • Create a Google Custom Search Engine and note the search engine ID, e.g. 012345678901234567891:abc12defg3h
$ pip3 install dorkbot wapiti3
$ dorkbot -i google_api -o key=your_api_credential_here -o engine=your_engine_id_here -o query="filetype:php inurl:id"
$ dorkbot -s wapiti

Help

 -h, --help            Show program (or specified module) help
  --show-defaults       Show default values in help output

Usage

usage: dorkbot [-c CONFIG] [-r DIRECTORY] [--source [SOURCE]]
               [--show-defaults] [--count COUNT] [--random] [-h] [--log LOG]
               [-v] [-V] [-d DATABASE] [-u] [--drop-tables]
               [--retries RETRIES] [--retry-on RETRY_ON] [--show-stats] [-l]
               [-n] [--list-sources] [--add-target TARGET]
               [--delete-target TARGET] [--flush-targets] [-m] [-e]
               [-i INDEXER] [-o INDEXER_ARG] [-s SCANNER] [-p SCANNER_ARG]
               [-t] [-x] [--mark-unscanned MARK_UNSCANNED] [-g] [-f]
               [--fingerprint-max FINGERPRINT_MAX] [--list-blocklist]
               [--add-blocklist-item ITEM] [--delete-blocklist-item ITEM]
               [--flush-blocklist] [-b EXTERNAL_BLOCKLIST]

options:
  -c, --config CONFIG   Configuration file
  -r, --directory DIRECTORY
                        Dorkbot directory (default location of db, tools,
                        reports)
  --source [SOURCE]     Label associated with targets
  --show-defaults       Show default values in help output
  -h, --help            Show program (or specified module) help
  --log LOG             Path to log file
  -v, --verbose         Enable verbose logging (can be used multiple times to
                        increase verbosity)
  -V, --version         Print version

retrieval:
  --count COUNT         number of targets to retrieve (0/unset = all)
  --random              retrieve targets in random order

database:
  -d, --database DATABASE
                        Database file/uri
  -u, --prune           Apply fingerprinting and blocklist without scanning
  --drop-tables         Delete and recreate tables
  --retries RETRIES     Number of retries when an operation fails
  --retry-on RETRY_ON   Error strings that should result in a retry (can be
                        used multiple times)
  --show-stats          Show the total/unscanned target and fingerprint counts

targets:
  -l, --list-targets    List targets in database
  -n, --unscanned-only  Only include unscanned targets
  --list-sources        List sources in database
  --add-target TARGET   Add a url to the target database
  --delete-target TARGET
                        Delete a url from the target database
  --flush-targets       Delete all targets
  -m, --delete-on-match
                        Delete target if it matches blocklist item
  -e, --delete-on-error
                        Delete target if error encountered while processing it

indexing:
  -i, --indexer INDEXER
                        Indexer module to use
  -o, --indexer-arg INDEXER_ARG
                        Pass an argument to the indexer module (can be used
                        multiple times)

scanning:
  -s, --scanner SCANNER
                        Scanner module to use
  -p, --scanner-arg SCANNER_ARG
                        Pass an argument to the scanner module (can be used
                        multiple times)
  -t, --test            Fetch next scannable target but do not mark it scanned
  -x, --reset-scanned   Reset scanned status of all targets
  --mark-unscanned MARK_UNSCANNED
                        Reset scanned status of given target

fingerprints:
  -g, --generate-fingerprints
                        Generate fingerprints for all targets
  -f, --flush-fingerprints
                        Delete all generated fingerprints
  --fingerprint-max FINGERPRINT_MAX
                        Maximum matches per fingerprint before deleting new
                        matches

blocklist:
  --list-blocklist      List internal blocklist entries
  --add-blocklist-item ITEM
                        Add an ip/host/regex pattern to the internal blocklist
  --delete-blocklist-item ITEM
                        Delete an item from the internal blocklist
  --flush-blocklist     Delete all internal blocklist items
  -b, --external-blocklist EXTERNAL_BLOCKLIST
                        Supplemental external blocklist file/db (can be used
                        multiple times)

Tools / Dependencies

Database drivers:

  • psycopg (pip install "psycopg[binary]") (preferred)
  • psycopg2 (pip install psycopg2-binary)

Scanners:

  • Wapiti (pip install wapiti3)
  • Spectre Scan
  • Arachni (deprecated)

As needed, dorkbot will search for tools in the following order:

  • Directory specified via relevant module option
  • Located in tools directory (within current directory, by default), with the subdirectory named after the tool
  • Available in the user's PATH (e.g. installed system-wide)

Files

All SQLite databases, tools, and reports are saved in the dorkbot directory, which by default is the current directory. You can force a specific directory with the --directory flag. Default file paths within this directory are as follows:

  • SQLite database file: dorkbot.db
  • External tools directory: tools/
  • Scan report output directory: reports/

Configuration files are by default read from ~/.config/dorkbot/ (Linux / MacOS) or in the Application Data folder (Windows), honoring $XDG_CONFIG_HOME / %APPDATA%. Default file paths within this directory are as follows:

  • Dorkbot configuration file: dorkbot.ini

Config File

The configuration file (dorkbot.ini) can be used to prepopulate certain command-line flags.

Example dorkbot.ini:

[dorkbot]
database=/opt/dorkbot/dorkbot.db
[dorkbot.indexers.wayback]
domain=example.com
[dorkbot.scanners.arachni]
path=/opt/arachni/bin
report_dir=/tmp/reports

Database

The target database stores urls to be scanned and the sources where they came from. It tracks each url's scanned status by building a list of fingerprints for each unique page + parameter set and comparing new targets to existing fingerprints. Fingerprints only need to be generated once and will be generated on demand as needed. Fingerprints and scanned status may be reset independently.

Supported database addresses:

  • postgresql://[connection_string]
  • sqlite3:///path/to/sqlite_file.db
  • /path/to/sqlite_file.db
  • :memory:

Note that for SQLite target databases the protocol is optional (it is still required for external blocklists). Additionally, SQLite's in-memory feature can be used to avoid writing to disk entirely by specifying a database address of ":memory:".

Download Tool