bbot 2.4.0.5977rc0__tar.gz → 2.4.0.5986rc0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bbot might be problematic. Click here for more details.
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/PKG-INFO +1 -1
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/__init__.py +1 -1
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/cli.py +15 -1
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/base.py +42 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/nuclei.py +1 -1
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/excavate.py +52 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/args.py +13 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_cli.py +14 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/pyproject.toml +1 -1
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/LICENSE +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/README.md +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/config/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/config/files.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/config/logger.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/core.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/engine.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/event/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/event/base.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/event/helpers.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/flags.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/bloom.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/command.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/diff.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/files.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/libmagic.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/process.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/regexes.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/url.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/web.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/modules.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/multiprocess.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/shared_deps.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/db/sql/models.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/defaults.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/errors.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/logger.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/apkpure.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/baddns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bevigil.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/builtwith.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bypass403.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/c99.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/censys.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/certspotter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/chaos.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/code_repository.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/credshed.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/crt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/dastardly.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/ffuf.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/vhost.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dehashed.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/digitorus.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsbimi.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnstlsrpt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/docker_pull.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dotnetnuke.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/emailformat.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/extractous.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/filedownload.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/git.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/git_clone.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/gitdumper.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/github_org.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/gitlab.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/gowitness.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/host_header.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/httpx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/hunt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/hunterio.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/base.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/cloudcheck.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/dnsresolve.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/unarchive.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ip2location.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ipstack.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/jadx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/leakix.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/myssl.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/newsletters.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ntlm.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/oauth.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/otx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/asset_inventory.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/base.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/csv.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/discord.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/emails.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/http.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/json.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/mysql.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/nmap_xml.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/postgres.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/python.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/slack.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/sqlite.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/teams.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/txt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/web_parameters.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/paramminer_headers.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/pgp.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/portfilter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/portscan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/postman.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/postman_download.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/report/asn.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/report/base.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/robots.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/shodan_idb.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/skymem.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/smuggler.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/social.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/sslcert.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/telerik.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/github.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/sql.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/trickest.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/trufflehog.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/urlscan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/viewdns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/virustotal.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wayback.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wpscan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/baddns-intense.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/fast.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/kitchen-sink.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei-budget.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei-intense.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei-technology.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/spider-intense.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/spider.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/tech-detect.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/manager.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/path.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/preset.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/scanner.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/stats.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/target.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scripts/docs.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/conftest.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/coverage.cfg +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/fastapi_test.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/run_tests.sh +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test.conf +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_dns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_engine.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_events.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_helpers.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_presets.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_target.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_web.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_gitdumper.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_nmap_xml.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_portfilter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_idb.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_unarchive.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_web_parameters.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/devops_mutations.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/nameservers.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
- {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: bbot
|
|
3
|
-
Version: 2.4.0.
|
|
3
|
+
Version: 2.4.0.5986rc0
|
|
4
4
|
Summary: OSINT automation for hackers.
|
|
5
5
|
License: GPL-3.0
|
|
6
6
|
Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
|
|
@@ -78,7 +78,7 @@ async def _main():
|
|
|
78
78
|
return
|
|
79
79
|
|
|
80
80
|
# if we're listing modules or their options
|
|
81
|
-
if options.list_modules or options.list_output_modules or options.list_module_options:
|
|
81
|
+
if options.list_modules or options.list_output_modules or options.list_module_options or options.module_help:
|
|
82
82
|
# if no modules or flags are specified, enable everything
|
|
83
83
|
if not (options.modules or options.output_modules or options.flags):
|
|
84
84
|
for module, preloaded in preset.module_loader.preloaded().items():
|
|
@@ -119,6 +119,20 @@ async def _main():
|
|
|
119
119
|
print(row)
|
|
120
120
|
return
|
|
121
121
|
|
|
122
|
+
# --module-help
|
|
123
|
+
if options.module_help:
|
|
124
|
+
module_name = options.module_help
|
|
125
|
+
all_modules = list(preset.module_loader.preloaded())
|
|
126
|
+
if module_name not in all_modules:
|
|
127
|
+
log.hugewarning(f'Module "{module_name}" not found')
|
|
128
|
+
return
|
|
129
|
+
|
|
130
|
+
# Load the module class
|
|
131
|
+
loaded_modules = preset.module_loader.load_modules([module_name])
|
|
132
|
+
module_name, module_class = next(iter(loaded_modules.items()))
|
|
133
|
+
print(module_class.help_text())
|
|
134
|
+
return
|
|
135
|
+
|
|
122
136
|
# --list-flags
|
|
123
137
|
if options.list_flags:
|
|
124
138
|
flags = preset.flags if preset.flags else None
|
|
@@ -1595,6 +1595,48 @@ class BaseModule:
|
|
|
1595
1595
|
if trace:
|
|
1596
1596
|
self.trace()
|
|
1597
1597
|
|
|
1598
|
+
@classmethod
|
|
1599
|
+
def help_text(self):
|
|
1600
|
+
"""
|
|
1601
|
+
Returns a string containing help text for the module.
|
|
1602
|
+
This includes the module's description, metadata, events, flags, and available options.
|
|
1603
|
+
"""
|
|
1604
|
+
# Retrieve the module's metadata, options, events, and flags
|
|
1605
|
+
meta = getattr(self, "meta", {})
|
|
1606
|
+
options = getattr(self, "options", {})
|
|
1607
|
+
options_desc = getattr(self, "options_desc", {})
|
|
1608
|
+
watched_events = getattr(self, "watched_events", [])
|
|
1609
|
+
produced_events = getattr(self, "produced_events", [])
|
|
1610
|
+
flags = getattr(self, "flags", [])
|
|
1611
|
+
|
|
1612
|
+
help_text = "\n" + "=" * 40 + "\n"
|
|
1613
|
+
help_text += f"Module Help: {self.__name__}\n"
|
|
1614
|
+
help_text += "=" * 40 + "\n\n"
|
|
1615
|
+
|
|
1616
|
+
for key, value in meta.items():
|
|
1617
|
+
help_text += f"{key.replace('_', ' ').title()}: {value}\n"
|
|
1618
|
+
|
|
1619
|
+
help_text += "\nWatched Events:\n"
|
|
1620
|
+
help_text += " " + ", ".join(watched_events) + "\n" if watched_events else " None\n"
|
|
1621
|
+
|
|
1622
|
+
help_text += "\nProduced Events:\n"
|
|
1623
|
+
help_text += " " + ", ".join(produced_events) + "\n" if produced_events else " None\n"
|
|
1624
|
+
|
|
1625
|
+
help_text += "\nFlags:\n"
|
|
1626
|
+
help_text += " " + ", ".join(flags) + "\n" if flags else " None\n"
|
|
1627
|
+
|
|
1628
|
+
help_text += "\nOptions:\n"
|
|
1629
|
+
if options:
|
|
1630
|
+
for option, default_value in options.items():
|
|
1631
|
+
option_description = options_desc.get(option, "No description available.")
|
|
1632
|
+
help_text += f" - {option}:\n"
|
|
1633
|
+
help_text += f" Description: {option_description}\n"
|
|
1634
|
+
help_text += f" Default: {default_value}\n"
|
|
1635
|
+
else:
|
|
1636
|
+
help_text += " No options available."
|
|
1637
|
+
|
|
1638
|
+
return help_text
|
|
1639
|
+
|
|
1598
1640
|
|
|
1599
1641
|
class BaseInterceptModule(BaseModule):
|
|
1600
1642
|
"""
|
|
@@ -262,6 +262,8 @@ class ExcavateRule:
|
|
|
262
262
|
|
|
263
263
|
|
|
264
264
|
class CustomExtractor(ExcavateRule):
|
|
265
|
+
description = "Enables custom, user-defined YARA rules."
|
|
266
|
+
|
|
265
267
|
def __init__(self, excavate):
|
|
266
268
|
super().__init__(excavate)
|
|
267
269
|
|
|
@@ -356,6 +358,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
356
358
|
)
|
|
357
359
|
|
|
358
360
|
class ParameterExtractor(ExcavateRule):
|
|
361
|
+
description = "Extracts web parameters. Enabled if any modules are enabled that emit WEB_PARAMETER events."
|
|
359
362
|
yara_rules = {}
|
|
360
363
|
|
|
361
364
|
class ParameterExtractorRule:
|
|
@@ -531,6 +534,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
531
534
|
self.excavate.debug(f"blocked parameter [{parameter_name}] due to validation failure")
|
|
532
535
|
|
|
533
536
|
class CSPExtractor(ExcavateRule):
|
|
537
|
+
description = "Extracts domains from CSP headers."
|
|
538
|
+
|
|
534
539
|
yara_rules = {
|
|
535
540
|
"csp": r'rule csp { meta: tags = "affiliate" description = "contains CSP Header" strings: $csp = /Content-Security-Policy:[^\r\n]+/ nocase condition: $csp }',
|
|
536
541
|
}
|
|
@@ -543,6 +548,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
543
548
|
await self.report(domain, event, yara_rule_settings, discovery_context, event_type="DNS_NAME")
|
|
544
549
|
|
|
545
550
|
class EmailExtractor(ExcavateRule):
|
|
551
|
+
description = "Extract email addresses."
|
|
552
|
+
|
|
546
553
|
yara_rules = {
|
|
547
554
|
"email": 'rule email { meta: description = "contains email address" strings: $email = /[^\\W_][\\w\\-\\.\\+\']{0,100}@[a-zA-Z0-9\\-]{1,100}(\\.[a-zA-Z0-9\\-]{1,100})*\\.[a-zA-Z]{2,63}/ nocase fullword condition: $email }',
|
|
548
555
|
}
|
|
@@ -556,11 +563,13 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
556
563
|
|
|
557
564
|
# Future Work: Emit a JWT Object, and make a new Module to ingest it.
|
|
558
565
|
class JWTExtractor(ExcavateRule):
|
|
566
|
+
description = "Extracts JSON Web Tokens."
|
|
559
567
|
yara_rules = {
|
|
560
568
|
"jwt": r'rule jwt { meta: emit_match = "True" description = "contains JSON Web Token (JWT)" strings: $jwt = /\beyJ[_a-zA-Z0-9\/+]*\.[_a-zA-Z0-9\/+]*\.[_a-zA-Z0-9\/+]*/ nocase condition: $jwt }',
|
|
561
569
|
}
|
|
562
570
|
|
|
563
571
|
class ErrorExtractor(ExcavateRule):
|
|
572
|
+
description = "Identifies error messages from various platforms."
|
|
564
573
|
signatures = {
|
|
565
574
|
"PHP_1": r"/\.php on line [0-9]+/",
|
|
566
575
|
"PHP_2": r"/\.php<\/b> on line <b>[0-9]+/",
|
|
@@ -598,6 +607,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
598
607
|
await self.report(event_data, event, yara_rule_settings, discovery_context, event_type="FINDING")
|
|
599
608
|
|
|
600
609
|
class SerializationExtractor(ExcavateRule):
|
|
610
|
+
description = "Identifies serialized objects from various platforms."
|
|
601
611
|
regexes = {
|
|
602
612
|
"Java": re.compile(r"[^a-zA-Z0-9\/+]rO0[a-zA-Z0-9+\/]+={0,2}"),
|
|
603
613
|
"DOTNET": re.compile(r"[^a-zA-Z0-9\/+]AAEAAAD\/\/[a-zA-Z0-9\/+]+={0,2}"),
|
|
@@ -627,12 +637,14 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
627
637
|
await self.report(event_data, event, yara_rule_settings, discovery_context, event_type="FINDING")
|
|
628
638
|
|
|
629
639
|
class FunctionalityExtractor(ExcavateRule):
|
|
640
|
+
description = "Detects potentially exploitable functionality and attack surface in web applications."
|
|
630
641
|
yara_rules = {
|
|
631
642
|
"File_Upload_Functionality": r'rule File_Upload_Functionality { meta: description = "contains file upload functionality" strings: $fileuploadfunc = /<input[^>]+type=["\']?file["\']?[^>]+>/ nocase condition: $fileuploadfunc }',
|
|
632
643
|
"Web_Service_WSDL": r'rule Web_Service_WSDL { meta: emit_match = "True" description = "contains a web service WSDL URL" strings: $wsdl = /https?:\/\/[^\s]*\.(wsdl)/ nocase condition: $wsdl }',
|
|
633
644
|
}
|
|
634
645
|
|
|
635
646
|
class NonHttpSchemeExtractor(ExcavateRule):
|
|
647
|
+
description = "Detects URIs with non-HTTP schemes."
|
|
636
648
|
yara_rules = {
|
|
637
649
|
"Non_HTTP_Scheme": r'rule Non_HTTP_Scheme { meta: description = "contains non-http scheme URL" strings: $nonhttpscheme = /\b\w{2,35}:\/\/[\w.-]+(:\d+)?\b/ nocase fullword condition: $nonhttpscheme }'
|
|
638
650
|
}
|
|
@@ -681,6 +693,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
681
693
|
)
|
|
682
694
|
|
|
683
695
|
class URLExtractor(ExcavateRule):
|
|
696
|
+
description = "Extracts URLs."
|
|
684
697
|
yara_rules = {
|
|
685
698
|
"url_full": (
|
|
686
699
|
r"""
|
|
@@ -773,6 +786,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
773
786
|
return event_draft
|
|
774
787
|
|
|
775
788
|
class HostnameExtractor(ExcavateRule):
|
|
789
|
+
description = "DNS name discovery, based on the scan target."
|
|
790
|
+
|
|
776
791
|
yara_rules = {}
|
|
777
792
|
|
|
778
793
|
def __init__(self, excavate):
|
|
@@ -785,6 +800,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
785
800
|
await self.report(domain_str, event, yara_rule_settings, discovery_context, event_type="DNS_NAME")
|
|
786
801
|
|
|
787
802
|
class LoginPageExtractor(ExcavateRule):
|
|
803
|
+
description = "Detects login pages with username and password fields."
|
|
788
804
|
yara_rules = {
|
|
789
805
|
"login_page": r"""
|
|
790
806
|
rule login_page {
|
|
@@ -1084,3 +1100,39 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
1084
1100
|
content_type="",
|
|
1085
1101
|
discovery_context="Parsed file content",
|
|
1086
1102
|
)
|
|
1103
|
+
|
|
1104
|
+
@classmethod
|
|
1105
|
+
def help_text(self):
|
|
1106
|
+
# Call the base class help_text method
|
|
1107
|
+
base_help_text = super().help_text()
|
|
1108
|
+
|
|
1109
|
+
# Import the current module to inspect its classes
|
|
1110
|
+
import sys
|
|
1111
|
+
|
|
1112
|
+
current_module = sys.modules[self.__module__]
|
|
1113
|
+
|
|
1114
|
+
# Function to recursively find subclasses of ExcavateRule
|
|
1115
|
+
def find_subclasses(cls):
|
|
1116
|
+
subclasses = []
|
|
1117
|
+
for name, obj in vars(cls).items():
|
|
1118
|
+
if isinstance(obj, type) and issubclass(obj, ExcavateRule) and obj is not ExcavateRule:
|
|
1119
|
+
description = getattr(obj, "description", "No description available.")
|
|
1120
|
+
subclasses.append((name, description))
|
|
1121
|
+
# Recursively check for nested classes
|
|
1122
|
+
if isinstance(obj, type):
|
|
1123
|
+
subclasses.extend(find_subclasses(obj))
|
|
1124
|
+
return subclasses
|
|
1125
|
+
|
|
1126
|
+
# Find all classes in the module that inherit from ExcavateRule
|
|
1127
|
+
submodules = find_subclasses(current_module)
|
|
1128
|
+
|
|
1129
|
+
# Format submodules information
|
|
1130
|
+
submodules_info = "\nSubmodules:\n"
|
|
1131
|
+
if submodules:
|
|
1132
|
+
for submodule, description in submodules:
|
|
1133
|
+
submodules_info += f" - {submodule}: {description}\n"
|
|
1134
|
+
else:
|
|
1135
|
+
submodules_info += " No submodules available.\n"
|
|
1136
|
+
|
|
1137
|
+
# Combine the base help text with the submodules information
|
|
1138
|
+
return base_help_text + submodules_info
|
|
@@ -67,6 +67,11 @@ class BBOTArgs:
|
|
|
67
67
|
"",
|
|
68
68
|
"bbot -lf",
|
|
69
69
|
),
|
|
70
|
+
(
|
|
71
|
+
"Show help for a specific module",
|
|
72
|
+
"",
|
|
73
|
+
"bbot -mh <module_name>",
|
|
74
|
+
),
|
|
70
75
|
]
|
|
71
76
|
|
|
72
77
|
epilog = "EXAMPLES\n"
|
|
@@ -314,6 +319,14 @@ class BBOTArgs:
|
|
|
314
319
|
help="Show the current preset in its full form, including defaults",
|
|
315
320
|
)
|
|
316
321
|
|
|
322
|
+
scan.add_argument(
|
|
323
|
+
"-mh",
|
|
324
|
+
"--module-help",
|
|
325
|
+
default=None,
|
|
326
|
+
help="Show help for a specific module",
|
|
327
|
+
metavar="MODULE",
|
|
328
|
+
)
|
|
329
|
+
|
|
317
330
|
output = p.add_argument_group(title="Output")
|
|
318
331
|
output.add_argument(
|
|
319
332
|
"-o",
|
|
@@ -449,6 +449,20 @@ async def test_cli_customheaders(monkeypatch, caplog, capsys):
|
|
|
449
449
|
assert "Custom headers not formatted correctly (missing header name or value)" in caplog.text
|
|
450
450
|
|
|
451
451
|
|
|
452
|
+
@pytest.mark.asyncio
|
|
453
|
+
async def test_cli_module_help(monkeypatch, capsys):
|
|
454
|
+
monkeypatch.setattr(sys, "exit", lambda *args, **kwargs: True)
|
|
455
|
+
monkeypatch.setattr(os, "_exit", lambda *args, **kwargs: True)
|
|
456
|
+
|
|
457
|
+
monkeypatch.setattr("sys.argv", ["bbot", "--module-help", "excavate"])
|
|
458
|
+
success = await cli._main()
|
|
459
|
+
assert success is None, "module help failed to execute"
|
|
460
|
+
captured = capsys.readouterr()
|
|
461
|
+
|
|
462
|
+
assert "Extracts domains from CSP headers" in captured.out
|
|
463
|
+
assert "Module Help:" in captured.out
|
|
464
|
+
|
|
465
|
+
|
|
452
466
|
def test_cli_config_validation(monkeypatch, caplog):
|
|
453
467
|
monkeypatch.setattr(sys, "exit", lambda *args, **kwargs: True)
|
|
454
468
|
monkeypatch.setattr(os, "_exit", lambda *args, **kwargs: True)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|