bbot 2.1.0.5082rc0__tar.gz → 2.1.1__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.1.0.5082rc0 → bbot-2.1.1}/PKG-INFO +1 -1
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/__init__.py +1 -1
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/config/logger.py +28 -1
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/depsinstaller/installer.py +9 -1
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/gowitness.py +42 -44
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/trufflehog.py +1 -1
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/wpscan.py +8 -2
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/conftest.py +38 -17
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/pyproject.toml +2 -2
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/LICENSE +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/README.md +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/cli.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/config/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/config/files.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/core.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/engine.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/event/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/event/base.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/event/helpers.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/flags.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/bloom.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/command.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/diff.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/files.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/process.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/regexes.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/url.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/web/web.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/modules.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/core/shared_deps.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/defaults.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/errors.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/logger.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/apkpure.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/baddns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/base.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bevigil.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/builtwith.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/bypass403.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/c99.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/censys.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/certspotter.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/chaos.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/code_repository.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/columbus.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/credshed.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/crt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/deadly/dastardly.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/deadly/ffuf.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/deadly/nuclei.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/deadly/vhost.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dehashed.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/digitorus.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/docker_pull.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/dotnetnuke.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/emailformat.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/filedownload.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/git.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/git_clone.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/github_org.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/gitlab.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/host_header.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/httpx.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/hunt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/hunterio.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/base.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/cloudcheck.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/dnsresolve.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/excavate.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/internetdb.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/ip2location.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/ipstack.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/leakix.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/myssl.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/newsletters.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/ntlm.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/oauth.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/otx.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/asset_inventory.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/base.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/csv.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/discord.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/emails.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/http.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/json.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/python.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/slack.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/teams.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/txt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/paramminer_headers.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/pgp.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/portscan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/postman.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/postman_download.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/report/asn.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/report/base.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/robots.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/secretsdb.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/skymem.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/smuggler.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/social.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/sslcert.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/telerik.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/templates/github.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/trickest.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/unstructured.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/urlscan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/viewdns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/virustotal.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/wayback.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/baddns-thorough.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/kitchen-sink.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/spider.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web/dotnet-audit.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/manager.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/preset/args.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/preset/path.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/preset/preset.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/scanner.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/stats.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scanner/target.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/scripts/docs.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/coverage.cfg +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/run_tests.sh +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test.conf +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test__module__tests.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_cli.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_dns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_engine.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_events.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_helpers.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_presets.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_target.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_1/test_web.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_columbus.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_unstructured.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/devops_mutations.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/ffuf_shortname_candidates.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/nameservers.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/paramminer_headers.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/paramminer_parameters.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/valid_url_schemes.txt +0 -0
- {bbot-2.1.0.5082rc0 → bbot-2.1.1}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
|
@@ -5,6 +5,7 @@ from copy import copy
|
|
|
5
5
|
import multiprocessing
|
|
6
6
|
import logging.handlers
|
|
7
7
|
from pathlib import Path
|
|
8
|
+
from contextlib import suppress
|
|
8
9
|
|
|
9
10
|
from ..helpers.misc import mkdir, error_and_exit
|
|
10
11
|
from ...logger import colorize, loglevel_mapping
|
|
@@ -71,10 +72,36 @@ class BBOTLogger:
|
|
|
71
72
|
# Start the QueueListener
|
|
72
73
|
self.listener = logging.handlers.QueueListener(self.queue, *self.log_handlers.values())
|
|
73
74
|
self.listener.start()
|
|
74
|
-
atexit.register(self.
|
|
75
|
+
atexit.register(self.cleanup_logging)
|
|
75
76
|
|
|
76
77
|
self.log_level = logging.INFO
|
|
77
78
|
|
|
79
|
+
def cleanup_logging(self):
|
|
80
|
+
# Close the queue handler
|
|
81
|
+
with suppress(Exception):
|
|
82
|
+
self.queue_handler.close()
|
|
83
|
+
|
|
84
|
+
# Clean root logger
|
|
85
|
+
root_logger = logging.getLogger()
|
|
86
|
+
for handler in list(root_logger.handlers):
|
|
87
|
+
with suppress(Exception):
|
|
88
|
+
root_logger.removeHandler(handler)
|
|
89
|
+
with suppress(Exception):
|
|
90
|
+
handler.close()
|
|
91
|
+
|
|
92
|
+
# Clean all other loggers
|
|
93
|
+
for logger in logging.Logger.manager.loggerDict.values():
|
|
94
|
+
if hasattr(logger, "handlers"): # Logger, not PlaceHolder
|
|
95
|
+
for handler in list(logger.handlers):
|
|
96
|
+
with suppress(Exception):
|
|
97
|
+
logger.removeHandler(handler)
|
|
98
|
+
with suppress(Exception):
|
|
99
|
+
handler.close()
|
|
100
|
+
|
|
101
|
+
# Stop queue listener
|
|
102
|
+
with suppress(Exception):
|
|
103
|
+
self.listener.stop()
|
|
104
|
+
|
|
78
105
|
def setup_queue_handler(self, logging_queue=None, log_level=logging.DEBUG):
|
|
79
106
|
if logging_queue is None:
|
|
80
107
|
logging_queue = self.queue
|
|
@@ -342,7 +342,15 @@ class DepsInstaller:
|
|
|
342
342
|
# ensure tldextract data is cached
|
|
343
343
|
self.parent_helper.tldextract("evilcorp.co.uk")
|
|
344
344
|
# command: package_name
|
|
345
|
-
core_deps = {
|
|
345
|
+
core_deps = {
|
|
346
|
+
"unzip": "unzip",
|
|
347
|
+
"zipinfo": "unzip",
|
|
348
|
+
"curl": "curl",
|
|
349
|
+
"git": "git",
|
|
350
|
+
"make": "make",
|
|
351
|
+
"gcc": "gcc",
|
|
352
|
+
"bash": "bash",
|
|
353
|
+
}
|
|
346
354
|
for command, package_name in core_deps.items():
|
|
347
355
|
if not self.parent_helper.which(command):
|
|
348
356
|
to_install.add(package_name)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
import
|
|
2
|
+
import aiosqlite
|
|
3
3
|
import multiprocessing
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from contextlib import suppress
|
|
@@ -34,6 +34,7 @@ class gowitness(BaseModule):
|
|
|
34
34
|
"idle_timeout": "Skip the current gowitness batch if it stalls for longer than this many seconds",
|
|
35
35
|
}
|
|
36
36
|
deps_common = ["chromium"]
|
|
37
|
+
deps_pip = ["aiosqlite"]
|
|
37
38
|
deps_ansible = [
|
|
38
39
|
{
|
|
39
40
|
"name": "Download gowitness",
|
|
@@ -72,7 +73,7 @@ class gowitness(BaseModule):
|
|
|
72
73
|
|
|
73
74
|
# make sure we have a working chrome install
|
|
74
75
|
chrome_test_pass = False
|
|
75
|
-
for binary in ("chrome", "chromium", custom_chrome_path):
|
|
76
|
+
for binary in ("chrome", "chromium", "chromium-browser", custom_chrome_path):
|
|
76
77
|
binary_path = self.helpers.which(binary)
|
|
77
78
|
if binary_path and Path(binary_path).is_file():
|
|
78
79
|
chrome_test_proc = await self.run_process([binary_path, "--version"])
|
|
@@ -136,7 +137,8 @@ class gowitness(BaseModule):
|
|
|
136
137
|
return
|
|
137
138
|
|
|
138
139
|
# emit web screenshots
|
|
139
|
-
|
|
140
|
+
new_screenshots = await self.get_new_screenshots()
|
|
141
|
+
for filename, screenshot in new_screenshots.items():
|
|
140
142
|
url = screenshot["url"]
|
|
141
143
|
final_url = screenshot["final_url"]
|
|
142
144
|
filename = self.screenshot_path / screenshot["filename"]
|
|
@@ -150,7 +152,8 @@ class gowitness(BaseModule):
|
|
|
150
152
|
)
|
|
151
153
|
|
|
152
154
|
# emit URLs
|
|
153
|
-
|
|
155
|
+
new_network_logs = await self.get_new_network_logs()
|
|
156
|
+
for url, row in new_network_logs.items():
|
|
154
157
|
ip = row["ip"]
|
|
155
158
|
status_code = row["status_code"]
|
|
156
159
|
tags = [f"status-{status_code}", f"ip-{ip}", "spider-danger"]
|
|
@@ -168,7 +171,8 @@ class gowitness(BaseModule):
|
|
|
168
171
|
)
|
|
169
172
|
|
|
170
173
|
# emit technologies
|
|
171
|
-
|
|
174
|
+
new_technologies = await self.get_new_technologies()
|
|
175
|
+
for _, row in new_technologies.items():
|
|
172
176
|
parent_id = row["url_id"]
|
|
173
177
|
parent_url = self.screenshots_taken[parent_id]
|
|
174
178
|
parent_event = event_dict[parent_url]
|
|
@@ -207,59 +211,53 @@ class gowitness(BaseModule):
|
|
|
207
211
|
command += ["--timeout", str(self.timeout)]
|
|
208
212
|
return command
|
|
209
213
|
|
|
210
|
-
|
|
211
|
-
def new_screenshots(self):
|
|
214
|
+
async def get_new_screenshots(self):
|
|
212
215
|
screenshots = {}
|
|
213
216
|
if self.db_path.is_file():
|
|
214
|
-
with
|
|
215
|
-
con.row_factory =
|
|
217
|
+
async with aiosqlite.connect(str(self.db_path)) as con:
|
|
218
|
+
con.row_factory = aiosqlite.Row
|
|
216
219
|
con.text_factory = self.helpers.smart_decode
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
screenshots[_id] = row
|
|
220
|
+
async with con.execute("SELECT * FROM urls") as cur:
|
|
221
|
+
async for row in cur:
|
|
222
|
+
row = dict(row)
|
|
223
|
+
_id = row["id"]
|
|
224
|
+
if _id not in self.screenshots_taken:
|
|
225
|
+
self.screenshots_taken[_id] = row["url"]
|
|
226
|
+
screenshots[_id] = row
|
|
225
227
|
return screenshots
|
|
226
228
|
|
|
227
|
-
|
|
228
|
-
def new_network_logs(self):
|
|
229
|
+
async def get_new_network_logs(self):
|
|
229
230
|
network_logs = dict()
|
|
230
231
|
if self.db_path.is_file():
|
|
231
|
-
with
|
|
232
|
-
con.row_factory =
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
network_logs[url] = row
|
|
232
|
+
async with aiosqlite.connect(str(self.db_path)) as con:
|
|
233
|
+
con.row_factory = aiosqlite.Row
|
|
234
|
+
async with con.execute("SELECT * FROM network_logs") as cur:
|
|
235
|
+
async for row in cur:
|
|
236
|
+
row = dict(row)
|
|
237
|
+
url = row["final_url"]
|
|
238
|
+
if url not in self.connections_logged:
|
|
239
|
+
self.connections_logged.add(url)
|
|
240
|
+
network_logs[url] = row
|
|
241
241
|
return network_logs
|
|
242
242
|
|
|
243
|
-
|
|
244
|
-
def new_technologies(self):
|
|
243
|
+
async def get_new_technologies(self):
|
|
245
244
|
technologies = dict()
|
|
246
245
|
if self.db_path.is_file():
|
|
247
|
-
with
|
|
248
|
-
con.row_factory =
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
technologies[_id] = row
|
|
246
|
+
async with aiosqlite.connect(str(self.db_path)) as con:
|
|
247
|
+
con.row_factory = aiosqlite.Row
|
|
248
|
+
async with con.execute("SELECT * FROM technologies") as cur:
|
|
249
|
+
async for row in cur:
|
|
250
|
+
_id = row["id"]
|
|
251
|
+
if _id not in self.technologies_found:
|
|
252
|
+
self.technologies_found.add(_id)
|
|
253
|
+
row = dict(row)
|
|
254
|
+
technologies[_id] = row
|
|
257
255
|
return technologies
|
|
258
256
|
|
|
259
|
-
def cur_execute(self, cur, query):
|
|
257
|
+
async def cur_execute(self, cur, query):
|
|
260
258
|
try:
|
|
261
|
-
return cur.execute(query)
|
|
262
|
-
except
|
|
259
|
+
return await cur.execute(query)
|
|
260
|
+
except aiosqlite.OperationalError as e:
|
|
263
261
|
self.warning(f"Error executing query: {query}: {e}")
|
|
264
262
|
return []
|
|
265
263
|
|
|
@@ -33,7 +33,7 @@ class wpscan(BaseModule):
|
|
|
33
33
|
deps_apt = ["curl", "make", "gcc"]
|
|
34
34
|
deps_ansible = [
|
|
35
35
|
{
|
|
36
|
-
"name": "Install Ruby Deps (Debian
|
|
36
|
+
"name": "Install Ruby Deps (Debian)",
|
|
37
37
|
"package": {"name": ["ruby-rubygems", "ruby-dev"], "state": "present"},
|
|
38
38
|
"become": True,
|
|
39
39
|
"when": "ansible_facts['os_family'] == 'Debian'",
|
|
@@ -48,7 +48,13 @@ class wpscan(BaseModule):
|
|
|
48
48
|
"name": "Install Ruby Deps (Fedora)",
|
|
49
49
|
"package": {"name": ["rubygems", "ruby-devel"], "state": "present"},
|
|
50
50
|
"become": True,
|
|
51
|
-
"when": "ansible_facts['os_family'] == '
|
|
51
|
+
"when": "ansible_facts['os_family'] == 'RedHat'",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"name": "Install Ruby Deps (Alpine)",
|
|
55
|
+
"package": {"name": ["ruby-dev", "ruby-bundler"], "state": "present"},
|
|
56
|
+
"become": True,
|
|
57
|
+
"when": "ansible_facts['os_family'] == 'Alpine'",
|
|
52
58
|
},
|
|
53
59
|
{
|
|
54
60
|
"name": "Install wpscan gem",
|
|
@@ -13,17 +13,31 @@ from bbot.core import CORE
|
|
|
13
13
|
from bbot.core.helpers.misc import execute_sync_or_async
|
|
14
14
|
from bbot.core.helpers.interactsh import server_list as interactsh_servers
|
|
15
15
|
|
|
16
|
+
# silence stdout + trace
|
|
17
|
+
root_logger = logging.getLogger()
|
|
18
|
+
pytest_debug_file = Path(__file__).parent.parent.parent / "pytest_debug.log"
|
|
19
|
+
print(f"pytest_debug_file: {pytest_debug_file}")
|
|
20
|
+
debug_handler = logging.FileHandler(pytest_debug_file)
|
|
21
|
+
debug_handler.setLevel(logging.DEBUG)
|
|
22
|
+
debug_format = logging.Formatter("%(asctime)s [%(levelname)s] %(name)s %(filename)s:%(lineno)s %(message)s")
|
|
23
|
+
debug_handler.setFormatter(debug_format)
|
|
24
|
+
root_logger.addHandler(debug_handler)
|
|
16
25
|
|
|
17
26
|
test_config = OmegaConf.load(Path(__file__).parent / "test.conf")
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
|
|
28
|
+
os.environ["BBOT_DEBUG"] = "True"
|
|
29
|
+
CORE.logger.log_level = logging.DEBUG
|
|
30
|
+
|
|
31
|
+
# silence all stderr output:
|
|
32
|
+
stderr_handler = CORE.logger.log_handlers["stderr"]
|
|
33
|
+
stderr_handler.setLevel(logging.CRITICAL)
|
|
34
|
+
handlers = list(CORE.logger.listener.handlers)
|
|
35
|
+
handlers.remove(stderr_handler)
|
|
36
|
+
CORE.logger.listener.handlers = tuple(handlers)
|
|
37
|
+
|
|
38
|
+
for h in root_logger.handlers:
|
|
39
|
+
h.addFilter(lambda x: x.levelname not in ("STDOUT", "TRACE"))
|
|
40
|
+
|
|
27
41
|
|
|
28
42
|
CORE.merge_default(test_config)
|
|
29
43
|
|
|
@@ -33,6 +47,13 @@ def assert_all_responses_were_requested() -> bool:
|
|
|
33
47
|
return False
|
|
34
48
|
|
|
35
49
|
|
|
50
|
+
@pytest.fixture(autouse=True)
|
|
51
|
+
def silence_live_logging():
|
|
52
|
+
for handler in logging.getLogger().handlers:
|
|
53
|
+
if type(handler).__name__ == "_LiveLoggingStreamHandler":
|
|
54
|
+
handler.setLevel(logging.CRITICAL)
|
|
55
|
+
|
|
56
|
+
|
|
36
57
|
@pytest.fixture
|
|
37
58
|
def bbot_httpserver():
|
|
38
59
|
server = HTTPServer(host="127.0.0.1", port=8888, threaded=True)
|
|
@@ -202,20 +223,20 @@ def pytest_terminal_summary(terminalreporter, exitstatus, config): # pragma: no
|
|
|
202
223
|
errors = len(stats.get("error", []))
|
|
203
224
|
failed = stats.get("failed", [])
|
|
204
225
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
f"{GREEN}Passed: {passed}{RESET}, {RED}Failed: {len(failed)}{RESET}, {YELLOW}Skipped: {skipped}{RESET}, Errors: {errors}"
|
|
226
|
+
terminalreporter.write("\nTest Session Summary:")
|
|
227
|
+
terminalreporter.write(f"\nTotal tests run: {total_tests}")
|
|
228
|
+
terminalreporter.write(
|
|
229
|
+
f"\n{GREEN}Passed: {passed}{RESET}, {RED}Failed: {len(failed)}{RESET}, {YELLOW}Skipped: {skipped}{RESET}, Errors: {errors}"
|
|
209
230
|
)
|
|
210
231
|
|
|
211
232
|
if failed:
|
|
212
|
-
|
|
233
|
+
terminalreporter.write(f"\n{RED}Detailed failed test report:{RESET}")
|
|
213
234
|
for item in failed:
|
|
214
235
|
test_name = item.nodeid.split("::")[-1] if "::" in item.nodeid else item.nodeid
|
|
215
236
|
file_and_line = f"{item.location[0]}:{item.location[1]}" # File path and line number
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
237
|
+
terminalreporter.write(f"\n{BLUE}Test Name: {test_name}{RESET} {CYAN}({file_and_line}){RESET}")
|
|
238
|
+
terminalreporter.write(f"\n{RED}Location: {item.nodeid} at {item.location[0]}:{item.location[1]}{RESET}")
|
|
239
|
+
terminalreporter.write(f"\n{RED}Failure details:\n{item.longreprtext}{RESET}")
|
|
219
240
|
|
|
220
241
|
|
|
221
242
|
# BELOW: debugging for frozen/hung tests
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "bbot"
|
|
3
|
-
version = "v2.1.
|
|
3
|
+
version = "v2.1.1"
|
|
4
4
|
description = "OSINT automation for hackers."
|
|
5
5
|
authors = [
|
|
6
6
|
"TheTechromancer",
|
|
@@ -100,7 +100,7 @@ extend-exclude = "(test_step_1/test_manager_*)"
|
|
|
100
100
|
[tool.poetry-dynamic-versioning]
|
|
101
101
|
enable = false
|
|
102
102
|
metadata = false
|
|
103
|
-
format-jinja = 'v2.1.
|
|
103
|
+
format-jinja = 'v2.1.1{% if branch == "dev" %}.{{ distance }}rc{% endif %}'
|
|
104
104
|
|
|
105
105
|
[tool.poetry-dynamic-versioning.substitution]
|
|
106
106
|
files = ["*/__init__.py"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|