bbot 2.3.0.5397rc0__tar.gz → 2.3.0.5401rc0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of bbot might be problematic. Click here for more details.

Files changed (420) hide show
  1. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/PKG-INFO +1 -1
  2. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/__init__.py +1 -1
  3. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/defaults.yml +1 -1
  4. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnstlsrpt.py +1 -1
  5. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dotnetnuke.py +2 -2
  6. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/cloudcheck.py +3 -1
  7. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/dnsresolve.py +1 -3
  8. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/excavate.py +15 -14
  9. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/paramminer_headers.py +4 -4
  10. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/report/asn.py +8 -1
  11. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/kitchen-sink.yml +0 -2
  12. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/dotnet-audit.yml +0 -1
  13. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/args.py +3 -1
  14. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/preset.py +1 -1
  15. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test__module__tests.py +0 -1
  16. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -3
  17. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -1
  18. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_dns.py +0 -3
  19. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_engine.py +0 -2
  20. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_events.py +0 -2
  21. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_helpers.py +0 -1
  22. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_presets.py +1 -6
  23. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_target.py +0 -1
  24. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_web.py +0 -2
  25. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +3 -3
  26. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +11 -11
  27. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +1 -3
  28. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +10 -10
  29. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +2 -1
  30. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +2 -2
  31. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +13 -13
  32. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -2
  33. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +1 -1
  34. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/devops_mutations.txt +1 -1
  35. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +1 -1
  36. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/nameservers.txt +1 -1
  37. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/paramminer_headers.txt +1 -1
  38. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/paramminer_parameters.txt +1 -1
  39. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +1 -1
  40. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/valid_url_schemes.txt +1 -1
  41. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/pyproject.toml +2 -2
  42. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/LICENSE +0 -0
  43. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/README.md +0 -0
  44. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/cli.py +0 -0
  45. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/__init__.py +0 -0
  46. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/config/__init__.py +0 -0
  47. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/config/files.py +0 -0
  48. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/config/logger.py +0 -0
  49. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/core.py +0 -0
  50. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/engine.py +0 -0
  51. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/event/__init__.py +0 -0
  52. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/event/base.py +0 -0
  53. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/event/helpers.py +0 -0
  54. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/flags.py +0 -0
  55. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/__init__.py +0 -0
  56. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/async_helpers.py +0 -0
  57. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/bloom.py +0 -0
  58. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/cache.py +0 -0
  59. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/command.py +0 -0
  60. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
  61. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
  62. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
  63. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/diff.py +0 -0
  64. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/__init__.py +0 -0
  65. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/brute.py +0 -0
  66. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/dns.py +0 -0
  67. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/engine.py +0 -0
  68. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/helpers.py +0 -0
  69. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/dns/mock.py +0 -0
  70. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/files.py +0 -0
  71. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/helper.py +0 -0
  72. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/interactsh.py +0 -0
  73. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/libmagic.py +0 -0
  74. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/misc.py +0 -0
  75. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/names_generator.py +0 -0
  76. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/ntlm.py +0 -0
  77. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/process.py +0 -0
  78. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/ratelimiter.py +0 -0
  79. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/regex.py +0 -0
  80. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/regexes.py +0 -0
  81. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/url.py +0 -0
  82. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/validators.py +0 -0
  83. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/__init__.py +0 -0
  84. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/client.py +0 -0
  85. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/engine.py +0 -0
  86. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
  87. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/web/web.py +0 -0
  88. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/helpers/wordcloud.py +0 -0
  89. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/modules.py +0 -0
  90. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/multiprocess.py +0 -0
  91. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/core/shared_deps.py +0 -0
  92. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/db/sql/models.py +0 -0
  93. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/errors.py +0 -0
  94. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/logger.py +0 -0
  95. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/__init__.py +0 -0
  96. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ajaxpro.py +0 -0
  97. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/anubisdb.py +0 -0
  98. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/apkpure.py +0 -0
  99. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/azure_realm.py +0 -0
  100. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/azure_tenant.py +0 -0
  101. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/baddns.py +0 -0
  102. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/baddns_direct.py +0 -0
  103. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/baddns_zone.py +0 -0
  104. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/badsecrets.py +0 -0
  105. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/base.py +0 -0
  106. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bevigil.py +0 -0
  107. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/binaryedge.py +0 -0
  108. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_amazon.py +0 -0
  109. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_azure.py +0 -0
  110. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_digitalocean.py +0 -0
  111. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_file_enum.py +0 -0
  112. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_firebase.py +0 -0
  113. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bucket_google.py +0 -0
  114. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bufferoverrun.py +0 -0
  115. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/builtwith.py +0 -0
  116. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/bypass403.py +0 -0
  117. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/c99.py +0 -0
  118. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/censys.py +0 -0
  119. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/certspotter.py +0 -0
  120. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/chaos.py +0 -0
  121. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/code_repository.py +0 -0
  122. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/columbus.py +0 -0
  123. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/credshed.py +0 -0
  124. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/crt.py +0 -0
  125. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/dastardly.py +0 -0
  126. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/ffuf.py +0 -0
  127. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/nuclei.py +0 -0
  128. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/deadly/vhost.py +0 -0
  129. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dehashed.py +0 -0
  130. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/digitorus.py +0 -0
  131. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsbimi.py +0 -0
  132. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsbrute.py +0 -0
  133. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
  134. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnscaa.py +0 -0
  135. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnscommonsrv.py +0 -0
  136. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dnsdumpster.py +0 -0
  137. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/docker_pull.py +0 -0
  138. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/dockerhub.py +0 -0
  139. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/emailformat.py +0 -0
  140. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/extractous.py +0 -0
  141. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ffuf_shortnames.py +0 -0
  142. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/filedownload.py +0 -0
  143. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/fingerprintx.py +0 -0
  144. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/fullhunt.py +0 -0
  145. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/generic_ssrf.py +0 -0
  146. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/git.py +0 -0
  147. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/git_clone.py +0 -0
  148. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/github_codesearch.py +0 -0
  149. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/github_org.py +0 -0
  150. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/github_workflows.py +0 -0
  151. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/gitlab.py +0 -0
  152. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/google_playstore.py +0 -0
  153. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/gowitness.py +0 -0
  154. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/hackertarget.py +0 -0
  155. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/host_header.py +0 -0
  156. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/httpx.py +0 -0
  157. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/hunt.py +0 -0
  158. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/hunterio.py +0 -0
  159. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/iis_shortnames.py +0 -0
  160. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/__init__.py +0 -0
  161. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/aggregate.py +0 -0
  162. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/base.py +0 -0
  163. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internal/speculate.py +0 -0
  164. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/internetdb.py +0 -0
  165. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ip2location.py +0 -0
  166. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ipneighbor.py +0 -0
  167. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ipstack.py +0 -0
  168. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/jadx.py +0 -0
  169. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/leakix.py +0 -0
  170. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/myssl.py +0 -0
  171. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/newsletters.py +0 -0
  172. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/ntlm.py +0 -0
  173. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/oauth.py +0 -0
  174. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/otx.py +0 -0
  175. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/__init__.py +0 -0
  176. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/asset_inventory.py +0 -0
  177. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/base.py +0 -0
  178. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/csv.py +0 -0
  179. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/discord.py +0 -0
  180. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/emails.py +0 -0
  181. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/http.py +0 -0
  182. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/json.py +0 -0
  183. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/mysql.py +0 -0
  184. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/neo4j.py +0 -0
  185. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/postgres.py +0 -0
  186. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/python.py +0 -0
  187. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/slack.py +0 -0
  188. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/splunk.py +0 -0
  189. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/sqlite.py +0 -0
  190. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/stdout.py +0 -0
  191. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/subdomains.py +0 -0
  192. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/teams.py +0 -0
  193. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/txt.py +0 -0
  194. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/web_report.py +0 -0
  195. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/output/websocket.py +0 -0
  196. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/paramminer_cookies.py +0 -0
  197. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/paramminer_getparams.py +0 -0
  198. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/passivetotal.py +0 -0
  199. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/pgp.py +0 -0
  200. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/portscan.py +0 -0
  201. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/postman.py +0 -0
  202. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/postman_download.py +0 -0
  203. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/rapiddns.py +0 -0
  204. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/report/affiliates.py +0 -0
  205. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/report/base.py +0 -0
  206. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/robots.py +0 -0
  207. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/secretsdb.py +0 -0
  208. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/securitytrails.py +0 -0
  209. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/securitytxt.py +0 -0
  210. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/shodan_dns.py +0 -0
  211. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/sitedossier.py +0 -0
  212. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/skymem.py +0 -0
  213. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/smuggler.py +0 -0
  214. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/social.py +0 -0
  215. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/sslcert.py +0 -0
  216. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/subdomaincenter.py +0 -0
  217. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/subdomainradar.py +0 -0
  218. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/telerik.py +0 -0
  219. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/bucket.py +0 -0
  220. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/github.py +0 -0
  221. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/postman.py +0 -0
  222. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/shodan.py +0 -0
  223. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/sql.py +0 -0
  224. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
  225. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/templates/webhook.py +0 -0
  226. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/trickest.py +0 -0
  227. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/trufflehog.py +0 -0
  228. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/url_manipulation.py +0 -0
  229. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/urlscan.py +0 -0
  230. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/viewdns.py +0 -0
  231. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/virustotal.py +0 -0
  232. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wafw00f.py +0 -0
  233. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wappalyzer.py +0 -0
  234. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wayback.py +0 -0
  235. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/wpscan.py +0 -0
  236. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/modules/zoomeye.py +0 -0
  237. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/baddns-thorough.yml +0 -0
  238. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/cloud-enum.yml +0 -0
  239. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/code-enum.yml +0 -0
  240. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/email-enum.yml +0 -0
  241. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/fast.yml +0 -0
  242. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/spider.yml +0 -0
  243. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/subdomain-enum.yml +0 -0
  244. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
  245. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/dirbust-light.yml +0 -0
  246. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
  247. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web/paramminer.yml +0 -0
  248. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web-basic.yml +0 -0
  249. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web-screenshots.yml +0 -0
  250. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/presets/web-thorough.yml +0 -0
  251. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/__init__.py +0 -0
  252. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/dispatcher.py +0 -0
  253. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/manager.py +0 -0
  254. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/__init__.py +0 -0
  255. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/conditions.py +0 -0
  256. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/environ.py +0 -0
  257. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/preset/path.py +0 -0
  258. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/scanner.py +0 -0
  259. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/stats.py +0 -0
  260. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scanner/target.py +0 -0
  261. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/scripts/docs.py +0 -0
  262. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/__init__.py +0 -0
  263. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/bbot_fixtures.py +0 -0
  264. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/conftest.py +0 -0
  265. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/coverage.cfg +0 -0
  266. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/fastapi_test.py +0 -0
  267. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/owasp_mastg.apk +0 -0
  268. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/run_tests.sh +0 -0
  269. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test.conf +0 -0
  270. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_output.ndjson +0 -0
  271. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/__init__.py +0 -0
  272. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_cli.py +0 -0
  273. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_command.py +0 -0
  274. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_config.py +0 -0
  275. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
  276. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_docs.py +0 -0
  277. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_files.py +0 -0
  278. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
  279. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
  280. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
  281. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
  282. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
  283. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_scan.py +0 -0
  284. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_1/test_scope.py +0 -0
  285. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/__init__.py +0 -0
  286. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
  287. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
  288. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
  289. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
  290. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
  291. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
  292. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
  293. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
  294. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
  295. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
  296. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
  297. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
  298. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
  299. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
  300. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
  301. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
  302. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
  303. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
  304. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
  305. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
  306. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
  307. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
  308. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
  309. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
  310. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
  311. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
  312. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
  313. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
  314. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
  315. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
  316. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
  317. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +0 -0
  318. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
  319. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
  320. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
  321. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
  322. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
  323. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
  324. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
  325. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
  326. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
  327. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
  328. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
  329. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
  330. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
  331. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
  332. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
  333. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
  334. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
  335. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
  336. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
  337. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
  338. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
  339. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
  340. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
  341. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
  342. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
  343. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
  344. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
  345. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
  346. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
  347. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
  348. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
  349. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
  350. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
  351. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
  352. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
  353. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
  354. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
  355. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
  356. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
  357. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
  358. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
  359. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
  360. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
  361. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
  362. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
  363. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
  364. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
  365. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
  366. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
  367. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
  368. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
  369. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
  370. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
  371. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
  372. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
  373. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
  374. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
  375. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
  376. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
  377. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
  378. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
  379. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
  380. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
  381. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
  382. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
  383. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
  384. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
  385. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
  386. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
  387. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
  388. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
  389. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
  390. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
  391. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
  392. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
  393. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
  394. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
  395. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
  396. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
  397. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
  398. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
  399. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
  400. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
  401. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
  402. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
  403. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
  404. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
  405. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
  406. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
  407. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
  408. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
  409. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
  410. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
  411. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
  412. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
  413. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
  414. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
  415. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
  416. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/testsslcert.pem +0 -0
  417. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/test/testsslkey.pem +0 -0
  418. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
  419. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
  420. {bbot-2.3.0.5397rc0 → bbot-2.3.0.5401rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bbot
3
- Version: 2.3.0.5397rc0
3
+ Version: 2.3.0.5401rc0
4
4
  Summary: OSINT automation for hackers.
5
5
  Home-page: https://github.com/blacklanternsecurity/bbot
6
6
  License: GPL-3.0
@@ -1,4 +1,4 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.3.0.5397rc"
2
+ __version__ = "v2.3.0.5401rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
@@ -74,7 +74,7 @@ dns:
74
74
 
75
75
  web:
76
76
  # HTTP proxy
77
- http_proxy:
77
+ http_proxy:
78
78
  # Web user-agent
79
79
  user_agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.2151.97
80
80
  # Set the maximum number of HTTP links that can be followed in a row (0 == no spidering allowed)
@@ -70,7 +70,7 @@ class dnstlsrpt(BaseModule):
70
70
  return False, "event is wildcard"
71
71
 
72
72
  # there's no value in inspecting service records
73
- if service_record(event.host) == True:
73
+ if service_record(event.host) is True:
74
74
  return False, "service record detected"
75
75
 
76
76
  return True
@@ -31,7 +31,7 @@ class dotnetnuke(BaseModule):
31
31
  self.interactsh_subdomain_tags = {}
32
32
  self.interactsh_instance = None
33
33
 
34
- if self.scan.config.get("interactsh_disable", False) == False:
34
+ if self.scan.config.get("interactsh_disable", False) is False:
35
35
  try:
36
36
  self.interactsh_instance = self.helpers.interactsh()
37
37
  self.interactsh_domain = await self.interactsh_instance.register(callback=self.interactsh_callback)
@@ -93,7 +93,7 @@ class dotnetnuke(BaseModule):
93
93
  detected = True
94
94
  break
95
95
 
96
- if detected == True:
96
+ if detected is True:
97
97
  # DNNPersonalization Deserialization Detection
98
98
  for probe_url in [f'{event.data["url"]}/__', f'{event.data["url"]}/', f'{event.data["url"]}']:
99
99
  result = await self.helpers.request(probe_url, cookies=self.exploit_probe)
@@ -57,7 +57,9 @@ class CloudCheck(BaseInterceptModule):
57
57
  for provider in self.helpers.cloud.providers.values():
58
58
  provider_name = provider.name.lower()
59
59
  base_kwargs = {
60
- "parent": event, "tags": [f"{provider.provider_type}-{provider_name}"], "_provider": provider_name
60
+ "parent": event,
61
+ "tags": [f"{provider.provider_type}-{provider_name}"],
62
+ "_provider": provider_name,
61
63
  }
62
64
  # loop through the provider's regex signatures, if any
63
65
  for event_type, sigs in provider.signatures.items():
@@ -306,9 +306,7 @@ class DNSResolve(BaseInterceptModule):
306
306
  @property
307
307
  def emit_raw_records(self):
308
308
  if self._emit_raw_records is None:
309
- watching_raw_records = any(
310
- "RAW_DNS_RECORD" in m.get_watched_events() for m in self.scan.modules.values()
311
- )
309
+ watching_raw_records = any("RAW_DNS_RECORD" in m.get_watched_events() for m in self.scan.modules.values())
312
310
  omitted_event_types = self.scan.config.get("omit_event_types", [])
313
311
  omit_raw_records = "RAW_DNS_RECORD" in omitted_event_types
314
312
  self._emit_raw_records = watching_raw_records or not omit_raw_records
@@ -471,7 +471,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
471
471
  self.parameterExtractorCallbackDict[r.__name__] = r
472
472
  regexes_component_list.append(f"${r.__name__} = {r.discovery_regex}")
473
473
  regexes_component = " ".join(regexes_component_list)
474
- self.yara_rules[f"parameter_extraction"] = (
474
+ self.yara_rules["parameter_extraction"] = (
475
475
  rf'rule parameter_extraction {{meta: description = "contains POST form" strings: {regexes_component} condition: any of them}}'
476
476
  )
477
477
 
@@ -503,7 +503,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
503
503
  )
504
504
 
505
505
  if self.excavate.helpers.validate_parameter(parameter_name, parameter_type):
506
- if self.excavate.in_bl(parameter_name) == False:
506
+ if self.excavate.in_bl(parameter_name) is False:
507
507
  parsed_url = urlparse(url)
508
508
  description = f"HTTP Extracted Parameter [{parameter_name}] ({parameterExtractorSubModule.name} Submodule)"
509
509
  data = {
@@ -579,7 +579,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
579
579
  for signature_name, signature in self.signatures.items():
580
580
  signature_component_list.append(rf"${signature_name} = {signature}")
581
581
  signature_component = " ".join(signature_component_list)
582
- self.yara_rules[f"error_detection"] = (
582
+ self.yara_rules["error_detection"] = (
583
583
  f'rule error_detection {{meta: description = "contains a verbose error message" strings: {signature_component} condition: any of them}}'
584
584
  )
585
585
 
@@ -608,7 +608,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
608
608
  for regex_name, regex in self.regexes.items():
609
609
  regexes_component_list.append(rf"${regex_name} = /\b{regex.pattern}/ nocase")
610
610
  regexes_component = " ".join(regexes_component_list)
611
- self.yara_rules[f"serialization_detection"] = (
611
+ self.yara_rules["serialization_detection"] = (
612
612
  f'rule serialization_detection {{meta: description = "contains a possible serialized object" strings: {regexes_component} condition: any of them}}'
613
613
  )
614
614
 
@@ -656,7 +656,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
656
656
  continue
657
657
  if parsed_url.scheme in ["http", "https"]:
658
658
  continue
659
- abort_if = lambda e: e.scope_distance > 0
659
+ def abort_if(e):
660
+ return e.scope_distance > 0
660
661
  finding_data = {"host": str(host), "description": f"Non-HTTP URI: {parsed_url.geturl()}"}
661
662
  await self.report(finding_data, event, yara_rule_settings, discovery_context, abort_if=abort_if)
662
663
  protocol_data = {"protocol": parsed_url.scheme, "host": str(host)}
@@ -769,7 +770,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
769
770
  def __init__(self, excavate):
770
771
  super().__init__(excavate)
771
772
  if excavate.scan.dns_yara_rules_uncompiled:
772
- self.yara_rules[f"hostname_extraction"] = excavate.scan.dns_yara_rules_uncompiled
773
+ self.yara_rules["hostname_extraction"] = excavate.scan.dns_yara_rules_uncompiled
773
774
 
774
775
  async def process(self, yara_results, event, yara_rule_settings, discovery_context):
775
776
  for identifier in yara_results.keys():
@@ -817,7 +818,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
817
818
  self.parameter_extraction = bool(modules_WEB_PARAMETER)
818
819
 
819
820
  self.retain_querystring = False
820
- if self.config.get("retain_querystring", False) == True:
821
+ if self.config.get("retain_querystring", False) is True:
821
822
  self.retain_querystring = True
822
823
 
823
824
  for module in self.scan.modules.values():
@@ -847,7 +848,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
847
848
  rules_content = f.read()
848
849
  self.debug(f"Successfully loaded custom yara rules file [{self.custom_yara_rules}]")
849
850
  else:
850
- self.debug(f"Custom yara rules file is NOT a file. Will attempt to treat it as rule content")
851
+ self.debug("Custom yara rules file is NOT a file. Will attempt to treat it as rule content")
851
852
  rules_content = self.custom_yara_rules
852
853
 
853
854
  self.debug(f"Final combined yara rule contents: {rules_content}")
@@ -860,7 +861,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
860
861
 
861
862
  rule_match = await self.helpers.re.search(self.yara_rule_name_regex, rule_content)
862
863
  if not rule_match:
863
- return False, f"Custom Yara formatted incorrectly: could not find rule name"
864
+ return False, "Custom Yara formatted incorrectly: could not find rule name"
864
865
 
865
866
  rule_name = rule_match.groups(1)[0]
866
867
  c = CustomExtractor(self)
@@ -936,8 +937,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
936
937
  if event.type == "HTTP_RESPONSE":
937
938
  # Harvest GET parameters from URL, if it came directly from the target, and parameter extraction is enabled
938
939
  if (
939
- self.parameter_extraction == True
940
- and self.url_querystring_remove == False
940
+ self.parameter_extraction is True
941
+ and self.url_querystring_remove is False
941
942
  and str(event.parent.parent.module) == "TARGET"
942
943
  ):
943
944
  self.debug(f"Processing target URL [{urlunparse(event.parsed_url)}] for GET parameters")
@@ -949,7 +950,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
949
950
  regex_name,
950
951
  additional_params,
951
952
  ) in extract_params_url(event.parsed_url):
952
- if self.in_bl(parameter_name) == False:
953
+ if self.in_bl(parameter_name) is False:
953
954
  description = f"HTTP Extracted Parameter [{parameter_name}] (Target URL)"
954
955
  data = {
955
956
  "host": parsed_url.hostname,
@@ -985,7 +986,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
985
986
  cookie_name = header_value.split("=")[0]
986
987
  cookie_value = header_value.split("=")[1].split(";")[0]
987
988
 
988
- if self.in_bl(cookie_value) == False:
989
+ if self.in_bl(cookie_value) is False:
989
990
  self.assigned_cookies[cookie_name] = cookie_value
990
991
  description = f"Set-Cookie Assigned Cookie [{cookie_name}]"
991
992
  data = {
@@ -1029,7 +1030,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
1029
1030
  regex_name,
1030
1031
  additional_params,
1031
1032
  ) in extract_params_location(header_value, event.parsed_url):
1032
- if self.in_bl(parameter_name) == False:
1033
+ if self.in_bl(parameter_name) is False:
1033
1034
  description = f"HTTP Extracted Parameter [{parameter_name}] (Location Header)"
1034
1035
  data = {
1035
1036
  "host": parsed_url.hostname,
@@ -172,7 +172,7 @@ class paramminer_headers(BaseModule):
172
172
  self.debug(f"Error initializing compare helper: {e}")
173
173
  return
174
174
  batch_size = await self.count_test(url)
175
- if batch_size == None or batch_size <= 0:
175
+ if batch_size is None or batch_size <= 0:
176
176
  self.debug(f"Failed to get baseline max {self.compare_mode} count, aborting")
177
177
  return
178
178
  self.debug(f"Resolved batch_size at {str(batch_size)}")
@@ -195,11 +195,11 @@ class paramminer_headers(BaseModule):
195
195
  baseline = await self.helpers.request(url)
196
196
  if baseline is None:
197
197
  return
198
- if str(baseline.status_code)[0] in ("4", "5"):
198
+ if str(baseline.status_code)[0] in {"4", "5"}:
199
199
  return
200
200
  for count, args, kwargs in self.gen_count_args(url):
201
201
  r = await self.helpers.request(*args, **kwargs)
202
- if r is not None and not (str(r.status_code)[0] in ("4", "5")):
202
+ if r is not None and str(r.status_code)[0] not in {"4", "5"}:
203
203
  return count
204
204
 
205
205
  def gen_count_args(self, url):
@@ -222,7 +222,7 @@ class paramminer_headers(BaseModule):
222
222
  elif len(group) > 1 or (len(group) == 1 and len(reasons) == 0):
223
223
  for group_slice in self.helpers.split_list(group):
224
224
  match, reasons, reflection, subject_response = await self.check_batch(compare_helper, url, group_slice)
225
- if match == False:
225
+ if match is False:
226
226
  async for r in self.binary_search(compare_helper, url, group_slice, reasons, reflection):
227
227
  yield r
228
228
  else:
@@ -207,7 +207,14 @@ class asn(BaseReportModule):
207
207
  return False
208
208
  asns_tried.add(asn)
209
209
  asns.append(
210
- {"asn": asn, "subnet": subnet, "name": name, "description": description, "country": country, "emails": emails}
210
+ {
211
+ "asn": asn,
212
+ "subnet": subnet,
213
+ "name": name,
214
+ "description": description,
215
+ "country": country,
216
+ "emails": emails,
217
+ }
211
218
  )
212
219
  if not asns:
213
220
  self.debug(f'No results for "{ip}"')
@@ -16,5 +16,3 @@ config:
16
16
  modules:
17
17
  baddns:
18
18
  enable_references: True
19
-
20
-
@@ -19,4 +19,3 @@ config:
19
19
  extensions: asp,aspx,ashx,asmx,ascx
20
20
  telerik:
21
21
  exploit_RAU_crypto: True
22
-
@@ -175,7 +175,9 @@ class BBOTArgs:
175
175
  def create_parser(self, *args, **kwargs):
176
176
  kwargs.update(
177
177
  {
178
- "description": "Bighuge BLS OSINT Tool", "formatter_class": argparse.RawTextHelpFormatter, "epilog": self.epilog
178
+ "description": "Bighuge BLS OSINT Tool",
179
+ "formatter_class": argparse.RawTextHelpFormatter,
180
+ "epilog": self.epilog,
179
181
  }
180
182
  )
181
183
  p = argparse.ArgumentParser(*args, **kwargs)
@@ -967,7 +967,7 @@ class Preset:
967
967
  header = ["Preset", "Category", "Description", "# Modules"]
968
968
  if include_modules:
969
969
  header.append("Modules")
970
- for (loaded_preset, category, preset_path, original_file) in self.all_presets.values():
970
+ for loaded_preset, category, preset_path, original_file in self.all_presets.values():
971
971
  loaded_preset = loaded_preset.bake()
972
972
  num_modules = f"{len(loaded_preset.scan_modules):,}"
973
973
  row = [loaded_preset.name, category, loaded_preset.description, num_modules]
@@ -15,7 +15,6 @@ module_test_files = [m.name.split("test_module_")[-1].split(".")[0] for m in _mo
15
15
 
16
16
 
17
17
  def test__module__tests():
18
-
19
18
  preset = Preset()
20
19
 
21
20
  # make sure each module has a .py file
@@ -17,7 +17,6 @@ def run_bbot_multiprocess(queue):
17
17
 
18
18
 
19
19
  def test_bbot_multiprocess(bbot_httpserver):
20
-
21
20
  bbot_httpserver.expect_request("/").respond_with_data("test@blacklanternsecurity.com")
22
21
 
23
22
  queue = multiprocessing.Queue()
@@ -32,12 +31,10 @@ def test_bbot_multiprocess(bbot_httpserver):
32
31
 
33
32
 
34
33
  def test_bbot_fastapi(bbot_httpserver):
35
-
36
34
  bbot_httpserver.expect_request("/").respond_with_data("test@blacklanternsecurity.com")
37
35
  fastapi_process = start_fastapi_server()
38
36
 
39
37
  try:
40
-
41
38
  # wait for the server to start with a timeout of 60 seconds
42
39
  start_time = time.time()
43
40
  while True:
@@ -6,7 +6,6 @@ import random
6
6
 
7
7
  @pytest.mark.asyncio
8
8
  async def test_bloom_filter():
9
-
10
9
  def generate_random_strings(n, length=10):
11
10
  """Generate a list of n random strings."""
12
11
  return ["".join(random.choices(string.ascii_letters + string.digits, k=length)) for _ in range(n)]
@@ -185,7 +185,6 @@ async def test_dns_resolution(bbot_scanner):
185
185
 
186
186
  @pytest.mark.asyncio
187
187
  async def test_wildcards(bbot_scanner):
188
-
189
188
  scan = bbot_scanner("1.1.1.1")
190
189
  helpers = scan.helpers
191
190
 
@@ -634,7 +633,6 @@ def custom_lookup(query, rdtype):
634
633
 
635
634
  @pytest.mark.asyncio
636
635
  async def test_wildcard_deduplication(bbot_scanner):
637
-
638
636
  custom_lookup = """
639
637
  def custom_lookup(query, rdtype):
640
638
  if rdtype == "TXT" and query.strip(".").endswith("evilcorp.com"):
@@ -670,7 +668,6 @@ def custom_lookup(query, rdtype):
670
668
 
671
669
  @pytest.mark.asyncio
672
670
  async def test_dns_raw_records(bbot_scanner):
673
-
674
671
  from bbot.modules.base import BaseModule
675
672
 
676
673
  class DummyModule(BaseModule):
@@ -14,7 +14,6 @@ async def test_engine():
14
14
  return_errored = False
15
15
 
16
16
  class TestEngineServer(EngineServer):
17
-
18
17
  CMDS = {
19
18
  0: "return_thing",
20
19
  1: "yield_stuff",
@@ -54,7 +53,6 @@ async def test_engine():
54
53
  raise
55
54
 
56
55
  class TestEngineClient(EngineClient):
57
-
58
56
  SERVER_CLASS = TestEngineServer
59
57
 
60
58
  async def return_thing(self, n):
@@ -9,7 +9,6 @@ from bbot.core.helpers.regexes import event_uuid_regex
9
9
 
10
10
  @pytest.mark.asyncio
11
11
  async def test_events(events, helpers):
12
-
13
12
  scan = Scanner()
14
13
  await scan._prep()
15
14
 
@@ -617,7 +616,6 @@ async def test_events(events, helpers):
617
616
 
618
617
  @pytest.mark.asyncio
619
618
  async def test_event_discovery_context():
620
-
621
619
  from bbot.modules.base import BaseModule
622
620
 
623
621
  scan = Scanner("evilcorp.com")
@@ -857,7 +857,6 @@ def test_liststring_invalidfnchars(helpers):
857
857
  # test parameter validation
858
858
  @pytest.mark.asyncio
859
859
  async def test_parameter_validation(helpers):
860
-
861
860
  getparam_valid_params = {
862
861
  "name",
863
862
  "age",
@@ -16,7 +16,7 @@ from bbot.scanner import Scanner, Preset
16
16
  def test_preset_descriptions():
17
17
  # ensure very preset has a description
18
18
  preset = Preset()
19
- for (loaded_preset, category, preset_path, original_filename) in preset.all_presets.values():
19
+ for loaded_preset, category, preset_path, original_filename in preset.all_presets.values():
20
20
  assert (
21
21
  loaded_preset.description
22
22
  ), f'Preset "{loaded_preset.name}" at {original_filename} does not have a description.'
@@ -68,7 +68,6 @@ def test_core():
68
68
 
69
69
 
70
70
  def test_preset_yaml(clean_default_config):
71
-
72
71
  import yaml
73
72
 
74
73
  preset1 = Preset(
@@ -171,7 +170,6 @@ exclude_flags:
171
170
 
172
171
 
173
172
  def test_preset_scope():
174
-
175
173
  # test target merging
176
174
  scan = Scanner("1.2.3.4", preset=Preset.from_dict({"target": ["evilcorp.com"]}))
177
175
  assert {str(h) for h in scan.preset.target.seeds.hosts} == {"1.2.3.4/32", "evilcorp.com"}
@@ -378,7 +376,6 @@ def test_preset_scope():
378
376
 
379
377
  @pytest.mark.asyncio
380
378
  async def test_preset_logging():
381
-
382
379
  scan = Scanner()
383
380
 
384
381
  # test individual verbosity levels
@@ -711,7 +708,6 @@ modules:
711
708
 
712
709
 
713
710
  def test_preset_include():
714
-
715
711
  # test recursive preset inclusion
716
712
 
717
713
  custom_preset_dir_1 = bbot_test_dir / "custom_preset_dir"
@@ -883,7 +879,6 @@ def test_preset_module_disablement(clean_default_config):
883
879
 
884
880
 
885
881
  def test_preset_require_exclude():
886
-
887
882
  def get_module_flags(p):
888
883
  for m in p.scan_modules:
889
884
  preloaded = p.preloaded_module(m)
@@ -337,7 +337,6 @@ async def test_target(bbot_scanner):
337
337
 
338
338
  @pytest.mark.asyncio
339
339
  async def test_blacklist_regex(bbot_scanner, bbot_httpserver):
340
-
341
340
  from bbot.scanner.target import ScanBlacklist
342
341
 
343
342
  blacklist = ScanBlacklist("evilcorp.com")
@@ -6,7 +6,6 @@ from ..bbot_fixtures import *
6
6
 
7
7
  @pytest.mark.asyncio
8
8
  async def test_web_engine(bbot_scanner, bbot_httpserver, httpx_mock):
9
-
10
9
  from werkzeug.wrappers import Response
11
10
 
12
11
  def server_handler(request):
@@ -134,7 +133,6 @@ async def test_request_batch_cancellation(bbot_scanner, bbot_httpserver, httpx_m
134
133
 
135
134
  @pytest.mark.asyncio
136
135
  async def test_web_helpers(bbot_scanner, bbot_httpserver, httpx_mock):
137
-
138
136
  # json conversion
139
137
  scan = bbot_scanner("evilcorp.com")
140
138
  url = "http://www.evilcorp.com/json_test?a=b"
@@ -55,8 +55,8 @@ class TestBaddns_direct_cloudflare(BaseTestBaddns):
55
55
  def check(self, module_test, events):
56
56
  assert any(
57
57
  e.type == "FINDING"
58
- and "Possible [AWS Bucket Takeover Detection] via direct BadDNS analysis. Indicator: [[Words: The specified bucket does not exist | Condition: and | Part: body] Matchers-Condition: and] Trigger: [self] baddns Module: [CNAME]"
59
- in e.data["description"]
60
- for e in events
58
+ and "Possible [AWS Bucket Takeover Detection] via direct BadDNS analysis. Indicator: [[Words: The specified bucket does not exist | Condition: and | Part: body] Matchers-Condition: and] Trigger: [self] baddns Module: [CNAME]"
59
+ in e.data["description"]
60
+ for e in events
61
61
  ), "Failed to emit FINDING"
62
62
  assert any("baddns-cname" in e.tags for e in events), "Failed to add baddns tag"
@@ -895,7 +895,7 @@ endobj
895
895
  /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
896
896
  >> /Rotate 0 /Trans <<
897
897
 
898
- >>
898
+ >>
899
899
  /Type /Page
900
900
  >>
901
901
  endobj
@@ -906,7 +906,7 @@ endobj
906
906
  endobj
907
907
  5 0 obj
908
908
  <<
909
- /Author (anonymous) /CreationDate (D:20240807182842+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240807182842+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
909
+ /Author (anonymous) /CreationDate (D:20240807182842+00'00') /Creator (ReportLab PDF Library - www.reportlab.com) /Keywords () /ModDate (D:20240807182842+00'00') /Producer (ReportLab PDF Library - www.reportlab.com)
910
910
  /Subject (unspecified) /Title (untitled) /Trapped /False
911
911
  >>
912
912
  endobj
@@ -924,17 +924,17 @@ Gas2F;0/Hc'SYHA/+V9II1V!>b>-epMEjN4$Udfu3WXha!?H`crq_UNGP5IS$'WT'SF]Hm/eEhd_JY>@
924
924
  endobj
925
925
  xref
926
926
  0 8
927
- 0000000000 65535 f
928
- 0000000073 00000 n
929
- 0000000104 00000 n
930
- 0000000211 00000 n
931
- 0000000414 00000 n
932
- 0000000482 00000 n
933
- 0000000778 00000 n
934
- 0000000837 00000 n
927
+ 0000000000 65535 f
928
+ 0000000073 00000 n
929
+ 0000000104 00000 n
930
+ 0000000211 00000 n
931
+ 0000000414 00000 n
932
+ 0000000482 00000 n
933
+ 0000000778 00000 n
934
+ 0000000837 00000 n
935
935
  trailer
936
936
  <<
937
- /ID
937
+ /ID
938
938
  [<3c7340500fa2fe72523c5e6f07511599><3c7340500fa2fe72523c5e6f07511599>]
939
939
  % ReportLab generated PDF document -- digest (http://www.reportlab.com)
940
940
 
@@ -101,6 +101,4 @@ class TestGoWitnessWithBlob(TestGowitness):
101
101
  def check(self, module_test, events):
102
102
  webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
103
103
  assert webscreenshots, "failed to raise WEBSCREENSHOT events"
104
- assert all(
105
- "blob" in e.data and e.data["blob"] for e in webscreenshots
106
- ), "blob not found in WEBSCREENSHOT data"
104
+ assert all("blob" in e.data and e.data["blob"] for e in webscreenshots), "blob not found in WEBSCREENSHOT data"
@@ -10,16 +10,16 @@ class TestNewsletters(ModuleTestBase):
10
10
  modules_overrides = ["speculate", "httpx", "newsletters"]
11
11
 
12
12
  html_with_newsletter = """
13
- <input aria-required="true"
14
- class="form-input form-input-text required"
15
- data-at="form-email"
16
- data-describedby="form-validation-error-box-element-5"
17
- data-label-inside="Enter your email"
18
- id="field-5f329905b4bfe1027b44513f94b50363-0"
19
- name="Enter your email"
20
- placeholder="Enter your email"
21
- required=""
22
- title="Enter your email"
13
+ <input aria-required="true"
14
+ class="form-input form-input-text required"
15
+ data-at="form-email"
16
+ data-describedby="form-validation-error-box-element-5"
17
+ data-label-inside="Enter your email"
18
+ id="field-5f329905b4bfe1027b44513f94b50363-0"
19
+ name="Enter your email"
20
+ placeholder="Enter your email"
21
+ required=""
22
+ title="Enter your email"
23
23
  type="email" value=""/>
24
24
  """
25
25
 
@@ -10,7 +10,8 @@ class TestNTLM(ModuleTestBase):
10
10
  request_args = {"uri": "/", "headers": {"test": "header"}}
11
11
  module_test.set_expect_requests(request_args, {})
12
12
  request_args = {
13
- "uri": "/oab/", "headers": {"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="}
13
+ "uri": "/oab/",
14
+ "headers": {"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="},
14
15
  }
15
16
  respond_args = {
16
17
  "headers": {
@@ -9,10 +9,10 @@ class TestPGP(ModuleTestBase):
9
9
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
10
10
  <link href='/assets/css/pks.min.css' rel='stylesheet' type='text/css'>
11
11
  <style type="text/css">
12
-
12
+
13
13
  .uid { color: green; text-decoration: underline; }
14
14
  .warn { color: red; font-weight: bold; }
15
-
15
+
16
16
  </style></head><body><h1>Search results for 'blacklanternsecurity.com'</h1><pre>Type bits/keyID cr. time exp time key expir
17
17
  </pre>
18
18
 
@@ -1,13 +1,13 @@
1
1
  from .base import ModuleTestBase
2
2
 
3
3
  smuggler_text = r"""
4
- ______ _
5
- / _____) | |
6
- ( (____ ____ _ _ ____ ____| | _____ ____
4
+ ______ _
5
+ / _____) | |
6
+ ( (____ ____ _ _ ____ ____| | _____ ____
7
7
  \____ \| \| | | |/ _ |/ _ | || ___ |/ ___)
8
- _____) ) | | | |_| ( (_| ( (_| | || ____| |
9
- (______/|_|_|_|____/ \___ |\___ |\_)_____)_|
10
- (_____(_____|
8
+ _____) ) | | | |_| ( (_| ( (_| | || ____| |
9
+ (______/|_|_|_|____/ \___ |\___ |\_)_____)_|
10
+ (_____(_____|
11
11
 
12
12
  @defparam v1.1
13
13
 
@@ -16,13 +16,13 @@ smuggler_text = r"""
16
16
  [+] Endpoint : /
17
17
  [+] Configfile : default.py
18
18
  [+] Timeout : 5.0 seconds
19
- [+] Cookies : 1 (Appending to the attack)
20
- [nameprefix1] : Checking TECL...
21
- [nameprefix1] : Checking CLTE...
22
- [nameprefix1] : OK (TECL: 0.61 - 405) (CLTE: 0.62 - 405)
23
- [tabprefix1] : Checking TECL...git
24
- [tabprefix1] : Checking CLTE...
25
- [tabprefix1] : Checking TECL...
19
+ [+] Cookies : 1 (Appending to the attack)
20
+ [nameprefix1] : Checking TECL...
21
+ [nameprefix1] : Checking CLTE...
22
+ [nameprefix1] : OK (TECL: 0.61 - 405) (CLTE: 0.62 - 405)
23
+ [tabprefix1] : Checking TECL...git
24
+ [tabprefix1] : Checking CLTE...
25
+ [tabprefix1] : Checking TECL...
26
26
  [tabprefix1] : Checking CLTE...
27
27
  [tabprefix1] : Checking TECL...
28
28
  [tabprefix1] : Checking CLTE...
@@ -63,7 +63,7 @@ class TestSpeculate_OpenPorts(ModuleTestBase):
63
63
  events_data.add(e.data)
64
64
  assert all(
65
65
  x in events_data
66
- for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
66
+ for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
67
67
  )
68
68
 
69
69
 
@@ -78,5 +78,5 @@ class TestSpeculate_OpenPorts_Portscanner(TestSpeculate_OpenPorts):
78
78
  events_data.add(e.data)
79
79
  assert not any(
80
80
  x in events_data
81
- for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
81
+ for x in ("evilcorp.com:80", "evilcorp.com:443", "asdf.evilcorp.com:80", "asdf.evilcorp.com:443")
82
82
  )