bbot 2.4.2.6611rc0__tar.gz → 2.4.2.6615rc0__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.2.6611rc0 → bbot-2.4.2.6615rc0}/PKG-INFO +1 -1
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/__init__.py +1 -1
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dehashed.py +44 -39
- bbot-2.4.2.6615rc0/bbot/test/test_step_2/module_tests/test_module_dehashed.py +159 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/pyproject.toml +1 -1
- bbot-2.4.2.6611rc0/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -102
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/LICENSE +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/README.md +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/cli.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/config/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/config/files.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/config/logger.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/core.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/engine.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/event/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/event/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/event/helpers.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/flags.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/bloom.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/command.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/diff.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/files.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/libmagic.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/process.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/regexes.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/url.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/web/envelopes.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/web/web.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/helpers/yara_helper.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/modules.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/multiprocess.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/core/shared_deps.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/db/sql/models.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/defaults.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/errors.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/logger.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/apkpure.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/baddns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bevigil.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/builtwith.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/bypass403.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/c99.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/censys.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/certspotter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/chaos.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/code_repository.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/credshed.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/crt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/crt_db.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/digitorus.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnsbimi.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dnstlsrpt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/docker_pull.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/dotnetnuke.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/emailformat.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/extractous.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ffuf.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/filedownload.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/git.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/git_clone.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/gitdumper.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/github_org.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/gitlab.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/gowitness.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/host_header.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/httpx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/hunt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/hunterio.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/cloudcheck.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/dnsresolve.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/excavate.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/internal/unarchive.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ip2location.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ipstack.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/jadx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/leakix.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/lightfuzz.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/cmdi.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/crypto.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/nosqli.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/path.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/serial.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/sqli.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/ssti.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/lightfuzz/submodules/xss.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/myssl.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/newsletters.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/ntlm.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/nuclei.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/oauth.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/otx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/asset_inventory.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/csv.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/discord.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/emails.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/http.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/json.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/mysql.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/nmap_xml.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/postgres.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/python.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/slack.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/sqlite.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/teams.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/txt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/web_parameters.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/paramminer_headers.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/pgp.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/portfilter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/portscan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/postman.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/postman_download.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/reflected_parameters.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/report/asn.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/report/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/robots.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/shodan_idb.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/skymem.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/smuggler.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/social.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/sslcert.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/telerik.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/github.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/sql.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/trickest.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/trufflehog.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/urlscan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/vhost.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/viewdns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/virustotal.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/wayback.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/wpscan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/baddns-intense.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/fast.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/kitchen-sink.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/nuclei/nuclei-budget.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/nuclei/nuclei-intense.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/nuclei/nuclei-technology.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/nuclei/nuclei.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/spider-intense.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/spider.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/tech-detect.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/lightfuzz-heavy.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/lightfuzz-light.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/lightfuzz-medium.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/lightfuzz-superheavy.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/lightfuzz-xss.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/manager.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/preset/args.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/preset/path.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/preset/preset.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/scanner.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/stats.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scanner/target.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/scripts/docs.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/conftest.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/coverage.cfg +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/fastapi_test.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/run_tests.sh +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test.conf +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_cli.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_dns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_engine.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_event_seeds.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_events.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_helpers.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_presets.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_target.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_web.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_1/test_web_envelopes.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_crt_db.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_gitdumper.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_lightfuzz.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_nmap_xml.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_portfilter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_reflected_parameters.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_idb.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_unarchive.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_web_parameters.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/devops_mutations.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/nameservers.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
- {bbot-2.4.2.6611rc0 → bbot-2.4.2.6615rc0}/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.2.
|
|
3
|
+
Version: 2.4.2.6615rc0
|
|
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
|
|
@@ -13,23 +13,23 @@ class dehashed(subdomain_enum):
|
|
|
13
13
|
"author": "@SpamFaux",
|
|
14
14
|
"auth_required": True,
|
|
15
15
|
}
|
|
16
|
-
options = {"
|
|
17
|
-
options_desc = {"
|
|
16
|
+
options = {"api_key": ""}
|
|
17
|
+
options_desc = {"api_key": "DeHashed API Key"}
|
|
18
18
|
target_only = True
|
|
19
19
|
|
|
20
|
-
base_url = "https://api.dehashed.com/search"
|
|
20
|
+
base_url = "https://api.dehashed.com/v2/search"
|
|
21
21
|
|
|
22
22
|
async def setup(self):
|
|
23
|
-
self.username = self.config.get("username", "")
|
|
24
23
|
self.api_key = self.config.get("api_key", "")
|
|
25
|
-
self.auth = (self.username, self.api_key)
|
|
26
24
|
self.headers = {
|
|
27
25
|
"Accept": "application/json",
|
|
26
|
+
"Content-Type": "application/json",
|
|
27
|
+
"Dehashed-Api-Key": self.api_key,
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
# soft-fail if we don't have the necessary information to make queries
|
|
31
|
-
if not
|
|
32
|
-
return None, "No
|
|
31
|
+
if not self.api_key:
|
|
32
|
+
return None, "No API key set"
|
|
33
33
|
|
|
34
34
|
return await super().setup()
|
|
35
35
|
|
|
@@ -38,29 +38,31 @@ class dehashed(subdomain_enum):
|
|
|
38
38
|
async for entries in self.query(query):
|
|
39
39
|
for entry in entries:
|
|
40
40
|
# we have to clean up the email field because dehashed does a poor job of it
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
emails = []
|
|
42
|
+
for email in entry.get("email", []):
|
|
43
|
+
email_str = email.replace("\\", "")
|
|
44
|
+
found_emails = list(await self.helpers.re.extract_emails(email_str))
|
|
45
|
+
if not found_emails:
|
|
46
|
+
self.debug(f"Invalid email from dehashed.com: {email_str}")
|
|
47
|
+
continue
|
|
48
|
+
emails += found_emails
|
|
47
49
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
users = entry.get("username", [])
|
|
51
|
+
pws = entry.get("password", [])
|
|
52
|
+
h_pws = entry.get("hashed_password", [])
|
|
51
53
|
db_name = entry.get("database_name", "")
|
|
52
54
|
|
|
53
55
|
tags = []
|
|
54
56
|
if db_name:
|
|
55
57
|
tags = [f"db-{db_name}"]
|
|
56
|
-
|
|
58
|
+
for email in emails:
|
|
57
59
|
email_event = self.make_event(email, "EMAIL_ADDRESS", parent=event, tags=tags)
|
|
58
60
|
if email_event is not None:
|
|
59
61
|
await self.emit_event(
|
|
60
62
|
email_event,
|
|
61
63
|
context=f'{{module}} searched API for "{query}" and found {{event.type}}: {{event.data}}',
|
|
62
64
|
)
|
|
63
|
-
|
|
65
|
+
for user in users:
|
|
64
66
|
await self.emit_event(
|
|
65
67
|
f"{email}:{user}",
|
|
66
68
|
"USERNAME",
|
|
@@ -68,7 +70,7 @@ class dehashed(subdomain_enum):
|
|
|
68
70
|
tags=tags,
|
|
69
71
|
context=f"{{module}} found {email} with {{event.type}}: {{event.data}}",
|
|
70
72
|
)
|
|
71
|
-
|
|
73
|
+
for pw in pws:
|
|
72
74
|
await self.emit_event(
|
|
73
75
|
f"{email}:{pw}",
|
|
74
76
|
"PASSWORD",
|
|
@@ -76,7 +78,7 @@ class dehashed(subdomain_enum):
|
|
|
76
78
|
tags=tags,
|
|
77
79
|
context=f"{{module}} found {email} with {{event.type}}: {{event.data}}",
|
|
78
80
|
)
|
|
79
|
-
|
|
81
|
+
for h_pw in h_pws:
|
|
80
82
|
await self.emit_event(
|
|
81
83
|
f"{email}:{h_pw}",
|
|
82
84
|
"HASHED_PASSWORD",
|
|
@@ -86,30 +88,33 @@ class dehashed(subdomain_enum):
|
|
|
86
88
|
)
|
|
87
89
|
|
|
88
90
|
async def query(self, domain):
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
91
|
+
url = self.base_url
|
|
92
|
+
json = {
|
|
93
|
+
"query": "",
|
|
94
|
+
"page": 1,
|
|
95
|
+
"size": 10000, # The maximum permitted size and pagination.
|
|
96
|
+
}
|
|
97
|
+
json["query"] = f"domain:{domain}"
|
|
98
|
+
json["page"] = 1
|
|
99
|
+
max_pages = 1
|
|
100
|
+
agen = self.api_page_iter(url=url, headers=self.headers, _json=False, method="POST", json=json)
|
|
94
101
|
async for result in agen:
|
|
95
102
|
result_json = {}
|
|
96
103
|
with suppress(Exception):
|
|
97
104
|
result_json = result.json()
|
|
98
105
|
total = result_json.get("total", 0)
|
|
99
106
|
entries = result_json.get("entries", [])
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
)
|
|
107
|
+
json["page"] += 1
|
|
108
|
+
if result is not None and result.status_code != 200:
|
|
109
|
+
self.warning(
|
|
110
|
+
f"Error retrieving results from dehashed.com (status code {result.status_code}): {result.text}"
|
|
111
|
+
)
|
|
112
|
+
elif (json["page"] > max_pages) and (total > (json["size"] * max_pages)):
|
|
113
|
+
self.info(
|
|
114
|
+
f"{domain} has {total:,} results in Dehashed. The API can only process the first 10,000 results. Please check dehashed.com to get the remaining results."
|
|
115
|
+
)
|
|
116
|
+
if entries:
|
|
117
|
+
yield entries
|
|
118
|
+
if not entries or json["page"] > max_pages:
|
|
113
119
|
await agen.aclose()
|
|
114
120
|
break
|
|
115
|
-
yield entries
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
from .base import ModuleTestBase
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class TestDehashed(ModuleTestBase):
|
|
5
|
+
modules_overrides = ["dehashed", "speculate"]
|
|
6
|
+
config_overrides = {
|
|
7
|
+
"scope": {"report_distance": 2},
|
|
8
|
+
"modules": {"dehashed": {"api_key": "deadbeef"}},
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
async def setup_before_prep(self, module_test):
|
|
12
|
+
module_test.httpx_mock.add_response(
|
|
13
|
+
url="https://api.dehashed.com/v2/search",
|
|
14
|
+
method="POST",
|
|
15
|
+
json={
|
|
16
|
+
"balance": 10000,
|
|
17
|
+
"entries": [
|
|
18
|
+
{
|
|
19
|
+
"id": "4363462346",
|
|
20
|
+
"email": ["bob@blacklanternsecurity.com"],
|
|
21
|
+
"ip_address": ["127.0.0.9"],
|
|
22
|
+
"username": ["bob@bob.com"],
|
|
23
|
+
"hashed_password": ["$2a$12$pVmwJ7pXEr3mE.DmCCE4fOUDdeadbeefd2KuCy/tq1ZUFyEOH2bve"],
|
|
24
|
+
"name": ["Bob Smith"],
|
|
25
|
+
"phone": ["+91283423839"],
|
|
26
|
+
"database_name": "eatstreet",
|
|
27
|
+
"raw_record": {"le_only": True, "unstructured": True},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "234623453454",
|
|
31
|
+
"email": ["tim@blacklanternsecurity.com"],
|
|
32
|
+
"username": ["timmy"],
|
|
33
|
+
"password": ["TimTamSlam69"],
|
|
34
|
+
"name": "Tim Tam",
|
|
35
|
+
"phone": ["+123455667"],
|
|
36
|
+
"database_name": "eatstreet",
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
"took": "61ms",
|
|
40
|
+
"total": 2,
|
|
41
|
+
},
|
|
42
|
+
)
|
|
43
|
+
await module_test.mock_dns(
|
|
44
|
+
{
|
|
45
|
+
"bob.com": {"A": ["127.0.0.1"]},
|
|
46
|
+
"blacklanternsecurity.com": {"A": ["127.0.0.1"]},
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
def check(self, module_test, events):
|
|
51
|
+
assert len(events) == 12
|
|
52
|
+
assert 1 == len([e for e in events if e.type == "DNS_NAME" and e.data == "blacklanternsecurity.com"])
|
|
53
|
+
assert 1 == len([e for e in events if e.type == "ORG_STUB" and e.data == "blacklanternsecurity"])
|
|
54
|
+
assert 1 == len(
|
|
55
|
+
[
|
|
56
|
+
e
|
|
57
|
+
for e in events
|
|
58
|
+
if e.type == "EMAIL_ADDRESS"
|
|
59
|
+
and e.data == "bob@bob.com"
|
|
60
|
+
and e.scope_distance == 1
|
|
61
|
+
and "affiliate" in e.tags
|
|
62
|
+
]
|
|
63
|
+
)
|
|
64
|
+
assert 1 == len(
|
|
65
|
+
[
|
|
66
|
+
e
|
|
67
|
+
for e in events
|
|
68
|
+
if e.type == "DNS_NAME" and e.data == "bob.com" and e.scope_distance == 1 and "affiliate" in e.tags
|
|
69
|
+
]
|
|
70
|
+
)
|
|
71
|
+
assert 1 == len([e for e in events if e.type == "EMAIL_ADDRESS" and e.data == "bob@blacklanternsecurity.com"])
|
|
72
|
+
assert 1 == len(
|
|
73
|
+
[
|
|
74
|
+
e
|
|
75
|
+
for e in events
|
|
76
|
+
if e.type == "USERNAME"
|
|
77
|
+
and e.data == "bob@blacklanternsecurity.com:bob@bob.com"
|
|
78
|
+
and e.parent.data == "bob@blacklanternsecurity.com"
|
|
79
|
+
]
|
|
80
|
+
)
|
|
81
|
+
assert 1 == len([e for e in events if e.type == "EMAIL_ADDRESS" and e.data == "tim@blacklanternsecurity.com"])
|
|
82
|
+
assert 1 == len(
|
|
83
|
+
[
|
|
84
|
+
e
|
|
85
|
+
for e in events
|
|
86
|
+
if e.type == "HASHED_PASSWORD"
|
|
87
|
+
and e.data
|
|
88
|
+
== "bob@blacklanternsecurity.com:$2a$12$pVmwJ7pXEr3mE.DmCCE4fOUDdeadbeefd2KuCy/tq1ZUFyEOH2bve"
|
|
89
|
+
]
|
|
90
|
+
)
|
|
91
|
+
assert 1 == len(
|
|
92
|
+
[e for e in events if e.type == "PASSWORD" and e.data == "tim@blacklanternsecurity.com:TimTamSlam69"]
|
|
93
|
+
)
|
|
94
|
+
assert 1 == len([e for e in events if e.type == "USERNAME" and e.data == "tim@blacklanternsecurity.com:timmy"])
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class TestDehashedBadEmail(TestDehashed):
|
|
98
|
+
async def setup_before_prep(self, module_test):
|
|
99
|
+
module_test.httpx_mock.add_response(
|
|
100
|
+
url="https://api.dehashed.com/v2/search",
|
|
101
|
+
method="POST",
|
|
102
|
+
json={
|
|
103
|
+
"balance": 10000,
|
|
104
|
+
"entries": [
|
|
105
|
+
{
|
|
106
|
+
"id": "EZxg4Lz-INLUt6uRXZaV",
|
|
107
|
+
"email": ["foo.example.com"],
|
|
108
|
+
"database_name": "Collections",
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
"took": "41ms",
|
|
112
|
+
"total": 1,
|
|
113
|
+
},
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
def check(self, module_test, events):
|
|
117
|
+
debug_log_content = open(module_test.scan.home / "debug.log").read()
|
|
118
|
+
assert "Invalid email from dehashed.com: foo.example.com" in debug_log_content
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class TestDehashedHTTPError(TestDehashed):
|
|
122
|
+
async def setup_before_prep(self, module_test):
|
|
123
|
+
module_test.httpx_mock.add_response(
|
|
124
|
+
url="https://api.dehashed.com/v2/search",
|
|
125
|
+
method="POST",
|
|
126
|
+
json={"error": "issue with request body"},
|
|
127
|
+
status_code=400,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
def check(self, module_test, events):
|
|
131
|
+
scan_log_content = open(module_test.scan.home / "scan.log").read()
|
|
132
|
+
assert (
|
|
133
|
+
'Error retrieving results from dehashed.com (status code 400): {"error":"issue with request body"}'
|
|
134
|
+
in scan_log_content
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class TestDehashedTooManyResults(TestDehashed):
|
|
139
|
+
async def setup_before_prep(self, module_test):
|
|
140
|
+
module_test.httpx_mock.add_response(
|
|
141
|
+
url="https://api.dehashed.com/v2/search",
|
|
142
|
+
method="POST",
|
|
143
|
+
json={
|
|
144
|
+
"balance": 10000,
|
|
145
|
+
"entries": [
|
|
146
|
+
{
|
|
147
|
+
"id": "VXhNxj46SGsW4Lworh-G",
|
|
148
|
+
"email": ["bob@bob.com"],
|
|
149
|
+
"database_name": "Collections",
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
"took": "40ms",
|
|
153
|
+
"total": 10001,
|
|
154
|
+
},
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
def check(self, module_test, events):
|
|
158
|
+
scan_log_content = open(module_test.scan.home / "scan.log").read()
|
|
159
|
+
assert "has 10,001 results in Dehashed. The API can only process the first 10,000 results." in scan_log_content
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
from .base import ModuleTestBase
|
|
2
|
-
|
|
3
|
-
dehashed_domain_response = {
|
|
4
|
-
"balance": 10000,
|
|
5
|
-
"entries": [
|
|
6
|
-
{
|
|
7
|
-
"id": "4363462346",
|
|
8
|
-
"email": "bob@blacklanternsecurity.com",
|
|
9
|
-
"ip_address": "",
|
|
10
|
-
"username": "bob@bob.com",
|
|
11
|
-
"password": "",
|
|
12
|
-
"hashed_password": "$2a$12$pVmwJ7pXEr3mE.DmCCE4fOUDdeadbeefd2KuCy/tq1ZUFyEOH2bve",
|
|
13
|
-
"name": "Bob Smith",
|
|
14
|
-
"vin": "",
|
|
15
|
-
"address": "",
|
|
16
|
-
"phone": "+91283423839",
|
|
17
|
-
"database_name": "eatstreet",
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"id": "234623453454",
|
|
21
|
-
"email": "tim@blacklanternsecurity.com",
|
|
22
|
-
"ip_address": "",
|
|
23
|
-
"username": "timmy",
|
|
24
|
-
"password": "TimTamSlam69",
|
|
25
|
-
"hashed_password": "",
|
|
26
|
-
"name": "Tim Tam",
|
|
27
|
-
"vin": "",
|
|
28
|
-
"address": "",
|
|
29
|
-
"phone": "+123455667",
|
|
30
|
-
"database_name": "eatstreet",
|
|
31
|
-
},
|
|
32
|
-
],
|
|
33
|
-
"success": True,
|
|
34
|
-
"took": "61µs",
|
|
35
|
-
"total": 2,
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
class TestDehashed(ModuleTestBase):
|
|
40
|
-
modules_overrides = ["dehashed", "speculate"]
|
|
41
|
-
config_overrides = {
|
|
42
|
-
"scope": {"report_distance": 2},
|
|
43
|
-
"modules": {"dehashed": {"username": "admin", "api_key": "deadbeef"}},
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async def setup_before_prep(self, module_test):
|
|
47
|
-
module_test.httpx_mock.add_response(
|
|
48
|
-
url="https://api.dehashed.com/search?query=domain:blacklanternsecurity.com&size=10000&page=1",
|
|
49
|
-
json=dehashed_domain_response,
|
|
50
|
-
)
|
|
51
|
-
await module_test.mock_dns(
|
|
52
|
-
{
|
|
53
|
-
"bob.com": {"A": ["127.0.0.1"]},
|
|
54
|
-
"blacklanternsecurity.com": {"A": ["127.0.0.1"]},
|
|
55
|
-
}
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
def check(self, module_test, events):
|
|
59
|
-
assert len(events) == 12
|
|
60
|
-
assert 1 == len([e for e in events if e.type == "DNS_NAME" and e.data == "blacklanternsecurity.com"])
|
|
61
|
-
assert 1 == len([e for e in events if e.type == "ORG_STUB" and e.data == "blacklanternsecurity"])
|
|
62
|
-
assert 1 == len(
|
|
63
|
-
[
|
|
64
|
-
e
|
|
65
|
-
for e in events
|
|
66
|
-
if e.type == "EMAIL_ADDRESS"
|
|
67
|
-
and e.data == "bob@bob.com"
|
|
68
|
-
and e.scope_distance == 1
|
|
69
|
-
and "affiliate" in e.tags
|
|
70
|
-
]
|
|
71
|
-
)
|
|
72
|
-
assert 1 == len(
|
|
73
|
-
[
|
|
74
|
-
e
|
|
75
|
-
for e in events
|
|
76
|
-
if e.type == "DNS_NAME" and e.data == "bob.com" and e.scope_distance == 1 and "affiliate" in e.tags
|
|
77
|
-
]
|
|
78
|
-
)
|
|
79
|
-
assert 1 == len([e for e in events if e.type == "EMAIL_ADDRESS" and e.data == "bob@blacklanternsecurity.com"])
|
|
80
|
-
assert 1 == len(
|
|
81
|
-
[
|
|
82
|
-
e
|
|
83
|
-
for e in events
|
|
84
|
-
if e.type == "USERNAME"
|
|
85
|
-
and e.data == "bob@blacklanternsecurity.com:bob@bob.com"
|
|
86
|
-
and e.parent.data == "bob@blacklanternsecurity.com"
|
|
87
|
-
]
|
|
88
|
-
)
|
|
89
|
-
assert 1 == len([e for e in events if e.type == "EMAIL_ADDRESS" and e.data == "tim@blacklanternsecurity.com"])
|
|
90
|
-
assert 1 == len(
|
|
91
|
-
[
|
|
92
|
-
e
|
|
93
|
-
for e in events
|
|
94
|
-
if e.type == "HASHED_PASSWORD"
|
|
95
|
-
and e.data
|
|
96
|
-
== "bob@blacklanternsecurity.com:$2a$12$pVmwJ7pXEr3mE.DmCCE4fOUDdeadbeefd2KuCy/tq1ZUFyEOH2bve"
|
|
97
|
-
]
|
|
98
|
-
)
|
|
99
|
-
assert 1 == len(
|
|
100
|
-
[e for e in events if e.type == "PASSWORD" and e.data == "tim@blacklanternsecurity.com:TimTamSlam69"]
|
|
101
|
-
)
|
|
102
|
-
assert 1 == len([e for e in events if e.type == "USERNAME" and e.data == "tim@blacklanternsecurity.com:timmy"])
|
|
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
|