bbot 2.3.0.5384rc0__tar.gz → 2.3.0.5399rc0__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.3.0.5384rc0 → bbot-2.3.0.5399rc0}/PKG-INFO +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/__init__.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/bloom.py +2 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/diff.py +3 -3
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/regexes.py +2 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/web/web.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/defaults.yml +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/deadly/nuclei.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnsbimi.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/docker_pull.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/cloudcheck.py +3 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/dnsresolve.py +1 -3
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/asset_inventory.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/portscan.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/report/asn.py +8 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/telerik.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/kitchen-sink.yml +0 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web/dotnet-audit.yml +0 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/preset/args.py +3 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/preset/preset.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test__module__tests.py +0 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -3
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_dns.py +1 -4
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_engine.py +0 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_events.py +0 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_helpers.py +0 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_presets.py +1 -6
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_target.py +0 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_web.py +0 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +3 -3
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +2 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +11 -11
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +1 -3
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +10 -10
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +2 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +2 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +13 -13
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/devops_mutations.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/nameservers.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/paramminer_headers.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/paramminer_parameters.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/valid_url_schemes.txt +1 -1
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/pyproject.toml +6 -2
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/LICENSE +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/README.md +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/cli.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/config/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/config/files.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/config/logger.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/core.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/engine.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/event/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/event/base.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/event/helpers.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/flags.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/command.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/files.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/libmagic.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/process.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/url.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/modules.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/multiprocess.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/core/shared_deps.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/db/sql/models.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/errors.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/logger.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/apkpure.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/baddns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/base.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bevigil.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/builtwith.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/bypass403.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/c99.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/censys.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/certspotter.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/chaos.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/code_repository.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/columbus.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/credshed.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/crt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/deadly/dastardly.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/deadly/ffuf.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/deadly/vhost.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dehashed.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/digitorus.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dnstlsrpt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/dotnetnuke.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/emailformat.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/extractous.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/filedownload.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/git.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/git_clone.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/github_org.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/gitlab.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/gowitness.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/host_header.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/httpx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/hunt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/hunterio.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/base.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/excavate.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/internetdb.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/ip2location.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/ipstack.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/jadx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/leakix.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/myssl.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/newsletters.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/ntlm.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/oauth.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/otx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/base.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/csv.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/discord.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/emails.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/http.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/json.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/mysql.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/postgres.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/python.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/slack.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/sqlite.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/teams.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/txt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/paramminer_headers.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/pgp.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/postman.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/postman_download.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/report/base.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/robots.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/secretsdb.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/skymem.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/smuggler.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/social.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/sslcert.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/github.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/sql.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/trickest.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/trufflehog.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/urlscan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/viewdns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/virustotal.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/wayback.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/wpscan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/baddns-thorough.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/fast.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/spider.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/manager.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/preset/path.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/scanner.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/stats.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scanner/target.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/scripts/docs.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/conftest.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/coverage.cfg +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/fastapi_test.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/run_tests.sh +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test.conf +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_cli.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.3.0.5384rc0 → bbot-2.3.0.5399rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
|
@@ -5,14 +5,14 @@ import mmap
|
|
|
5
5
|
|
|
6
6
|
class BloomFilter:
|
|
7
7
|
"""
|
|
8
|
-
Simple bloom filter implementation capable of
|
|
8
|
+
Simple bloom filter implementation capable of roughly 400K lookups/s.
|
|
9
9
|
|
|
10
10
|
BBOT uses bloom filters in scenarios like DNS brute-forcing, where it's useful to keep track
|
|
11
11
|
of which mutations have been tried so far.
|
|
12
12
|
|
|
13
13
|
A 100-megabyte bloom filter (800M bits) can store 10M entries with a .01% false-positive rate.
|
|
14
14
|
A python hash is 36 bytes. So if you wanted to store these in a set, this would take up
|
|
15
|
-
36 * 10M * 2 (key+value) == 720 megabytes. So we save
|
|
15
|
+
36 * 10M * 2 (key+value) == 720 megabytes. So we save roughly 7 times the space.
|
|
16
16
|
"""
|
|
17
17
|
|
|
18
18
|
def __init__(self, size=8000000):
|
|
@@ -94,7 +94,7 @@ class HttpCompare:
|
|
|
94
94
|
baseline_1_json = xmltodict.parse(baseline_1.text)
|
|
95
95
|
baseline_2_json = xmltodict.parse(baseline_2.text)
|
|
96
96
|
except ExpatError:
|
|
97
|
-
log.debug(f"
|
|
97
|
+
log.debug(f"Can't HTML parse for {self.baseline_url}. Switching to text parsing as a backup")
|
|
98
98
|
baseline_1_json = baseline_1.text.split("\n")
|
|
99
99
|
baseline_2_json = baseline_2.text.split("\n")
|
|
100
100
|
|
|
@@ -203,7 +203,7 @@ class HttpCompare:
|
|
|
203
203
|
)
|
|
204
204
|
|
|
205
205
|
if subject_response is None:
|
|
206
|
-
# this can be caused by a WAF not liking the header, so we really
|
|
206
|
+
# this can be caused by a WAF not liking the header, so we really aren't interested in it
|
|
207
207
|
return (True, "403", reflection, subject_response)
|
|
208
208
|
|
|
209
209
|
if check_reflection:
|
|
@@ -225,7 +225,7 @@ class HttpCompare:
|
|
|
225
225
|
subject_json = xmltodict.parse(subject_response.text)
|
|
226
226
|
|
|
227
227
|
except ExpatError:
|
|
228
|
-
log.debug(f"
|
|
228
|
+
log.debug(f"Can't HTML parse for {subject.split('?')[0]}. Switching to text parsing as a backup")
|
|
229
229
|
subject_json = subject_response.text.split("\n")
|
|
230
230
|
|
|
231
231
|
diff_reasons = []
|
|
@@ -23,7 +23,7 @@ num_regex = re.compile(r"\d+")
|
|
|
23
23
|
_ipv4_regex = r"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}"
|
|
24
24
|
ipv4_regex = re.compile(_ipv4_regex, re.I)
|
|
25
25
|
|
|
26
|
-
# IPv6 is complicated, so we have
|
|
26
|
+
# IPv6 is complicated, so we have accommodate alternative patterns,
|
|
27
27
|
# :(:[A-F0-9]{1,4}){1,7} == ::1, ::ffff:1
|
|
28
28
|
# ([A-F0-9]{1,4}:){1,7}: == 2001::, 2001:db8::, 2001:db8:0:1:2:3::
|
|
29
29
|
# ([A-F0-9]{1,4}:){1,6}:([A-F0-9]{1,4}) == 2001::1, 2001:db8::1, 2001:db8:0:1:2:3::1
|
|
@@ -118,7 +118,7 @@ event_type_regexes = OrderedDict(
|
|
|
118
118
|
scan_name_regex = re.compile(r"[a-z]{3,20}_[a-z]{3,20}")
|
|
119
119
|
|
|
120
120
|
|
|
121
|
-
# For use with excavate
|
|
121
|
+
# For use with excavate parameters extractor
|
|
122
122
|
input_tag_regex = re.compile(
|
|
123
123
|
r"<input[^>]+?name=[\"\']?([\.$\w]+)[\"\']?(?:[^>]*?value=[\"\']([=+\/\w]*)[\"\'])?[^>]*>"
|
|
124
124
|
)
|
|
@@ -451,7 +451,7 @@ class WebHelper(EngineClient):
|
|
|
451
451
|
Perform an html parse of the 'markup' argument and return a soup instance
|
|
452
452
|
|
|
453
453
|
>>> email_type = soup.find(type="email")
|
|
454
|
-
Searches the soup instance for all
|
|
454
|
+
Searches the soup instance for all occurrences of the passed in argument
|
|
455
455
|
"""
|
|
456
456
|
try:
|
|
457
457
|
soup = BeautifulSoup(
|
|
@@ -74,7 +74,7 @@ dns:
|
|
|
74
74
|
|
|
75
75
|
web:
|
|
76
76
|
# HTTP proxy
|
|
77
|
-
http_proxy:
|
|
77
|
+
http_proxy:
|
|
78
78
|
# Web user-agent
|
|
79
79
|
user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.97
|
|
80
80
|
# Set the maximum number of HTTP links that can be followed in a row (0 == no spidering allowed)
|
|
@@ -227,7 +227,7 @@ class nuclei(BaseModule):
|
|
|
227
227
|
command.append(option)
|
|
228
228
|
|
|
229
229
|
if self.scan.config.get("interactsh_disable") is True:
|
|
230
|
-
self.info("
|
|
230
|
+
self.info("Disabling interactsh in accordance with global settings")
|
|
231
231
|
command.append("-no-interactsh")
|
|
232
232
|
|
|
233
233
|
if self.mode == "technology":
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
#
|
|
20
20
|
# NOTE: .svg file extensions are filtered from inclusion by default, modify "url_extension_blacklist" appropriately if you want the .svg image to be considered for download.
|
|
21
21
|
#
|
|
22
|
-
# NOTE: use the "filedownload" module if you to download .svg and .pem files. .pem will be downloaded by
|
|
22
|
+
# NOTE: use the "filedownload" module if you to download .svg and .pem files. .pem will be downloaded by default, .svg will require a customised configuration for that module.
|
|
23
23
|
#
|
|
24
24
|
# The domain portion of any URL_UNVERIFIED's will be extracted by the various internal modules if .svg is not filtered.
|
|
25
25
|
#
|
|
@@ -102,7 +102,7 @@ class docker_pull(BaseModule):
|
|
|
102
102
|
url = f"{registry}/v2/{repository}/tags/list"
|
|
103
103
|
r = await self.docker_api_request(url)
|
|
104
104
|
if r is None or r.status_code != 200:
|
|
105
|
-
self.log.warning(f"Could not retrieve all tags for {repository}
|
|
105
|
+
self.log.warning(f"Could not retrieve all tags for {repository} assuming tag:latest only.")
|
|
106
106
|
self.log.debug(f"Response: {r}")
|
|
107
107
|
return ["latest"]
|
|
108
108
|
try:
|
|
@@ -57,7 +57,9 @@ class CloudCheck(BaseInterceptModule):
|
|
|
57
57
|
for provider in self.helpers.cloud.providers.values():
|
|
58
58
|
provider_name = provider.name.lower()
|
|
59
59
|
base_kwargs = {
|
|
60
|
-
"parent": event,
|
|
60
|
+
"parent": event,
|
|
61
|
+
"tags": [f"{provider.provider_type}-{provider_name}"],
|
|
62
|
+
"_provider": provider_name,
|
|
61
63
|
}
|
|
62
64
|
# loop through the provider's regex signatures, if any
|
|
63
65
|
for event_type, sigs in provider.signatures.items():
|
|
@@ -306,9 +306,7 @@ class DNSResolve(BaseInterceptModule):
|
|
|
306
306
|
@property
|
|
307
307
|
def emit_raw_records(self):
|
|
308
308
|
if self._emit_raw_records is None:
|
|
309
|
-
watching_raw_records = any(
|
|
310
|
-
"RAW_DNS_RECORD" in m.get_watched_events() for m in self.scan.modules.values()
|
|
311
|
-
)
|
|
309
|
+
watching_raw_records = any("RAW_DNS_RECORD" in m.get_watched_events() for m in self.scan.modules.values())
|
|
312
310
|
omitted_event_types = self.scan.config.get("omit_event_types", [])
|
|
313
311
|
omit_raw_records = "RAW_DNS_RECORD" in omitted_event_types
|
|
314
312
|
self._emit_raw_records = watching_raw_records or not omit_raw_records
|
|
@@ -259,7 +259,7 @@ class Asset:
|
|
|
259
259
|
# ips
|
|
260
260
|
self.ip_addresses = set(_make_ip_list(row.get("IP (External)", "")))
|
|
261
261
|
self.ip_addresses.update(set(_make_ip_list(row.get("IP (Internal)", ""))))
|
|
262
|
-
# If user
|
|
262
|
+
# If user requests a recheck dont import the following fields to force them to be rechecked
|
|
263
263
|
if not self.recheck:
|
|
264
264
|
# ports
|
|
265
265
|
ports = [i.strip() for i in row.get("Open Ports", "").split(",")]
|
|
@@ -104,7 +104,7 @@ class portscan(BaseModule):
|
|
|
104
104
|
return True
|
|
105
105
|
|
|
106
106
|
async def handle_batch(self, *events):
|
|
107
|
-
# on our first run, we automatically include all our
|
|
107
|
+
# on our first run, we automatically include all our initial scan targets
|
|
108
108
|
if not self.scanned_initial_targets:
|
|
109
109
|
self.scanned_initial_targets = True
|
|
110
110
|
events = set(events)
|
|
@@ -207,7 +207,14 @@ class asn(BaseReportModule):
|
|
|
207
207
|
return False
|
|
208
208
|
asns_tried.add(asn)
|
|
209
209
|
asns.append(
|
|
210
|
-
{
|
|
210
|
+
{
|
|
211
|
+
"asn": asn,
|
|
212
|
+
"subnet": subnet,
|
|
213
|
+
"name": name,
|
|
214
|
+
"description": description,
|
|
215
|
+
"country": country,
|
|
216
|
+
"emails": emails,
|
|
217
|
+
}
|
|
211
218
|
)
|
|
212
219
|
if not asns:
|
|
213
220
|
self.debug(f'No results for "{ip}"')
|
|
@@ -173,7 +173,7 @@ class telerik(BaseModule):
|
|
|
173
173
|
webresource = "Telerik.Web.UI.WebResource.axd?type=rau"
|
|
174
174
|
result, _ = await self.test_detector(event.data, webresource)
|
|
175
175
|
if result:
|
|
176
|
-
if "RadAsyncUpload handler is registered
|
|
176
|
+
if "RadAsyncUpload handler is registered successfully" in result.text:
|
|
177
177
|
self.debug("Detected Telerik instance (Telerik.Web.UI.WebResource.axd?type=rau)")
|
|
178
178
|
|
|
179
179
|
probe_data = {
|
|
@@ -175,7 +175,9 @@ class BBOTArgs:
|
|
|
175
175
|
def create_parser(self, *args, **kwargs):
|
|
176
176
|
kwargs.update(
|
|
177
177
|
{
|
|
178
|
-
"description": "Bighuge BLS OSINT Tool",
|
|
178
|
+
"description": "Bighuge BLS OSINT Tool",
|
|
179
|
+
"formatter_class": argparse.RawTextHelpFormatter,
|
|
180
|
+
"epilog": self.epilog,
|
|
179
181
|
}
|
|
180
182
|
)
|
|
181
183
|
p = argparse.ArgumentParser(*args, **kwargs)
|
|
@@ -967,7 +967,7 @@ class Preset:
|
|
|
967
967
|
header = ["Preset", "Category", "Description", "# Modules"]
|
|
968
968
|
if include_modules:
|
|
969
969
|
header.append("Modules")
|
|
970
|
-
for
|
|
970
|
+
for loaded_preset, category, preset_path, original_file in self.all_presets.values():
|
|
971
971
|
loaded_preset = loaded_preset.bake()
|
|
972
972
|
num_modules = f"{len(loaded_preset.scan_modules):,}"
|
|
973
973
|
row = [loaded_preset.name, category, loaded_preset.description, num_modules]
|
|
@@ -17,7 +17,6 @@ def run_bbot_multiprocess(queue):
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def test_bbot_multiprocess(bbot_httpserver):
|
|
20
|
-
|
|
21
20
|
bbot_httpserver.expect_request("/").respond_with_data("test@blacklanternsecurity.com")
|
|
22
21
|
|
|
23
22
|
queue = multiprocessing.Queue()
|
|
@@ -32,12 +31,10 @@ def test_bbot_multiprocess(bbot_httpserver):
|
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
def test_bbot_fastapi(bbot_httpserver):
|
|
35
|
-
|
|
36
34
|
bbot_httpserver.expect_request("/").respond_with_data("test@blacklanternsecurity.com")
|
|
37
35
|
fastapi_process = start_fastapi_server()
|
|
38
36
|
|
|
39
37
|
try:
|
|
40
|
-
|
|
41
38
|
# wait for the server to start with a timeout of 60 seconds
|
|
42
39
|
start_time = time.time()
|
|
43
40
|
while True:
|
|
@@ -185,7 +185,6 @@ async def test_dns_resolution(bbot_scanner):
|
|
|
185
185
|
|
|
186
186
|
@pytest.mark.asyncio
|
|
187
187
|
async def test_wildcards(bbot_scanner):
|
|
188
|
-
|
|
189
188
|
scan = bbot_scanner("1.1.1.1")
|
|
190
189
|
helpers = scan.helpers
|
|
191
190
|
|
|
@@ -634,7 +633,6 @@ def custom_lookup(query, rdtype):
|
|
|
634
633
|
|
|
635
634
|
@pytest.mark.asyncio
|
|
636
635
|
async def test_wildcard_deduplication(bbot_scanner):
|
|
637
|
-
|
|
638
636
|
custom_lookup = """
|
|
639
637
|
def custom_lookup(query, rdtype):
|
|
640
638
|
if rdtype == "TXT" and query.strip(".").endswith("evilcorp.com"):
|
|
@@ -670,7 +668,6 @@ def custom_lookup(query, rdtype):
|
|
|
670
668
|
|
|
671
669
|
@pytest.mark.asyncio
|
|
672
670
|
async def test_dns_raw_records(bbot_scanner):
|
|
673
|
-
|
|
674
671
|
from bbot.modules.base import BaseModule
|
|
675
672
|
|
|
676
673
|
class DummyModule(BaseModule):
|
|
@@ -733,7 +730,7 @@ async def test_dns_raw_records(bbot_scanner):
|
|
|
733
730
|
dummy_module = DummyModule(scan)
|
|
734
731
|
scan.modules["dummy_module"] = dummy_module
|
|
735
732
|
events = [e async for e in scan.async_start()]
|
|
736
|
-
# no raw records should be
|
|
733
|
+
# no raw records should be output
|
|
737
734
|
assert 0 == len([e for e in events if e.type == "RAW_DNS_RECORD"])
|
|
738
735
|
# but they should still make it to the module
|
|
739
736
|
assert 1 == len(
|
|
@@ -14,7 +14,6 @@ async def test_engine():
|
|
|
14
14
|
return_errored = False
|
|
15
15
|
|
|
16
16
|
class TestEngineServer(EngineServer):
|
|
17
|
-
|
|
18
17
|
CMDS = {
|
|
19
18
|
0: "return_thing",
|
|
20
19
|
1: "yield_stuff",
|
|
@@ -54,7 +53,6 @@ async def test_engine():
|
|
|
54
53
|
raise
|
|
55
54
|
|
|
56
55
|
class TestEngineClient(EngineClient):
|
|
57
|
-
|
|
58
56
|
SERVER_CLASS = TestEngineServer
|
|
59
57
|
|
|
60
58
|
async def return_thing(self, n):
|
|
@@ -9,7 +9,6 @@ from bbot.core.helpers.regexes import event_uuid_regex
|
|
|
9
9
|
|
|
10
10
|
@pytest.mark.asyncio
|
|
11
11
|
async def test_events(events, helpers):
|
|
12
|
-
|
|
13
12
|
scan = Scanner()
|
|
14
13
|
await scan._prep()
|
|
15
14
|
|
|
@@ -617,7 +616,6 @@ async def test_events(events, helpers):
|
|
|
617
616
|
|
|
618
617
|
@pytest.mark.asyncio
|
|
619
618
|
async def test_event_discovery_context():
|
|
620
|
-
|
|
621
619
|
from bbot.modules.base import BaseModule
|
|
622
620
|
|
|
623
621
|
scan = Scanner("evilcorp.com")
|
|
@@ -16,7 +16,7 @@ from bbot.scanner import Scanner, Preset
|
|
|
16
16
|
def test_preset_descriptions():
|
|
17
17
|
# ensure very preset has a description
|
|
18
18
|
preset = Preset()
|
|
19
|
-
for
|
|
19
|
+
for loaded_preset, category, preset_path, original_filename in preset.all_presets.values():
|
|
20
20
|
assert (
|
|
21
21
|
loaded_preset.description
|
|
22
22
|
), f'Preset "{loaded_preset.name}" at {original_filename} does not have a description.'
|
|
@@ -68,7 +68,6 @@ def test_core():
|
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
def test_preset_yaml(clean_default_config):
|
|
71
|
-
|
|
72
71
|
import yaml
|
|
73
72
|
|
|
74
73
|
preset1 = Preset(
|
|
@@ -171,7 +170,6 @@ exclude_flags:
|
|
|
171
170
|
|
|
172
171
|
|
|
173
172
|
def test_preset_scope():
|
|
174
|
-
|
|
175
173
|
# test target merging
|
|
176
174
|
scan = Scanner("1.2.3.4", preset=Preset.from_dict({"target": ["evilcorp.com"]}))
|
|
177
175
|
assert {str(h) for h in scan.preset.target.seeds.hosts} == {"1.2.3.4/32", "evilcorp.com"}
|
|
@@ -378,7 +376,6 @@ def test_preset_scope():
|
|
|
378
376
|
|
|
379
377
|
@pytest.mark.asyncio
|
|
380
378
|
async def test_preset_logging():
|
|
381
|
-
|
|
382
379
|
scan = Scanner()
|
|
383
380
|
|
|
384
381
|
# test individual verbosity levels
|
|
@@ -711,7 +708,6 @@ modules:
|
|
|
711
708
|
|
|
712
709
|
|
|
713
710
|
def test_preset_include():
|
|
714
|
-
|
|
715
711
|
# test recursive preset inclusion
|
|
716
712
|
|
|
717
713
|
custom_preset_dir_1 = bbot_test_dir / "custom_preset_dir"
|
|
@@ -883,7 +879,6 @@ def test_preset_module_disablement(clean_default_config):
|
|
|
883
879
|
|
|
884
880
|
|
|
885
881
|
def test_preset_require_exclude():
|
|
886
|
-
|
|
887
882
|
def get_module_flags(p):
|
|
888
883
|
for m in p.scan_modules:
|
|
889
884
|
preloaded = p.preloaded_module(m)
|
|
@@ -6,7 +6,6 @@ from ..bbot_fixtures import *
|
|
|
6
6
|
|
|
7
7
|
@pytest.mark.asyncio
|
|
8
8
|
async def test_web_engine(bbot_scanner, bbot_httpserver, httpx_mock):
|
|
9
|
-
|
|
10
9
|
from werkzeug.wrappers import Response
|
|
11
10
|
|
|
12
11
|
def server_handler(request):
|
|
@@ -134,7 +133,6 @@ async def test_request_batch_cancellation(bbot_scanner, bbot_httpserver, httpx_m
|
|
|
134
133
|
|
|
135
134
|
@pytest.mark.asyncio
|
|
136
135
|
async def test_web_helpers(bbot_scanner, bbot_httpserver, httpx_mock):
|
|
137
|
-
|
|
138
136
|
# json conversion
|
|
139
137
|
scan = bbot_scanner("evilcorp.com")
|
|
140
138
|
url = "http://www.evilcorp.com/json_test?a=b"
|
|
@@ -55,8 +55,8 @@ class TestBaddns_direct_cloudflare(BaseTestBaddns):
|
|
|
55
55
|
def check(self, module_test, events):
|
|
56
56
|
assert any(
|
|
57
57
|
e.type == "FINDING"
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
and "Possible [AWS Bucket Takeover Detection] via direct BadDNS analysis. Indicator: [[Words: The specified bucket does not exist | Condition: and | Part: body] Matchers-Condition: and] Trigger: [self] baddns Module: [CNAME]"
|
|
59
|
+
in e.data["description"]
|
|
60
|
+
for e in events
|
|
61
61
|
), "Failed to emit FINDING"
|
|
62
62
|
assert any("baddns-cname" in e.tags for e in events), "Failed to add baddns tag"
|
|
@@ -26,7 +26,7 @@ class TestBypass403_collapsethreshold(ModuleTestBase):
|
|
|
26
26
|
async def setup_after_prep(self, module_test):
|
|
27
27
|
respond_args = {"response_data": "alive"}
|
|
28
28
|
|
|
29
|
-
# some of these
|
|
29
|
+
# some of these won't work outside of the module because of the complex logic. This doesn't matter, we just need to get more alerts than the threshold.
|
|
30
30
|
|
|
31
31
|
query_payloads = [
|
|
32
32
|
"%09",
|