bbot 2.3.0.5397rc0__tar.gz → 2.3.0.5401rc0__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.5397rc0 → bbot-2.3.0.5401rc0}/PKG-INFO +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/__init__.py +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/defaults.yml +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnstlsrpt.py +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dotnetnuke.py +2 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/cloudcheck.py +3 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/dnsresolve.py +1 -3
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/excavate.py +15 -14
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/paramminer_headers.py +4 -4
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/report/asn.py +8 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/kitchen-sink.yml +0 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/dotnet-audit.yml +0 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/args.py +3 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/preset.py +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test__module__tests.py +0 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -3
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_dns.py +0 -3
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_engine.py +0 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_events.py +0 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_helpers.py +0 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_presets.py +1 -6
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_target.py +0 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_web.py +0 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +3 -3
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +11 -11
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +1 -3
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +10 -10
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +2 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +2 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +13 -13
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/devops_mutations.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/nameservers.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/paramminer_headers.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/paramminer_parameters.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/valid_url_schemes.txt +1 -1
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/pyproject.toml +2 -2
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/LICENSE +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/README.md +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/cli.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/config/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/config/files.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/config/logger.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/core.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/engine.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/event/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/event/base.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/event/helpers.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/flags.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/bloom.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/command.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/diff.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/files.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/libmagic.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/process.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/regexes.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/url.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/web.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/modules.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/multiprocess.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/shared_deps.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/db/sql/models.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/errors.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/logger.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/apkpure.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/baddns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/base.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bevigil.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/builtwith.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bypass403.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/c99.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/censys.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/certspotter.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/chaos.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/code_repository.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/columbus.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/credshed.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/crt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/dastardly.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/ffuf.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/nuclei.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/vhost.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dehashed.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/digitorus.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsbimi.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/docker_pull.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/emailformat.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/extractous.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/filedownload.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/git.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/git_clone.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/github_org.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/gitlab.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/gowitness.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/host_header.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/httpx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/hunt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/hunterio.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/base.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internetdb.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ip2location.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ipstack.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/jadx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/leakix.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/myssl.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/newsletters.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ntlm.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/oauth.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/otx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/asset_inventory.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/base.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/csv.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/discord.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/emails.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/http.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/json.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/mysql.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/postgres.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/python.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/slack.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/sqlite.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/teams.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/txt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/pgp.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/portscan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/postman.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/postman_download.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/report/base.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/robots.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/secretsdb.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/skymem.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/smuggler.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/social.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/sslcert.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/telerik.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/github.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/sql.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/trickest.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/trufflehog.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/urlscan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/viewdns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/virustotal.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wayback.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wpscan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/baddns-thorough.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/fast.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/spider.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/manager.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/path.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/scanner.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/stats.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/target.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scripts/docs.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/conftest.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/coverage.cfg +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/fastapi_test.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/run_tests.sh +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test.conf +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_cli.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
|
@@ -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)
|
|
@@ -70,7 +70,7 @@ class dnstlsrpt(BaseModule):
|
|
|
70
70
|
return False, "event is wildcard"
|
|
71
71
|
|
|
72
72
|
# there's no value in inspecting service records
|
|
73
|
-
if service_record(event.host)
|
|
73
|
+
if service_record(event.host) is True:
|
|
74
74
|
return False, "service record detected"
|
|
75
75
|
|
|
76
76
|
return True
|
|
@@ -31,7 +31,7 @@ class dotnetnuke(BaseModule):
|
|
|
31
31
|
self.interactsh_subdomain_tags = {}
|
|
32
32
|
self.interactsh_instance = None
|
|
33
33
|
|
|
34
|
-
if self.scan.config.get("interactsh_disable", False)
|
|
34
|
+
if self.scan.config.get("interactsh_disable", False) is False:
|
|
35
35
|
try:
|
|
36
36
|
self.interactsh_instance = self.helpers.interactsh()
|
|
37
37
|
self.interactsh_domain = await self.interactsh_instance.register(callback=self.interactsh_callback)
|
|
@@ -93,7 +93,7 @@ class dotnetnuke(BaseModule):
|
|
|
93
93
|
detected = True
|
|
94
94
|
break
|
|
95
95
|
|
|
96
|
-
if detected
|
|
96
|
+
if detected is True:
|
|
97
97
|
# DNNPersonalization Deserialization Detection
|
|
98
98
|
for probe_url in [f'{event.data["url"]}/__', f'{event.data["url"]}/', f'{event.data["url"]}']:
|
|
99
99
|
result = await self.helpers.request(probe_url, cookies=self.exploit_probe)
|
|
@@ -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
|
|
@@ -471,7 +471,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
471
471
|
self.parameterExtractorCallbackDict[r.__name__] = r
|
|
472
472
|
regexes_component_list.append(f"${r.__name__} = {r.discovery_regex}")
|
|
473
473
|
regexes_component = " ".join(regexes_component_list)
|
|
474
|
-
self.yara_rules[
|
|
474
|
+
self.yara_rules["parameter_extraction"] = (
|
|
475
475
|
rf'rule parameter_extraction {{meta: description = "contains POST form" strings: {regexes_component} condition: any of them}}'
|
|
476
476
|
)
|
|
477
477
|
|
|
@@ -503,7 +503,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
503
503
|
)
|
|
504
504
|
|
|
505
505
|
if self.excavate.helpers.validate_parameter(parameter_name, parameter_type):
|
|
506
|
-
if self.excavate.in_bl(parameter_name)
|
|
506
|
+
if self.excavate.in_bl(parameter_name) is False:
|
|
507
507
|
parsed_url = urlparse(url)
|
|
508
508
|
description = f"HTTP Extracted Parameter [{parameter_name}] ({parameterExtractorSubModule.name} Submodule)"
|
|
509
509
|
data = {
|
|
@@ -579,7 +579,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
579
579
|
for signature_name, signature in self.signatures.items():
|
|
580
580
|
signature_component_list.append(rf"${signature_name} = {signature}")
|
|
581
581
|
signature_component = " ".join(signature_component_list)
|
|
582
|
-
self.yara_rules[
|
|
582
|
+
self.yara_rules["error_detection"] = (
|
|
583
583
|
f'rule error_detection {{meta: description = "contains a verbose error message" strings: {signature_component} condition: any of them}}'
|
|
584
584
|
)
|
|
585
585
|
|
|
@@ -608,7 +608,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
608
608
|
for regex_name, regex in self.regexes.items():
|
|
609
609
|
regexes_component_list.append(rf"${regex_name} = /\b{regex.pattern}/ nocase")
|
|
610
610
|
regexes_component = " ".join(regexes_component_list)
|
|
611
|
-
self.yara_rules[
|
|
611
|
+
self.yara_rules["serialization_detection"] = (
|
|
612
612
|
f'rule serialization_detection {{meta: description = "contains a possible serialized object" strings: {regexes_component} condition: any of them}}'
|
|
613
613
|
)
|
|
614
614
|
|
|
@@ -656,7 +656,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
656
656
|
continue
|
|
657
657
|
if parsed_url.scheme in ["http", "https"]:
|
|
658
658
|
continue
|
|
659
|
-
abort_if
|
|
659
|
+
def abort_if(e):
|
|
660
|
+
return e.scope_distance > 0
|
|
660
661
|
finding_data = {"host": str(host), "description": f"Non-HTTP URI: {parsed_url.geturl()}"}
|
|
661
662
|
await self.report(finding_data, event, yara_rule_settings, discovery_context, abort_if=abort_if)
|
|
662
663
|
protocol_data = {"protocol": parsed_url.scheme, "host": str(host)}
|
|
@@ -769,7 +770,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
769
770
|
def __init__(self, excavate):
|
|
770
771
|
super().__init__(excavate)
|
|
771
772
|
if excavate.scan.dns_yara_rules_uncompiled:
|
|
772
|
-
self.yara_rules[
|
|
773
|
+
self.yara_rules["hostname_extraction"] = excavate.scan.dns_yara_rules_uncompiled
|
|
773
774
|
|
|
774
775
|
async def process(self, yara_results, event, yara_rule_settings, discovery_context):
|
|
775
776
|
for identifier in yara_results.keys():
|
|
@@ -817,7 +818,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
817
818
|
self.parameter_extraction = bool(modules_WEB_PARAMETER)
|
|
818
819
|
|
|
819
820
|
self.retain_querystring = False
|
|
820
|
-
if self.config.get("retain_querystring", False)
|
|
821
|
+
if self.config.get("retain_querystring", False) is True:
|
|
821
822
|
self.retain_querystring = True
|
|
822
823
|
|
|
823
824
|
for module in self.scan.modules.values():
|
|
@@ -847,7 +848,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
847
848
|
rules_content = f.read()
|
|
848
849
|
self.debug(f"Successfully loaded custom yara rules file [{self.custom_yara_rules}]")
|
|
849
850
|
else:
|
|
850
|
-
self.debug(
|
|
851
|
+
self.debug("Custom yara rules file is NOT a file. Will attempt to treat it as rule content")
|
|
851
852
|
rules_content = self.custom_yara_rules
|
|
852
853
|
|
|
853
854
|
self.debug(f"Final combined yara rule contents: {rules_content}")
|
|
@@ -860,7 +861,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
860
861
|
|
|
861
862
|
rule_match = await self.helpers.re.search(self.yara_rule_name_regex, rule_content)
|
|
862
863
|
if not rule_match:
|
|
863
|
-
return False,
|
|
864
|
+
return False, "Custom Yara formatted incorrectly: could not find rule name"
|
|
864
865
|
|
|
865
866
|
rule_name = rule_match.groups(1)[0]
|
|
866
867
|
c = CustomExtractor(self)
|
|
@@ -936,8 +937,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
936
937
|
if event.type == "HTTP_RESPONSE":
|
|
937
938
|
# Harvest GET parameters from URL, if it came directly from the target, and parameter extraction is enabled
|
|
938
939
|
if (
|
|
939
|
-
self.parameter_extraction
|
|
940
|
-
and self.url_querystring_remove
|
|
940
|
+
self.parameter_extraction is True
|
|
941
|
+
and self.url_querystring_remove is False
|
|
941
942
|
and str(event.parent.parent.module) == "TARGET"
|
|
942
943
|
):
|
|
943
944
|
self.debug(f"Processing target URL [{urlunparse(event.parsed_url)}] for GET parameters")
|
|
@@ -949,7 +950,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
949
950
|
regex_name,
|
|
950
951
|
additional_params,
|
|
951
952
|
) in extract_params_url(event.parsed_url):
|
|
952
|
-
if self.in_bl(parameter_name)
|
|
953
|
+
if self.in_bl(parameter_name) is False:
|
|
953
954
|
description = f"HTTP Extracted Parameter [{parameter_name}] (Target URL)"
|
|
954
955
|
data = {
|
|
955
956
|
"host": parsed_url.hostname,
|
|
@@ -985,7 +986,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
985
986
|
cookie_name = header_value.split("=")[0]
|
|
986
987
|
cookie_value = header_value.split("=")[1].split(";")[0]
|
|
987
988
|
|
|
988
|
-
if self.in_bl(cookie_value)
|
|
989
|
+
if self.in_bl(cookie_value) is False:
|
|
989
990
|
self.assigned_cookies[cookie_name] = cookie_value
|
|
990
991
|
description = f"Set-Cookie Assigned Cookie [{cookie_name}]"
|
|
991
992
|
data = {
|
|
@@ -1029,7 +1030,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
1029
1030
|
regex_name,
|
|
1030
1031
|
additional_params,
|
|
1031
1032
|
) in extract_params_location(header_value, event.parsed_url):
|
|
1032
|
-
if self.in_bl(parameter_name)
|
|
1033
|
+
if self.in_bl(parameter_name) is False:
|
|
1033
1034
|
description = f"HTTP Extracted Parameter [{parameter_name}] (Location Header)"
|
|
1034
1035
|
data = {
|
|
1035
1036
|
"host": parsed_url.hostname,
|
|
@@ -172,7 +172,7 @@ class paramminer_headers(BaseModule):
|
|
|
172
172
|
self.debug(f"Error initializing compare helper: {e}")
|
|
173
173
|
return
|
|
174
174
|
batch_size = await self.count_test(url)
|
|
175
|
-
if batch_size
|
|
175
|
+
if batch_size is None or batch_size <= 0:
|
|
176
176
|
self.debug(f"Failed to get baseline max {self.compare_mode} count, aborting")
|
|
177
177
|
return
|
|
178
178
|
self.debug(f"Resolved batch_size at {str(batch_size)}")
|
|
@@ -195,11 +195,11 @@ class paramminer_headers(BaseModule):
|
|
|
195
195
|
baseline = await self.helpers.request(url)
|
|
196
196
|
if baseline is None:
|
|
197
197
|
return
|
|
198
|
-
if str(baseline.status_code)[0] in
|
|
198
|
+
if str(baseline.status_code)[0] in {"4", "5"}:
|
|
199
199
|
return
|
|
200
200
|
for count, args, kwargs in self.gen_count_args(url):
|
|
201
201
|
r = await self.helpers.request(*args, **kwargs)
|
|
202
|
-
if r is not None and
|
|
202
|
+
if r is not None and str(r.status_code)[0] not in {"4", "5"}:
|
|
203
203
|
return count
|
|
204
204
|
|
|
205
205
|
def gen_count_args(self, url):
|
|
@@ -222,7 +222,7 @@ class paramminer_headers(BaseModule):
|
|
|
222
222
|
elif len(group) > 1 or (len(group) == 1 and len(reasons) == 0):
|
|
223
223
|
for group_slice in self.helpers.split_list(group):
|
|
224
224
|
match, reasons, reflection, subject_response = await self.check_batch(compare_helper, url, group_slice)
|
|
225
|
-
if match
|
|
225
|
+
if match is False:
|
|
226
226
|
async for r in self.binary_search(compare_helper, url, group_slice, reasons, reflection):
|
|
227
227
|
yield r
|
|
228
228
|
else:
|
|
@@ -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}"')
|
|
@@ -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):
|
|
@@ -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"
|
{bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py
RENAMED
|
@@ -895,7 +895,7 @@ endobj
|
|
|
895
895
|
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
|
|
896
896
|
>> /Rotate 0 /Trans <<
|
|
897
897
|
|
|
898
|
-
>>
|
|
898
|
+
>>
|
|
899
899
|
/Type /Page
|
|
900
900
|
>>
|
|
901
901
|
endobj
|
|
@@ -906,7 +906,7 @@ endobj
|
|
|
906
906
|
endobj
|
|
907
907
|
5 0 obj
|
|
908
908
|
<<
|
|
909
|
-
/Author (anonymous) /CreationDate (D:20240807182842+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240807182842+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
|
|
909
|
+
/Author (anonymous) /CreationDate (D:20240807182842+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240807182842+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
|
|
910
910
|
/Subject (unspecified) /Title (untitled) /Trapped /False
|
|
911
911
|
>>
|
|
912
912
|
endobj
|
|
@@ -924,17 +924,17 @@ Gas2F;0/Hc'SYHA/+V9II1V!>b>-epMEjN4$Udfu3WXha!?H`crq_UNGP5IS$'WT'SF]Hm/eEhd_JY>@
|
|
|
924
924
|
endobj
|
|
925
925
|
xref
|
|
926
926
|
0 8
|
|
927
|
-
0000000000 65535 f
|
|
928
|
-
0000000073 00000 n
|
|
929
|
-
0000000104 00000 n
|
|
930
|
-
0000000211 00000 n
|
|
931
|
-
0000000414 00000 n
|
|
932
|
-
0000000482 00000 n
|
|
933
|
-
0000000778 00000 n
|
|
934
|
-
0000000837 00000 n
|
|
927
|
+
0000000000 65535 f
|
|
928
|
+
0000000073 00000 n
|
|
929
|
+
0000000104 00000 n
|
|
930
|
+
0000000211 00000 n
|
|
931
|
+
0000000414 00000 n
|
|
932
|
+
0000000482 00000 n
|
|
933
|
+
0000000778 00000 n
|
|
934
|
+
0000000837 00000 n
|
|
935
935
|
trailer
|
|
936
936
|
<<
|
|
937
|
-
/ID
|
|
937
|
+
/ID
|
|
938
938
|
[<3c7340500fa2fe72523c5e6f07511599><3c7340500fa2fe72523c5e6f07511599>]
|
|
939
939
|
% ReportLab generated PDF document -- digest (http://www.reportlab.com)
|
|
940
940
|
|
|
@@ -101,6 +101,4 @@ class TestGoWitnessWithBlob(TestGowitness):
|
|
|
101
101
|
def check(self, module_test, events):
|
|
102
102
|
webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
|
|
103
103
|
assert webscreenshots, "failed to raise WEBSCREENSHOT events"
|
|
104
|
-
assert all(
|
|
105
|
-
"blob" in e.data and e.data["blob"] for e in webscreenshots
|
|
106
|
-
), "blob not found in WEBSCREENSHOT data"
|
|
104
|
+
assert all("blob" in e.data and e.data["blob"] for e in webscreenshots), "blob not found in WEBSCREENSHOT data"
|
|
@@ -10,16 +10,16 @@ class TestNewsletters(ModuleTestBase):
|
|
|
10
10
|
modules_overrides = ["speculate", "httpx", "newsletters"]
|
|
11
11
|
|
|
12
12
|
html_with_newsletter = """
|
|
13
|
-
<input aria-required="true"
|
|
14
|
-
class="form-input form-input-text required"
|
|
15
|
-
data-at="form-email"
|
|
16
|
-
data-describedby="form-validation-error-box-element-5"
|
|
17
|
-
data-label-inside="Enter your email"
|
|
18
|
-
id="field-5f329905b4bfe1027b44513f94b50363-0"
|
|
19
|
-
name="Enter your email"
|
|
20
|
-
placeholder="Enter your email"
|
|
21
|
-
required=""
|
|
22
|
-
title="Enter your email"
|
|
13
|
+
<input aria-required="true"
|
|
14
|
+
class="form-input form-input-text required"
|
|
15
|
+
data-at="form-email"
|
|
16
|
+
data-describedby="form-validation-error-box-element-5"
|
|
17
|
+
data-label-inside="Enter your email"
|
|
18
|
+
id="field-5f329905b4bfe1027b44513f94b50363-0"
|
|
19
|
+
name="Enter your email"
|
|
20
|
+
placeholder="Enter your email"
|
|
21
|
+
required=""
|
|
22
|
+
title="Enter your email"
|
|
23
23
|
type="email" value=""/>
|
|
24
24
|
"""
|
|
25
25
|
|
{bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py
RENAMED
|
@@ -10,7 +10,8 @@ class TestNTLM(ModuleTestBase):
|
|
|
10
10
|
request_args = {"uri": "/", "headers": {"test": "header"}}
|
|
11
11
|
module_test.set_expect_requests(request_args, {})
|
|
12
12
|
request_args = {
|
|
13
|
-
"uri": "/oab/",
|
|
13
|
+
"uri": "/oab/",
|
|
14
|
+
"headers": {"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="},
|
|
14
15
|
}
|
|
15
16
|
respond_args = {
|
|
16
17
|
"headers": {
|
{bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py
RENAMED
|
@@ -9,10 +9,10 @@ class TestPGP(ModuleTestBase):
|
|
|
9
9
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
10
10
|
<link href='/assets/css/pks.min.css' rel='stylesheet' type='text/css'>
|
|
11
11
|
<style type="text/css">
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
.uid { color: green; text-decoration: underline; }
|
|
14
14
|
.warn { color: red; font-weight: bold; }
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
</style></head><body><h1>Search results for 'blacklanternsecurity.com'</h1><pre>Type bits/keyID cr. time exp time key expir
|
|
17
17
|
</pre>
|
|
18
18
|
|
{bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
from .base import ModuleTestBase
|
|
2
2
|
|
|
3
3
|
smuggler_text = r"""
|
|
4
|
-
______ _
|
|
5
|
-
/ _____) | |
|
|
6
|
-
( (____ ____ _ _ ____ ____| | _____ ____
|
|
4
|
+
______ _
|
|
5
|
+
/ _____) | |
|
|
6
|
+
( (____ ____ _ _ ____ ____| | _____ ____
|
|
7
7
|
\____ \| \| | | |/ _ |/ _ | || ___ |/ ___)
|
|
8
|
-
_____) ) | | | |_| ( (_| ( (_| | || ____| |
|
|
9
|
-
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|
|
|
10
|
-
(_____(_____|
|
|
8
|
+
_____) ) | | | |_| ( (_| ( (_| | || ____| |
|
|
9
|
+
(______/|_|_|_|____/ \___ |\___ |\_)_____)_|
|
|
10
|
+
(_____(_____|
|
|
11
11
|
|
|
12
12
|
@defparam v1.1
|
|
13
13
|
|
|
@@ -16,13 +16,13 @@ smuggler_text = r"""
|
|
|
16
16
|
[+] Endpoint : /
|
|
17
17
|
[+] Configfile : default.py
|
|
18
18
|
[+] Timeout : 5.0 seconds
|
|
19
|
-
[+] Cookies : 1 (Appending to the attack)
|
|
20
|
-
[nameprefix1] : Checking TECL...
|
|
21
|
-
[nameprefix1] : Checking CLTE...
|
|
22
|
-
[nameprefix1] : OK (TECL: 0.61 - 405) (CLTE: 0.62 - 405)
|
|
23
|
-
[tabprefix1] : Checking TECL...git
|
|
24
|
-
[tabprefix1] : Checking CLTE...
|
|
25
|
-
[tabprefix1] : Checking TECL...
|
|
19
|
+
[+] Cookies : 1 (Appending to the attack)
|
|
20
|
+
[nameprefix1] : Checking TECL...
|
|
21
|
+
[nameprefix1] : Checking CLTE...
|
|
22
|
+
[nameprefix1] : OK (TECL: 0.61 - 405) (CLTE: 0.62 - 405)
|
|
23
|
+
[tabprefix1] : Checking TECL...git
|
|
24
|
+
[tabprefix1] : Checking CLTE...
|
|
25
|
+
[tabprefix1] : Checking TECL...
|
|
26
26
|
[tabprefix1] : Checking CLTE...
|
|
27
27
|
[tabprefix1] : Checking TECL...
|
|
28
28
|
[tabprefix1] : Checking CLTE...
|
|
@@ -63,7 +63,7 @@ class TestSpeculate_OpenPorts(ModuleTestBase):
|
|
|
63
63
|
events_data.add(e.data)
|
|
64
64
|
assert all(
|
|
65
65
|
x in events_data
|
|
66
|
-
|
|
66
|
+
for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
|
|
67
67
|
)
|
|
68
68
|
|
|
69
69
|
|
|
@@ -78,5 +78,5 @@ class TestSpeculate_OpenPorts_Portscanner(TestSpeculate_OpenPorts):
|
|
|
78
78
|
events_data.add(e.data)
|
|
79
79
|
assert not any(
|
|
80
80
|
x in events_data
|
|
81
|
-
|
|
81
|
+
for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
|
|
82
82
|
)
|