bbot 2.1.0.5082rc0__tar.gz → 2.1.1__tar.gz

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

Potentially problematic release.


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

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