bbot 2.2.0.5309rc0__tar.gz → 2.3.0.5324rc0__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 (417) hide show
  1. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/PKG-INFO +1 -1
  2. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/__init__.py +1 -1
  3. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/db/sql/models.py +2 -1
  4. bbot-2.3.0.5324rc0/bbot/modules/output/postgres.py +49 -0
  5. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/sqlite.py +1 -1
  6. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/sql.py +13 -12
  7. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/base.py +6 -2
  8. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +1 -0
  9. bbot-2.3.0.5324rc0/bbot/test/test_step_2/module_tests/test_module_postgres.py +74 -0
  10. bbot-2.3.0.5324rc0/bbot/test/test_step_2/module_tests/test_module_sqlite.py +18 -0
  11. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/pyproject.toml +3 -3
  12. bbot-2.2.0.5309rc0/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -18
  13. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/LICENSE +0 -0
  14. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/README.md +0 -0
  15. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/cli.py +0 -0
  16. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/__init__.py +0 -0
  17. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/config/__init__.py +0 -0
  18. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/config/files.py +0 -0
  19. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/config/logger.py +0 -0
  20. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/core.py +0 -0
  21. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/engine.py +0 -0
  22. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/event/__init__.py +0 -0
  23. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/event/base.py +0 -0
  24. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/event/helpers.py +0 -0
  25. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/flags.py +0 -0
  26. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/__init__.py +0 -0
  27. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/async_helpers.py +0 -0
  28. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/bloom.py +0 -0
  29. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/cache.py +0 -0
  30. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/command.py +0 -0
  31. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
  32. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
  33. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
  34. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/diff.py +0 -0
  35. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/dns/__init__.py +0 -0
  36. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/dns/brute.py +0 -0
  37. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/dns/dns.py +0 -0
  38. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/dns/engine.py +0 -0
  39. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/dns/helpers.py +0 -0
  40. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/dns/mock.py +0 -0
  41. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/files.py +0 -0
  42. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/helper.py +0 -0
  43. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/interactsh.py +0 -0
  44. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/libmagic.py +0 -0
  45. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/misc.py +0 -0
  46. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/names_generator.py +0 -0
  47. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/ntlm.py +0 -0
  48. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/process.py +0 -0
  49. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/ratelimiter.py +0 -0
  50. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/regex.py +0 -0
  51. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/regexes.py +0 -0
  52. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/url.py +0 -0
  53. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/validators.py +0 -0
  54. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/web/__init__.py +0 -0
  55. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/web/client.py +0 -0
  56. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/web/engine.py +0 -0
  57. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
  58. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/web/web.py +0 -0
  59. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/helpers/wordcloud.py +0 -0
  60. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/modules.py +0 -0
  61. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/multiprocess.py +0 -0
  62. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/core/shared_deps.py +0 -0
  63. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/defaults.yml +0 -0
  64. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/errors.py +0 -0
  65. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/logger.py +0 -0
  66. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/__init__.py +0 -0
  67. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/ajaxpro.py +0 -0
  68. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/anubisdb.py +0 -0
  69. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/apkpure.py +0 -0
  70. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/azure_realm.py +0 -0
  71. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/azure_tenant.py +0 -0
  72. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/baddns.py +0 -0
  73. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/baddns_direct.py +0 -0
  74. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/baddns_zone.py +0 -0
  75. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/badsecrets.py +0 -0
  76. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/base.py +0 -0
  77. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bevigil.py +0 -0
  78. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/binaryedge.py +0 -0
  79. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bucket_amazon.py +0 -0
  80. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bucket_azure.py +0 -0
  81. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bucket_digitalocean.py +0 -0
  82. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bucket_file_enum.py +0 -0
  83. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bucket_firebase.py +0 -0
  84. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bucket_google.py +0 -0
  85. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bufferoverrun.py +0 -0
  86. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/builtwith.py +0 -0
  87. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/bypass403.py +0 -0
  88. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/c99.py +0 -0
  89. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/censys.py +0 -0
  90. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/certspotter.py +0 -0
  91. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/chaos.py +0 -0
  92. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/code_repository.py +0 -0
  93. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/columbus.py +0 -0
  94. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/credshed.py +0 -0
  95. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/crt.py +0 -0
  96. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/deadly/dastardly.py +0 -0
  97. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/deadly/ffuf.py +0 -0
  98. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/deadly/nuclei.py +0 -0
  99. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/deadly/vhost.py +0 -0
  100. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dehashed.py +0 -0
  101. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/digitorus.py +0 -0
  102. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dnsbimi.py +0 -0
  103. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dnsbrute.py +0 -0
  104. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
  105. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dnscaa.py +0 -0
  106. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dnscommonsrv.py +0 -0
  107. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dnsdumpster.py +0 -0
  108. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/docker_pull.py +0 -0
  109. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dockerhub.py +0 -0
  110. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/dotnetnuke.py +0 -0
  111. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/emailformat.py +0 -0
  112. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/extractous.py +0 -0
  113. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/ffuf_shortnames.py +0 -0
  114. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/filedownload.py +0 -0
  115. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/fingerprintx.py +0 -0
  116. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/fullhunt.py +0 -0
  117. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/generic_ssrf.py +0 -0
  118. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/git.py +0 -0
  119. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/git_clone.py +0 -0
  120. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/github_codesearch.py +0 -0
  121. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/github_org.py +0 -0
  122. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/github_workflows.py +0 -0
  123. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/gitlab.py +0 -0
  124. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/google_playstore.py +0 -0
  125. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/gowitness.py +0 -0
  126. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/hackertarget.py +0 -0
  127. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/host_header.py +0 -0
  128. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/httpx.py +0 -0
  129. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/hunt.py +0 -0
  130. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/hunterio.py +0 -0
  131. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/iis_shortnames.py +0 -0
  132. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/__init__.py +0 -0
  133. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/aggregate.py +0 -0
  134. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/base.py +0 -0
  135. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/cloudcheck.py +0 -0
  136. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/dnsresolve.py +0 -0
  137. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/excavate.py +0 -0
  138. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internal/speculate.py +0 -0
  139. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/internetdb.py +0 -0
  140. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/ip2location.py +0 -0
  141. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/ipneighbor.py +0 -0
  142. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/ipstack.py +0 -0
  143. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/jadx.py +0 -0
  144. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/leakix.py +0 -0
  145. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/myssl.py +0 -0
  146. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/newsletters.py +0 -0
  147. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/ntlm.py +0 -0
  148. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/oauth.py +0 -0
  149. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/otx.py +0 -0
  150. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/__init__.py +0 -0
  151. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/asset_inventory.py +0 -0
  152. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/base.py +0 -0
  153. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/csv.py +0 -0
  154. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/discord.py +0 -0
  155. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/emails.py +0 -0
  156. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/http.py +0 -0
  157. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/json.py +0 -0
  158. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/neo4j.py +0 -0
  159. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/python.py +0 -0
  160. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/slack.py +0 -0
  161. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/splunk.py +0 -0
  162. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/stdout.py +0 -0
  163. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/subdomains.py +0 -0
  164. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/teams.py +0 -0
  165. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/txt.py +0 -0
  166. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/web_report.py +0 -0
  167. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/output/websocket.py +0 -0
  168. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/paramminer_cookies.py +0 -0
  169. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/paramminer_getparams.py +0 -0
  170. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/paramminer_headers.py +0 -0
  171. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/passivetotal.py +0 -0
  172. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/pgp.py +0 -0
  173. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/portscan.py +0 -0
  174. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/postman.py +0 -0
  175. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/postman_download.py +0 -0
  176. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/rapiddns.py +0 -0
  177. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/report/affiliates.py +0 -0
  178. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/report/asn.py +0 -0
  179. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/report/base.py +0 -0
  180. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/robots.py +0 -0
  181. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/secretsdb.py +0 -0
  182. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/securitytrails.py +0 -0
  183. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/securitytxt.py +0 -0
  184. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/shodan_dns.py +0 -0
  185. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/sitedossier.py +0 -0
  186. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/skymem.py +0 -0
  187. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/smuggler.py +0 -0
  188. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/social.py +0 -0
  189. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/sslcert.py +0 -0
  190. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/subdomaincenter.py +0 -0
  191. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/subdomainradar.py +0 -0
  192. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/telerik.py +0 -0
  193. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/bucket.py +0 -0
  194. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/github.py +0 -0
  195. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/postman.py +0 -0
  196. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/shodan.py +0 -0
  197. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
  198. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/templates/webhook.py +0 -0
  199. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/trickest.py +0 -0
  200. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/trufflehog.py +0 -0
  201. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/url_manipulation.py +0 -0
  202. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/urlscan.py +0 -0
  203. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/viewdns.py +0 -0
  204. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/virustotal.py +0 -0
  205. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/wafw00f.py +0 -0
  206. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/wappalyzer.py +0 -0
  207. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/wayback.py +0 -0
  208. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/wpscan.py +0 -0
  209. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/modules/zoomeye.py +0 -0
  210. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/baddns-thorough.yml +0 -0
  211. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/cloud-enum.yml +0 -0
  212. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/code-enum.yml +0 -0
  213. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/email-enum.yml +0 -0
  214. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/fast.yml +0 -0
  215. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/kitchen-sink.yml +0 -0
  216. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/spider.yml +0 -0
  217. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/subdomain-enum.yml +0 -0
  218. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
  219. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web/dirbust-light.yml +0 -0
  220. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
  221. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
  222. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web/paramminer.yml +0 -0
  223. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web-basic.yml +0 -0
  224. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web-screenshots.yml +0 -0
  225. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/presets/web-thorough.yml +0 -0
  226. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/__init__.py +0 -0
  227. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/dispatcher.py +0 -0
  228. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/manager.py +0 -0
  229. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/preset/__init__.py +0 -0
  230. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/preset/args.py +0 -0
  231. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/preset/conditions.py +0 -0
  232. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/preset/environ.py +0 -0
  233. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/preset/path.py +0 -0
  234. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/preset/preset.py +0 -0
  235. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/scanner.py +0 -0
  236. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/stats.py +0 -0
  237. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scanner/target.py +0 -0
  238. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/scripts/docs.py +0 -0
  239. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/__init__.py +0 -0
  240. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/bbot_fixtures.py +0 -0
  241. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/conftest.py +0 -0
  242. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/coverage.cfg +0 -0
  243. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/fastapi_test.py +0 -0
  244. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/owasp_mastg.apk +0 -0
  245. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/run_tests.sh +0 -0
  246. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test.conf +0 -0
  247. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_output.ndjson +0 -0
  248. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/__init__.py +0 -0
  249. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
  250. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -0
  251. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
  252. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_cli.py +0 -0
  253. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_command.py +0 -0
  254. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_config.py +0 -0
  255. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
  256. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_dns.py +0 -0
  257. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_docs.py +0 -0
  258. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_engine.py +0 -0
  259. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_events.py +0 -0
  260. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_files.py +0 -0
  261. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_helpers.py +0 -0
  262. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
  263. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
  264. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
  265. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_presets.py +0 -0
  266. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
  267. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
  268. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_scan.py +0 -0
  269. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_scope.py +0 -0
  270. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_target.py +0 -0
  271. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_1/test_web.py +0 -0
  272. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/__init__.py +0 -0
  273. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
  274. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
  275. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
  276. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
  277. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
  278. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
  279. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
  280. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
  281. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
  282. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
  283. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
  284. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
  285. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
  286. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
  287. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
  288. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
  289. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
  290. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
  291. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
  292. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
  293. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
  294. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
  295. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
  296. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
  297. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
  298. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
  299. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
  300. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
  301. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
  302. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
  303. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
  304. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +0 -0
  305. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
  306. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
  307. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
  308. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
  309. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
  310. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
  311. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
  312. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
  313. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
  314. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
  315. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
  316. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
  317. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
  318. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
  319. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
  320. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
  321. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
  322. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
  323. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
  324. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
  325. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
  326. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
  327. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
  328. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
  329. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
  330. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
  331. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
  332. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
  333. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
  334. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
  335. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
  336. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
  337. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
  338. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
  339. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
  340. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
  341. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
  342. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
  343. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
  344. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
  345. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
  346. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
  347. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
  348. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
  349. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
  350. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
  351. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
  352. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
  353. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
  354. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
  355. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
  356. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
  357. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
  358. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
  359. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
  360. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
  361. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
  362. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
  363. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
  364. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
  365. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
  366. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
  367. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
  368. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
  369. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
  370. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
  371. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
  372. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
  373. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
  374. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
  375. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
  376. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
  377. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
  378. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
  379. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
  380. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
  381. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
  382. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
  383. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
  384. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
  385. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
  386. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
  387. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
  388. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
  389. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
  390. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
  391. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
  392. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
  393. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
  394. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
  395. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
  396. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
  397. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
  398. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
  399. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
  400. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
  401. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
  402. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
  403. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
  404. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
  405. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
  406. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/testsslcert.pem +0 -0
  407. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/test/testsslkey.pem +0 -0
  408. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/devops_mutations.txt +0 -0
  409. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +0 -0
  410. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
  411. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/nameservers.txt +0 -0
  412. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
  413. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
  414. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
  415. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
  416. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
  417. {bbot-2.2.0.5309rc0 → bbot-2.3.0.5324rc0}/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.2.0.5309rc0
3
+ Version: 2.3.0.5324rc0
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.2.0.5309rc"
2
+ __version__ = "v2.3.0.5324rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
@@ -3,9 +3,9 @@
3
3
 
4
4
  import json
5
5
  import logging
6
- from datetime import datetime
7
6
  from pydantic import ConfigDict
8
7
  from typing import List, Optional
8
+ from datetime import datetime, timezone
9
9
  from typing_extensions import Annotated
10
10
  from pydantic.functional_validators import AfterValidator
11
11
  from sqlmodel import inspect, Column, Field, SQLModel, JSON, String, DateTime as SQLADateTime
@@ -114,6 +114,7 @@ class Event(BBOTBaseModel, table=True):
114
114
  discovery_context: str = ""
115
115
  discovery_path: List[str] = Field(default=[], sa_type=JSON)
116
116
  parent_chain: List[str] = Field(default=[], sa_type=JSON)
117
+ inserted_at: NaiveUTC = Field(default_factory=lambda: datetime.now(timezone.utc))
117
118
 
118
119
 
119
120
  ### SCAN ###
@@ -0,0 +1,49 @@
1
+ from bbot.modules.templates.sql import SQLTemplate
2
+
3
+
4
+ class Postgres(SQLTemplate):
5
+ watched_events = ["*"]
6
+ meta = {"description": "Output scan data to a SQLite database"}
7
+ options = {
8
+ "username": "postgres",
9
+ "password": "bbotislife",
10
+ "host": "localhost",
11
+ "port": 5432,
12
+ "database": "bbot",
13
+ }
14
+ options_desc = {
15
+ "username": "The username to connect to Postgres",
16
+ "password": "The password to connect to Postgres",
17
+ "host": "The server running Postgres",
18
+ "port": "The port to connect to Postgres",
19
+ "database": "The database name to connect to",
20
+ }
21
+ deps_pip = ["sqlmodel", "asyncpg"]
22
+ protocol = "postgresql+asyncpg"
23
+
24
+ async def create_database(self):
25
+ import asyncpg
26
+ from sqlalchemy import text
27
+ from sqlalchemy.ext.asyncio import create_async_engine
28
+
29
+ # Create the engine for the initial connection to the server
30
+ initial_engine = create_async_engine(self.connection_string().rsplit("/", 1)[0])
31
+
32
+ async with initial_engine.connect() as conn:
33
+ # Check if the database exists
34
+ result = await conn.execute(text(f"SELECT 1 FROM pg_database WHERE datname = '{self.database}'"))
35
+ database_exists = result.scalar() is not None
36
+
37
+ # Create the database if it does not exist
38
+ if not database_exists:
39
+ # Use asyncpg directly to create the database
40
+ raw_conn = await asyncpg.connect(
41
+ user=self.username,
42
+ password=self.password,
43
+ host=self.host,
44
+ port=self.port,
45
+ )
46
+ try:
47
+ await raw_conn.execute(f"CREATE DATABASE {self.database}")
48
+ finally:
49
+ await raw_conn.close()
@@ -12,7 +12,7 @@ class SQLite(SQLTemplate):
12
12
  options_desc = {
13
13
  "database": "The path to the sqlite database file",
14
14
  }
15
- deps_pip = ["sqlmodel", "sqlalchemy-utils", "aiosqlite"]
15
+ deps_pip = ["sqlmodel", "aiosqlite"]
16
16
 
17
17
  async def setup(self):
18
18
  db_file = self.config.get("database", "")
@@ -1,7 +1,6 @@
1
1
  from sqlmodel import SQLModel
2
2
  from sqlalchemy.orm import sessionmaker
3
3
  from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
4
- from sqlalchemy_utils.functions import database_exists, create_database
5
4
 
6
5
  from bbot.db.sql.models import Event, Scan, Target
7
6
  from bbot.modules.output.base import BaseOutputModule
@@ -10,7 +9,6 @@ from bbot.modules.output.base import BaseOutputModule
10
9
  class SQLTemplate(BaseOutputModule):
11
10
  meta = {"description": "SQL output module template"}
12
11
  options = {
13
- "protocol": "",
14
12
  "database": "bbot",
15
13
  "username": "",
16
14
  "password": "",
@@ -18,7 +16,6 @@ class SQLTemplate(BaseOutputModule):
18
16
  "port": 0,
19
17
  }
20
18
  options_desc = {
21
- "protocol": "The protocol to use to connect to the database",
22
19
  "database": "The database to use",
23
20
  "username": "The username to use to connect to the database",
24
21
  "password": "The password to use to connect to the database",
@@ -26,6 +23,8 @@ class SQLTemplate(BaseOutputModule):
26
23
  "port": "The port to use to connect to the database",
27
24
  }
28
25
 
26
+ protocol = ""
27
+
29
28
  async def setup(self):
30
29
  self.database = self.config.get("database", "bbot")
31
30
  self.username = self.config.get("username", "")
@@ -33,11 +32,6 @@ class SQLTemplate(BaseOutputModule):
33
32
  self.host = self.config.get("host", "127.0.0.1")
34
33
  self.port = self.config.get("port", 0)
35
34
 
36
- self.log.info(f"Connecting to {self.connection_string(mask_password=True)}")
37
-
38
- self.engine = create_async_engine(self.connection_string())
39
- # Create a session factory bound to the engine
40
- self.async_session = sessionmaker(self.engine, expire_on_commit=False, class_=AsyncSession)
41
35
  await self.init_database()
42
36
  return True
43
37
 
@@ -65,12 +59,19 @@ class SQLTemplate(BaseOutputModule):
65
59
 
66
60
  await session.commit()
67
61
 
62
+ async def create_database(self):
63
+ pass
64
+
68
65
  async def init_database(self):
66
+ await self.create_database()
67
+
68
+ # Now create the engine for the actual database
69
+ self.engine = create_async_engine(self.connection_string())
70
+ # Create a session factory bound to the engine
71
+ self.async_session = sessionmaker(self.engine, expire_on_commit=False, class_=AsyncSession)
72
+
73
+ # Use the engine directly to create all tables
69
74
  async with self.engine.begin() as conn:
70
- # Check if the database exists using the connection's engine URL
71
- if not await conn.run_sync(lambda sync_conn: database_exists(sync_conn.engine.url)):
72
- await conn.run_sync(lambda sync_conn: create_database(sync_conn.engine.url))
73
- # Create all tables
74
75
  await conn.run_sync(SQLModel.metadata.create_all)
75
76
 
76
77
  def connection_string(self, mask_password=False):
@@ -20,6 +20,8 @@ class ModuleTestBase:
20
20
  config_overrides = {}
21
21
  modules_overrides = None
22
22
  log = logging.getLogger("bbot")
23
+ # if True, the test will be skipped (useful for tests that require docker)
24
+ skip_distro_tests = False
23
25
 
24
26
  class ModuleTest:
25
27
  def __init__(
@@ -90,7 +92,7 @@ class ModuleTestBase:
90
92
  self, httpx_mock, bbot_httpserver, bbot_httpserver_ssl, monkeypatch, request, caplog, capsys
91
93
  ):
92
94
  # Skip dastardly test if we're in the distro tests (because dastardly uses docker)
93
- if os.getenv("BBOT_DISTRO_TESTS") and self.name == "dastardly":
95
+ if os.getenv("BBOT_DISTRO_TESTS") and self.skip_distro_tests:
94
96
  pytest.skip("Skipping module_test for dastardly module due to BBOT_DISTRO_TESTS environment variable")
95
97
 
96
98
  self.log.info(f"Starting {self.name} module test")
@@ -112,7 +114,9 @@ class ModuleTestBase:
112
114
 
113
115
  @pytest.mark.asyncio
114
116
  async def test_module_run(self, module_test):
115
- self.check(module_test, module_test.events)
117
+ from bbot.core.helpers.misc import execute_sync_or_async
118
+
119
+ await execute_sync_or_async(self.check, module_test, module_test.events)
116
120
  module_test.log.info(f"Finished {self.name} module test")
117
121
  current_task = asyncio.current_task()
118
122
  tasks = [t for t in asyncio.all_tasks() if t != current_task]
@@ -7,6 +7,7 @@ from .base import ModuleTestBase
7
7
  class TestDastardly(ModuleTestBase):
8
8
  targets = ["http://127.0.0.1:5556/"]
9
9
  modules_overrides = ["httpx", "dastardly"]
10
+ skip_distro_tests = True
10
11
 
11
12
  web_response = """<!DOCTYPE html>
12
13
  <html>
@@ -0,0 +1,74 @@
1
+ import time
2
+ import asyncio
3
+
4
+ from .base import ModuleTestBase
5
+
6
+
7
+ class TestPostgres(ModuleTestBase):
8
+ targets = ["evilcorp.com"]
9
+ skip_distro_tests = True
10
+
11
+ async def setup_before_prep(self, module_test):
12
+ process = await asyncio.create_subprocess_exec(
13
+ "docker",
14
+ "run",
15
+ "--name",
16
+ "bbot-test-postgres",
17
+ "--rm",
18
+ "-e",
19
+ "POSTGRES_PASSWORD=bbotislife",
20
+ "-e",
21
+ "POSTGRES_USER=postgres",
22
+ "-p",
23
+ "5432:5432",
24
+ "-d",
25
+ "postgres",
26
+ )
27
+
28
+ import asyncpg
29
+
30
+ # wait for the container to start
31
+ start_time = time.time()
32
+ while True:
33
+ try:
34
+ # Connect to the default 'postgres' database to create 'bbot'
35
+ conn = await asyncpg.connect(
36
+ user="postgres", password="bbotislife", database="postgres", host="127.0.0.1"
37
+ )
38
+ await conn.execute("CREATE DATABASE bbot")
39
+ await conn.close()
40
+ break
41
+ except asyncpg.exceptions.DuplicateDatabaseError:
42
+ # If the database already exists, break the loop
43
+ break
44
+ except Exception as e:
45
+ if time.time() - start_time > 60: # timeout after 60 seconds
46
+ self.log.error("PostgreSQL server did not start in time.")
47
+ raise e
48
+ await asyncio.sleep(1)
49
+
50
+ if process.returncode != 0:
51
+ self.log.error(f"Failed to start PostgreSQL server")
52
+
53
+ async def check(self, module_test, events):
54
+ import asyncpg
55
+
56
+ # Connect to the PostgreSQL database
57
+ conn = await asyncpg.connect(user="postgres", password="bbotislife", database="bbot", host="127.0.0.1")
58
+
59
+ try:
60
+ events = await conn.fetch("SELECT * FROM event")
61
+ assert len(events) == 3, "No events found in PostgreSQL database"
62
+ scans = await conn.fetch("SELECT * FROM scan")
63
+ assert len(scans) == 1, "No scans found in PostgreSQL database"
64
+ targets = await conn.fetch("SELECT * FROM target")
65
+ assert len(targets) == 1, "No targets found in PostgreSQL database"
66
+ finally:
67
+ await conn.close()
68
+ process = await asyncio.create_subprocess_exec(
69
+ "docker", "stop", "bbot-test-postgres", stdout=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE
70
+ )
71
+ stdout, stderr = await process.communicate()
72
+
73
+ if process.returncode != 0:
74
+ raise Exception(f"Failed to stop PostgreSQL server: {stderr.decode()}")
@@ -0,0 +1,18 @@
1
+ import sqlite3
2
+ from .base import ModuleTestBase
3
+
4
+
5
+ class TestSQLite(ModuleTestBase):
6
+ targets = ["evilcorp.com"]
7
+
8
+ def check(self, module_test, events):
9
+ sqlite_output_file = module_test.scan.home / "output.sqlite"
10
+ assert sqlite_output_file.exists(), "SQLite output file not found"
11
+ with sqlite3.connect(sqlite_output_file) as db:
12
+ cursor = db.cursor()
13
+ results = cursor.execute("SELECT * FROM event").fetchall()
14
+ assert len(results) == 3, "No events found in SQLite database"
15
+ results = cursor.execute("SELECT * FROM scan").fetchall()
16
+ assert len(results) == 1, "No scans found in SQLite database"
17
+ results = cursor.execute("SELECT * FROM target").fetchall()
18
+ assert len(results) == 1, "No targets found in SQLite database"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bbot"
3
- version = "v2.2.0.5309rc"
3
+ version = "v2.3.0.5324rc"
4
4
  description = "OSINT automation for hackers."
5
5
  authors = [
6
6
  "TheTechromancer",
@@ -73,7 +73,7 @@ pytest = "^8.3.1"
73
73
  pytest-asyncio = "0.24.0"
74
74
  uvicorn = "^0.32.0"
75
75
  fastapi = "^0.115.5"
76
- pytest-httpx = "^0.33.0"
76
+ pytest-httpx = ">=0.33,<0.35"
77
77
 
78
78
  [tool.poetry.group.docs.dependencies]
79
79
  mkdocs = "^1.5.2"
@@ -103,7 +103,7 @@ extend-exclude = "(test_step_1/test_manager_*)"
103
103
  [tool.poetry-dynamic-versioning]
104
104
  enable = false
105
105
  metadata = false
106
- format-jinja = 'v2.2.0{% if branch == "dev" %}.{{ distance }}rc{% endif %}'
106
+ format-jinja = 'v2.3.0{% if branch == "dev" %}.{{ distance }}rc{% endif %}'
107
107
 
108
108
  [tool.poetry-dynamic-versioning.substitution]
109
109
  files = ["*/__init__.py"]
@@ -1,18 +0,0 @@
1
- import sqlite3
2
- from .base import ModuleTestBase
3
-
4
-
5
- class TestSQLite(ModuleTestBase):
6
- targets = ["evilcorp.com"]
7
-
8
- def check(self, module_test, events):
9
- sqlite_output_file = module_test.scan.home / "output.sqlite"
10
- assert sqlite_output_file.exists(), "SQLite output file not found"
11
- with sqlite3.connect(sqlite_output_file) as db:
12
- cursor = db.cursor()
13
- cursor.execute("SELECT * FROM event")
14
- assert len(cursor.fetchall()) > 0, "No events found in SQLite database"
15
- cursor.execute("SELECT * FROM scan")
16
- assert len(cursor.fetchall()) > 0, "No scans found in SQLite database"
17
- cursor.execute("SELECT * FROM target")
18
- assert len(cursor.fetchall()) > 0, "No targets found in SQLite database"
File without changes
File without changes
File without changes