bbot 2.1.2.5175rc0__tar.gz → 2.1.2.5180rc0__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.2.5175rc0 → bbot-2.1.2.5180rc0}/PKG-INFO +1 -1
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/__init__.py +1 -1
- bbot-2.1.2.5180rc0/bbot/db/sql/models.py +147 -0
- bbot-2.1.2.5180rc0/bbot/modules/output/sqlite.py +29 -0
- bbot-2.1.2.5180rc0/bbot/modules/templates/sql.py +89 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/scanner.py +1 -1
- bbot-2.1.2.5180rc0/bbot/test/test_step_2/module_tests/test_module_sqlite.py +18 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/pyproject.toml +1 -1
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/LICENSE +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/README.md +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/cli.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/config/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/config/files.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/config/logger.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/core.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/engine.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/event/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/event/base.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/event/helpers.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/flags.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/bloom.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/command.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/diff.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/files.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/libmagic.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/process.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/regexes.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/url.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/web/web.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/modules.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/core/shared_deps.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/defaults.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/errors.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/logger.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/apkpure.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/baddns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/base.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bevigil.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/builtwith.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/bypass403.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/c99.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/censys.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/certspotter.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/chaos.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/code_repository.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/columbus.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/credshed.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/crt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/deadly/dastardly.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/deadly/ffuf.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/deadly/nuclei.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/deadly/vhost.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dehashed.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/digitorus.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/docker_pull.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/dotnetnuke.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/emailformat.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/extractous.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/filedownload.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/git.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/git_clone.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/github_org.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/gitlab.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/gowitness.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/host_header.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/httpx.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/hunt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/hunterio.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/base.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/cloudcheck.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/dnsresolve.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/excavate.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/internetdb.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/ip2location.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/ipstack.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/leakix.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/myssl.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/newsletters.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/ntlm.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/oauth.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/otx.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/asset_inventory.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/base.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/csv.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/discord.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/emails.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/http.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/json.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/python.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/slack.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/teams.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/txt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/paramminer_headers.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/pgp.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/portscan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/postman.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/postman_download.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/report/asn.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/report/base.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/robots.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/secretsdb.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/skymem.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/smuggler.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/social.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/sslcert.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/telerik.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/templates/github.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/trickest.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/trufflehog.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/urlscan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/viewdns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/virustotal.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/wayback.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/wpscan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/baddns-thorough.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/kitchen-sink.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/spider.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/manager.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/preset/args.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/preset/path.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/preset/preset.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/stats.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scanner/target.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/scripts/docs.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/conftest.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/coverage.cfg +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/run_tests.sh +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test.conf +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_cli.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_dns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_engine.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_events.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_helpers.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_presets.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_target.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_1/test_web.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/devops_mutations.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/nameservers.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
- {bbot-2.1.2.5175rc0 → bbot-2.1.2.5180rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# This file contains SQLModel (Pydantic + SQLAlchemy) models for BBOT events, scans, and targets.
|
|
2
|
+
# Used by the SQL output modules, but portable for outside use.
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import logging
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from pydantic import ConfigDict
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
from typing_extensions import Annotated
|
|
10
|
+
from pydantic.functional_validators import AfterValidator
|
|
11
|
+
from sqlmodel import inspect, Column, Field, SQLModel, JSON, String, DateTime as SQLADateTime
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
log = logging.getLogger("bbot_server.models")
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def naive_datetime_validator(d: datetime):
|
|
18
|
+
"""
|
|
19
|
+
Converts all dates into UTC, then drops timezone information.
|
|
20
|
+
|
|
21
|
+
This is needed to prevent inconsistencies in sqlite, because it is timezone-naive.
|
|
22
|
+
"""
|
|
23
|
+
# drop timezone info
|
|
24
|
+
return d.replace(tzinfo=None)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
NaiveUTC = Annotated[datetime, AfterValidator(naive_datetime_validator)]
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class CustomJSONEncoder(json.JSONEncoder):
|
|
31
|
+
def default(self, obj):
|
|
32
|
+
# handle datetime
|
|
33
|
+
if isinstance(obj, datetime):
|
|
34
|
+
return obj.isoformat()
|
|
35
|
+
return super().default(obj)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class BBOTBaseModel(SQLModel):
|
|
39
|
+
model_config = ConfigDict(extra="ignore")
|
|
40
|
+
|
|
41
|
+
def __init__(self, *args, **kwargs):
|
|
42
|
+
self._validated = None
|
|
43
|
+
super().__init__(*args, **kwargs)
|
|
44
|
+
|
|
45
|
+
@property
|
|
46
|
+
def validated(self):
|
|
47
|
+
try:
|
|
48
|
+
if self._validated is None:
|
|
49
|
+
self._validated = self.__class__.model_validate(self)
|
|
50
|
+
return self._validated
|
|
51
|
+
except AttributeError:
|
|
52
|
+
return self
|
|
53
|
+
|
|
54
|
+
def to_json(self, **kwargs):
|
|
55
|
+
return json.dumps(self.validated.model_dump(), sort_keys=True, cls=CustomJSONEncoder, **kwargs)
|
|
56
|
+
|
|
57
|
+
@classmethod
|
|
58
|
+
def _pk_column_names(cls):
|
|
59
|
+
return [column.name for column in inspect(cls).primary_key]
|
|
60
|
+
|
|
61
|
+
def __hash__(self):
|
|
62
|
+
return hash(self.to_json())
|
|
63
|
+
|
|
64
|
+
def __eq__(self, other):
|
|
65
|
+
return hash(self) == hash(other)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
### EVENT ###
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
class Event(BBOTBaseModel, table=True):
|
|
72
|
+
|
|
73
|
+
def __init__(self, *args, **kwargs):
|
|
74
|
+
super().__init__(*args, **kwargs)
|
|
75
|
+
data = self._get_data(self.data, self.type)
|
|
76
|
+
self.data = {self.type: data}
|
|
77
|
+
if self.host:
|
|
78
|
+
self.reverse_host = self.host[::-1]
|
|
79
|
+
|
|
80
|
+
def get_data(self):
|
|
81
|
+
return self._get_data(self.data, self.type)
|
|
82
|
+
|
|
83
|
+
@staticmethod
|
|
84
|
+
def _get_data(data, type):
|
|
85
|
+
# handle SIEM-friendly format
|
|
86
|
+
if isinstance(data, dict) and list(data) == [type]:
|
|
87
|
+
return data[type]
|
|
88
|
+
return data
|
|
89
|
+
|
|
90
|
+
uuid: str = Field(
|
|
91
|
+
primary_key=True,
|
|
92
|
+
index=True,
|
|
93
|
+
nullable=False,
|
|
94
|
+
)
|
|
95
|
+
id: str = Field(index=True)
|
|
96
|
+
type: str = Field(index=True)
|
|
97
|
+
scope_description: str
|
|
98
|
+
data: dict = Field(sa_type=JSON)
|
|
99
|
+
host: Optional[str]
|
|
100
|
+
port: Optional[int]
|
|
101
|
+
netloc: Optional[str]
|
|
102
|
+
# store the host in reversed form for efficient lookups by domain
|
|
103
|
+
reverse_host: Optional[str] = Field(default="", exclude=True, index=True)
|
|
104
|
+
resolved_hosts: List = Field(default=[], sa_type=JSON)
|
|
105
|
+
dns_children: dict = Field(default={}, sa_type=JSON)
|
|
106
|
+
web_spider_distance: int = 10
|
|
107
|
+
scope_distance: int = Field(default=10, index=True)
|
|
108
|
+
scan: str = Field(index=True)
|
|
109
|
+
timestamp: NaiveUTC = Field(index=True)
|
|
110
|
+
parent: str = Field(index=True)
|
|
111
|
+
tags: List = Field(default=[], sa_type=JSON)
|
|
112
|
+
module: str = Field(index=True)
|
|
113
|
+
module_sequence: str
|
|
114
|
+
discovery_context: str = ""
|
|
115
|
+
discovery_path: List[str] = Field(default=[], sa_type=JSON)
|
|
116
|
+
parent_chain: List[str] = Field(default=[], sa_type=JSON)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
### SCAN ###
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class Scan(BBOTBaseModel, table=True):
|
|
123
|
+
id: str = Field(primary_key=True)
|
|
124
|
+
name: str
|
|
125
|
+
status: str
|
|
126
|
+
started_at: NaiveUTC = Field(index=True)
|
|
127
|
+
finished_at: Optional[NaiveUTC] = Field(default=None, sa_column=Column(SQLADateTime, nullable=True, index=True))
|
|
128
|
+
duration_seconds: Optional[float] = Field(default=None)
|
|
129
|
+
duration: Optional[str] = Field(default=None)
|
|
130
|
+
target: dict = Field(sa_type=JSON)
|
|
131
|
+
preset: dict = Field(sa_type=JSON)
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
### TARGET ###
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class Target(BBOTBaseModel, table=True):
|
|
138
|
+
name: str = "Default Target"
|
|
139
|
+
strict_scope: bool = False
|
|
140
|
+
seeds: List = Field(default=[], sa_type=JSON)
|
|
141
|
+
whitelist: List = Field(default=None, sa_type=JSON)
|
|
142
|
+
blacklist: List = Field(default=[], sa_type=JSON)
|
|
143
|
+
hash: str = Field(sa_column=Column("hash", String, unique=True, primary_key=True, index=True))
|
|
144
|
+
scope_hash: str = Field(sa_column=Column("scope_hash", String, index=True))
|
|
145
|
+
seed_hash: str = Field(sa_column=Column("seed_hashhash", String, index=True))
|
|
146
|
+
whitelist_hash: str = Field(sa_column=Column("whitelist_hash", String, index=True))
|
|
147
|
+
blacklist_hash: str = Field(sa_column=Column("blacklist_hash", String, index=True))
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from bbot.modules.templates.sql import SQLTemplate
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class SQLite(SQLTemplate):
|
|
7
|
+
watched_events = ["*"]
|
|
8
|
+
meta = {"description": "Output scan data to a SQLite database"}
|
|
9
|
+
options = {
|
|
10
|
+
"database": "",
|
|
11
|
+
}
|
|
12
|
+
options_desc = {
|
|
13
|
+
"database": "The path to the sqlite database file",
|
|
14
|
+
}
|
|
15
|
+
deps_pip = ["sqlmodel", "sqlalchemy-utils", "aiosqlite"]
|
|
16
|
+
|
|
17
|
+
async def setup(self):
|
|
18
|
+
db_file = self.config.get("database", "")
|
|
19
|
+
if not db_file:
|
|
20
|
+
db_file = self.scan.home / "output.sqlite"
|
|
21
|
+
db_file = Path(db_file)
|
|
22
|
+
if not db_file.is_absolute():
|
|
23
|
+
db_file = self.scan.home / db_file
|
|
24
|
+
self.db_file = db_file
|
|
25
|
+
self.db_file.parent.mkdir(parents=True, exist_ok=True)
|
|
26
|
+
return await super().setup()
|
|
27
|
+
|
|
28
|
+
def connection_string(self, mask_password=False):
|
|
29
|
+
return f"sqlite+aiosqlite:///{self.db_file}"
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
from sqlmodel import SQLModel
|
|
2
|
+
from sqlalchemy.orm import sessionmaker
|
|
3
|
+
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
|
4
|
+
from sqlalchemy_utils.functions import database_exists, create_database
|
|
5
|
+
|
|
6
|
+
from bbot.db.sql.models import Event, Scan, Target
|
|
7
|
+
from bbot.modules.output.base import BaseOutputModule
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class SQLTemplate(BaseOutputModule):
|
|
11
|
+
meta = {"description": "SQL output module template"}
|
|
12
|
+
options = {
|
|
13
|
+
"protocol": "",
|
|
14
|
+
"database": "bbot",
|
|
15
|
+
"username": "",
|
|
16
|
+
"password": "",
|
|
17
|
+
"host": "127.0.0.1",
|
|
18
|
+
"port": 0,
|
|
19
|
+
}
|
|
20
|
+
options_desc = {
|
|
21
|
+
"protocol": "The protocol to use to connect to the database",
|
|
22
|
+
"database": "The database to use",
|
|
23
|
+
"username": "The username to use to connect to the database",
|
|
24
|
+
"password": "The password to use to connect to the database",
|
|
25
|
+
"host": "The host to use to connect to the database",
|
|
26
|
+
"port": "The port to use to connect to the database",
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
async def setup(self):
|
|
30
|
+
self.database = self.config.get("database", "bbot")
|
|
31
|
+
self.username = self.config.get("username", "")
|
|
32
|
+
self.password = self.config.get("password", "")
|
|
33
|
+
self.host = self.config.get("host", "127.0.0.1")
|
|
34
|
+
self.port = self.config.get("port", 0)
|
|
35
|
+
|
|
36
|
+
self.log.info(f"Connecting to {self.connection_string(mask_password=True)}")
|
|
37
|
+
|
|
38
|
+
self.engine = create_async_engine(self.connection_string())
|
|
39
|
+
# Create a session factory bound to the engine
|
|
40
|
+
self.async_session = sessionmaker(self.engine, expire_on_commit=False, class_=AsyncSession)
|
|
41
|
+
await self.init_database()
|
|
42
|
+
return True
|
|
43
|
+
|
|
44
|
+
async def handle_event(self, event):
|
|
45
|
+
event_obj = Event(**event.json()).validated
|
|
46
|
+
|
|
47
|
+
async with self.async_session() as session:
|
|
48
|
+
async with session.begin():
|
|
49
|
+
# insert event
|
|
50
|
+
session.add(event_obj)
|
|
51
|
+
|
|
52
|
+
# if it's a SCAN event, create/update the scan and target
|
|
53
|
+
if event_obj.type == "SCAN":
|
|
54
|
+
event_data = event_obj.get_data()
|
|
55
|
+
if not isinstance(event_data, dict):
|
|
56
|
+
raise ValueError(f"Invalid data for SCAN event: {event_data}")
|
|
57
|
+
scan = Scan(**event_data).validated
|
|
58
|
+
await session.merge(scan) # Insert or update scan
|
|
59
|
+
|
|
60
|
+
target_data = event_data.get("target", {})
|
|
61
|
+
if not isinstance(target_data, dict):
|
|
62
|
+
raise ValueError(f"Invalid target for SCAN event: {target_data}")
|
|
63
|
+
target = Target(**target_data).validated
|
|
64
|
+
await session.merge(target) # Insert or update target
|
|
65
|
+
|
|
66
|
+
await session.commit()
|
|
67
|
+
|
|
68
|
+
async def init_database(self):
|
|
69
|
+
async with self.engine.begin() as conn:
|
|
70
|
+
# Check if the database exists using the connection's engine URL
|
|
71
|
+
if not await conn.run_sync(lambda sync_conn: database_exists(sync_conn.engine.url)):
|
|
72
|
+
await conn.run_sync(lambda sync_conn: create_database(sync_conn.engine.url))
|
|
73
|
+
# Create all tables
|
|
74
|
+
await conn.run_sync(SQLModel.metadata.create_all)
|
|
75
|
+
|
|
76
|
+
def connection_string(self, mask_password=False):
|
|
77
|
+
connection_string = f"{self.protocol}://"
|
|
78
|
+
if self.username:
|
|
79
|
+
password = self.password
|
|
80
|
+
if mask_password:
|
|
81
|
+
password = "****"
|
|
82
|
+
connection_string += f"{self.username}:{password}"
|
|
83
|
+
if self.host:
|
|
84
|
+
connection_string += f"@{self.host}"
|
|
85
|
+
if self.port:
|
|
86
|
+
connection_string += f":{self.port}"
|
|
87
|
+
if self.database:
|
|
88
|
+
connection_string += f"/{self.database}"
|
|
89
|
+
return connection_string
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import sqlite3
|
|
2
|
+
from .base import ModuleTestBase
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class TestSQLite(ModuleTestBase):
|
|
6
|
+
targets = ["evilcorp.com"]
|
|
7
|
+
|
|
8
|
+
def check(self, module_test, events):
|
|
9
|
+
sqlite_output_file = module_test.scan.home / "output.sqlite"
|
|
10
|
+
assert sqlite_output_file.exists(), "SQLite output file not found"
|
|
11
|
+
with sqlite3.connect(sqlite_output_file) as db:
|
|
12
|
+
cursor = db.cursor()
|
|
13
|
+
cursor.execute("SELECT * FROM event")
|
|
14
|
+
assert len(cursor.fetchall()) > 0, "No events found in SQLite database"
|
|
15
|
+
cursor.execute("SELECT * FROM scan")
|
|
16
|
+
assert len(cursor.fetchall()) > 0, "No scans found in SQLite database"
|
|
17
|
+
cursor.execute("SELECT * FROM target")
|
|
18
|
+
assert len(cursor.fetchall()) > 0, "No targets found in SQLite database"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|