bbot 2.4.0.5977rc0__tar.gz → 2.4.0.5986rc0__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 (431) hide show
  1. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/PKG-INFO +1 -1
  2. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/__init__.py +1 -1
  3. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/cli.py +15 -1
  4. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/base.py +42 -0
  5. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/nuclei.py +1 -1
  6. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/excavate.py +52 -0
  7. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/args.py +13 -0
  8. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_cli.py +14 -0
  9. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/pyproject.toml +1 -1
  10. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/LICENSE +0 -0
  11. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/README.md +0 -0
  12. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/__init__.py +0 -0
  13. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/config/__init__.py +0 -0
  14. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/config/files.py +0 -0
  15. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/config/logger.py +0 -0
  16. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/core.py +0 -0
  17. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/engine.py +0 -0
  18. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/event/__init__.py +0 -0
  19. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/event/base.py +0 -0
  20. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/event/helpers.py +0 -0
  21. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/flags.py +0 -0
  22. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/__init__.py +0 -0
  23. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/async_helpers.py +0 -0
  24. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/bloom.py +0 -0
  25. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/cache.py +0 -0
  26. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/command.py +0 -0
  27. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
  28. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
  29. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
  30. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/diff.py +0 -0
  31. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/__init__.py +0 -0
  32. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/brute.py +0 -0
  33. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/dns.py +0 -0
  34. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/engine.py +0 -0
  35. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/helpers.py +0 -0
  36. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/dns/mock.py +0 -0
  37. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/files.py +0 -0
  38. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/helper.py +0 -0
  39. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/interactsh.py +0 -0
  40. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/libmagic.py +0 -0
  41. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/misc.py +0 -0
  42. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/names_generator.py +0 -0
  43. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/ntlm.py +0 -0
  44. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/process.py +0 -0
  45. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/ratelimiter.py +0 -0
  46. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/regex.py +0 -0
  47. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/regexes.py +0 -0
  48. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/url.py +0 -0
  49. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/validators.py +0 -0
  50. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/__init__.py +0 -0
  51. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/client.py +0 -0
  52. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/engine.py +0 -0
  53. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
  54. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/web/web.py +0 -0
  55. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/helpers/wordcloud.py +0 -0
  56. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/modules.py +0 -0
  57. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/multiprocess.py +0 -0
  58. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/core/shared_deps.py +0 -0
  59. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/db/sql/models.py +0 -0
  60. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/defaults.yml +0 -0
  61. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/errors.py +0 -0
  62. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/logger.py +0 -0
  63. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/__init__.py +0 -0
  64. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ajaxpro.py +0 -0
  65. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/anubisdb.py +0 -0
  66. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/apkpure.py +0 -0
  67. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/azure_realm.py +0 -0
  68. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/azure_tenant.py +0 -0
  69. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/baddns.py +0 -0
  70. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/baddns_direct.py +0 -0
  71. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/baddns_zone.py +0 -0
  72. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/badsecrets.py +0 -0
  73. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bevigil.py +0 -0
  74. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/binaryedge.py +0 -0
  75. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_amazon.py +0 -0
  76. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_azure.py +0 -0
  77. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_digitalocean.py +0 -0
  78. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_file_enum.py +0 -0
  79. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_firebase.py +0 -0
  80. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bucket_google.py +0 -0
  81. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bufferoverrun.py +0 -0
  82. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/builtwith.py +0 -0
  83. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/bypass403.py +0 -0
  84. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/c99.py +0 -0
  85. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/censys.py +0 -0
  86. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/certspotter.py +0 -0
  87. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/chaos.py +0 -0
  88. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/code_repository.py +0 -0
  89. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/credshed.py +0 -0
  90. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/crt.py +0 -0
  91. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/dastardly.py +0 -0
  92. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/ffuf.py +0 -0
  93. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/deadly/vhost.py +0 -0
  94. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dehashed.py +0 -0
  95. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/digitorus.py +0 -0
  96. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsbimi.py +0 -0
  97. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsbrute.py +0 -0
  98. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
  99. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnscaa.py +0 -0
  100. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnscommonsrv.py +0 -0
  101. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnsdumpster.py +0 -0
  102. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dnstlsrpt.py +0 -0
  103. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/docker_pull.py +0 -0
  104. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dockerhub.py +0 -0
  105. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/dotnetnuke.py +0 -0
  106. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/emailformat.py +0 -0
  107. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/extractous.py +0 -0
  108. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ffuf_shortnames.py +0 -0
  109. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/filedownload.py +0 -0
  110. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/fingerprintx.py +0 -0
  111. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/fullhunt.py +0 -0
  112. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/generic_ssrf.py +0 -0
  113. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/git.py +0 -0
  114. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/git_clone.py +0 -0
  115. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/gitdumper.py +0 -0
  116. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/github_codesearch.py +0 -0
  117. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/github_org.py +0 -0
  118. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/github_workflows.py +0 -0
  119. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/gitlab.py +0 -0
  120. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/google_playstore.py +0 -0
  121. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/gowitness.py +0 -0
  122. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/hackertarget.py +0 -0
  123. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/host_header.py +0 -0
  124. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/httpx.py +0 -0
  125. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/hunt.py +0 -0
  126. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/hunterio.py +0 -0
  127. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/iis_shortnames.py +0 -0
  128. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/__init__.py +0 -0
  129. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/aggregate.py +0 -0
  130. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/base.py +0 -0
  131. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/cloudcheck.py +0 -0
  132. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/dnsresolve.py +0 -0
  133. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/speculate.py +0 -0
  134. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/internal/unarchive.py +0 -0
  135. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ip2location.py +0 -0
  136. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ipneighbor.py +0 -0
  137. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ipstack.py +0 -0
  138. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/jadx.py +0 -0
  139. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/leakix.py +0 -0
  140. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/myssl.py +0 -0
  141. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/newsletters.py +0 -0
  142. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/ntlm.py +0 -0
  143. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/oauth.py +0 -0
  144. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/otx.py +0 -0
  145. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/__init__.py +0 -0
  146. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/asset_inventory.py +0 -0
  147. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/base.py +0 -0
  148. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/csv.py +0 -0
  149. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/discord.py +0 -0
  150. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/emails.py +0 -0
  151. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/http.py +0 -0
  152. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/json.py +0 -0
  153. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/mysql.py +0 -0
  154. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/neo4j.py +0 -0
  155. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/nmap_xml.py +0 -0
  156. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/postgres.py +0 -0
  157. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/python.py +0 -0
  158. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/slack.py +0 -0
  159. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/splunk.py +0 -0
  160. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/sqlite.py +0 -0
  161. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/stdout.py +0 -0
  162. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/subdomains.py +0 -0
  163. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/teams.py +0 -0
  164. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/txt.py +0 -0
  165. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/web_parameters.py +0 -0
  166. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/web_report.py +0 -0
  167. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/output/websocket.py +0 -0
  168. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/paramminer_cookies.py +0 -0
  169. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/paramminer_getparams.py +0 -0
  170. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/paramminer_headers.py +0 -0
  171. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/passivetotal.py +0 -0
  172. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/pgp.py +0 -0
  173. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/portfilter.py +0 -0
  174. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/portscan.py +0 -0
  175. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/postman.py +0 -0
  176. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/postman_download.py +0 -0
  177. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/rapiddns.py +0 -0
  178. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/report/affiliates.py +0 -0
  179. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/report/asn.py +0 -0
  180. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/report/base.py +0 -0
  181. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/robots.py +0 -0
  182. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/securitytrails.py +0 -0
  183. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/securitytxt.py +0 -0
  184. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/shodan_dns.py +0 -0
  185. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/shodan_idb.py +0 -0
  186. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/sitedossier.py +0 -0
  187. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/skymem.py +0 -0
  188. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/smuggler.py +0 -0
  189. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/social.py +0 -0
  190. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/sslcert.py +0 -0
  191. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/subdomaincenter.py +0 -0
  192. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/subdomainradar.py +0 -0
  193. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/telerik.py +0 -0
  194. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/bucket.py +0 -0
  195. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/github.py +0 -0
  196. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/postman.py +0 -0
  197. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/shodan.py +0 -0
  198. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/sql.py +0 -0
  199. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
  200. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/templates/webhook.py +0 -0
  201. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/trickest.py +0 -0
  202. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/trufflehog.py +0 -0
  203. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/url_manipulation.py +0 -0
  204. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/urlscan.py +0 -0
  205. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/viewdns.py +0 -0
  206. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/virustotal.py +0 -0
  207. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wafw00f.py +0 -0
  208. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wappalyzer.py +0 -0
  209. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wayback.py +0 -0
  210. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/wpscan.py +0 -0
  211. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/modules/zoomeye.py +0 -0
  212. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/baddns-intense.yml +0 -0
  213. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/cloud-enum.yml +0 -0
  214. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/code-enum.yml +0 -0
  215. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/email-enum.yml +0 -0
  216. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/fast.yml +0 -0
  217. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/kitchen-sink.yml +0 -0
  218. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei-budget.yml +0 -0
  219. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei-intense.yml +0 -0
  220. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei-technology.yml +0 -0
  221. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/nuclei/nuclei.yml +0 -0
  222. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/spider-intense.yml +0 -0
  223. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/spider.yml +0 -0
  224. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/subdomain-enum.yml +0 -0
  225. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/tech-detect.yml +0 -0
  226. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
  227. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/dirbust-light.yml +0 -0
  228. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
  229. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
  230. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web/paramminer.yml +0 -0
  231. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web-basic.yml +0 -0
  232. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web-screenshots.yml +0 -0
  233. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/presets/web-thorough.yml +0 -0
  234. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/__init__.py +0 -0
  235. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/dispatcher.py +0 -0
  236. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/manager.py +0 -0
  237. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/__init__.py +0 -0
  238. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/conditions.py +0 -0
  239. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/environ.py +0 -0
  240. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/path.py +0 -0
  241. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/preset/preset.py +0 -0
  242. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/scanner.py +0 -0
  243. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/stats.py +0 -0
  244. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scanner/target.py +0 -0
  245. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/scripts/docs.py +0 -0
  246. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/__init__.py +0 -0
  247. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/bbot_fixtures.py +0 -0
  248. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/conftest.py +0 -0
  249. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/coverage.cfg +0 -0
  250. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/fastapi_test.py +0 -0
  251. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/owasp_mastg.apk +0 -0
  252. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/run_tests.sh +0 -0
  253. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test.conf +0 -0
  254. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_output.ndjson +0 -0
  255. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/__init__.py +0 -0
  256. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
  257. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -0
  258. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
  259. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_command.py +0 -0
  260. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_config.py +0 -0
  261. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
  262. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_dns.py +0 -0
  263. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_docs.py +0 -0
  264. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_engine.py +0 -0
  265. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_events.py +0 -0
  266. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_files.py +0 -0
  267. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_helpers.py +0 -0
  268. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
  269. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
  270. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
  271. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_presets.py +0 -0
  272. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
  273. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
  274. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_scan.py +0 -0
  275. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_scope.py +0 -0
  276. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_target.py +0 -0
  277. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_1/test_web.py +0 -0
  278. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/__init__.py +0 -0
  279. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
  280. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
  281. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
  282. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
  283. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
  284. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
  285. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
  286. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
  287. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
  288. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
  289. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
  290. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
  291. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
  292. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
  293. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
  294. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
  295. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
  296. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
  297. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
  298. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
  299. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
  300. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
  301. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
  302. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
  303. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
  304. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
  305. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
  306. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
  307. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
  308. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
  309. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
  310. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
  311. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
  312. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
  313. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
  314. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
  315. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
  316. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
  317. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
  318. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
  319. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
  320. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
  321. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
  322. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
  323. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
  324. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
  325. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
  326. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
  327. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
  328. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
  329. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
  330. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
  331. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +0 -0
  332. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
  333. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
  334. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
  335. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
  336. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
  337. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
  338. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
  339. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
  340. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
  341. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_gitdumper.py +0 -0
  342. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
  343. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
  344. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
  345. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
  346. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
  347. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
  348. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
  349. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
  350. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
  351. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
  352. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
  353. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
  354. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
  355. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
  356. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
  357. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
  358. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
  359. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
  360. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
  361. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
  362. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
  363. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
  364. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
  365. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_nmap_xml.py +0 -0
  366. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
  367. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
  368. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
  369. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
  370. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
  371. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
  372. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
  373. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
  374. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
  375. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_portfilter.py +0 -0
  376. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
  377. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
  378. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
  379. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
  380. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
  381. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
  382. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
  383. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
  384. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
  385. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
  386. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_idb.py +0 -0
  387. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
  388. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
  389. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
  390. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
  391. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
  392. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
  393. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
  394. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
  395. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
  396. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
  397. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
  398. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
  399. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
  400. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
  401. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
  402. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
  403. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
  404. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
  405. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_unarchive.py +0 -0
  406. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
  407. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
  408. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
  409. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
  410. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
  411. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
  412. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
  413. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
  414. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_web_parameters.py +0 -0
  415. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
  416. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
  417. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
  418. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
  419. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
  420. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
  421. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/testsslcert.pem +0 -0
  422. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/test/testsslkey.pem +0 -0
  423. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/devops_mutations.txt +0 -0
  424. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
  425. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/nameservers.txt +0 -0
  426. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
  427. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
  428. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
  429. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
  430. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
  431. {bbot-2.4.0.5977rc0 → bbot-2.4.0.5986rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bbot
3
- Version: 2.4.0.5977rc0
3
+ Version: 2.4.0.5986rc0
4
4
  Summary: OSINT automation for hackers.
5
5
  License: GPL-3.0
6
6
  Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
@@ -1,4 +1,4 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.4.0.5977rc"
2
+ __version__ = "v2.4.0.5986rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
@@ -78,7 +78,7 @@ async def _main():
78
78
  return
79
79
 
80
80
  # if we're listing modules or their options
81
- if options.list_modules or options.list_output_modules or options.list_module_options:
81
+ if options.list_modules or options.list_output_modules or options.list_module_options or options.module_help:
82
82
  # if no modules or flags are specified, enable everything
83
83
  if not (options.modules or options.output_modules or options.flags):
84
84
  for module, preloaded in preset.module_loader.preloaded().items():
@@ -119,6 +119,20 @@ async def _main():
119
119
  print(row)
120
120
  return
121
121
 
122
+ # --module-help
123
+ if options.module_help:
124
+ module_name = options.module_help
125
+ all_modules = list(preset.module_loader.preloaded())
126
+ if module_name not in all_modules:
127
+ log.hugewarning(f'Module "{module_name}" not found')
128
+ return
129
+
130
+ # Load the module class
131
+ loaded_modules = preset.module_loader.load_modules([module_name])
132
+ module_name, module_class = next(iter(loaded_modules.items()))
133
+ print(module_class.help_text())
134
+ return
135
+
122
136
  # --list-flags
123
137
  if options.list_flags:
124
138
  flags = preset.flags if preset.flags else None
@@ -1595,6 +1595,48 @@ class BaseModule:
1595
1595
  if trace:
1596
1596
  self.trace()
1597
1597
 
1598
+ @classmethod
1599
+ def help_text(self):
1600
+ """
1601
+ Returns a string containing help text for the module.
1602
+ This includes the module's description, metadata, events, flags, and available options.
1603
+ """
1604
+ # Retrieve the module's metadata, options, events, and flags
1605
+ meta = getattr(self, "meta", {})
1606
+ options = getattr(self, "options", {})
1607
+ options_desc = getattr(self, "options_desc", {})
1608
+ watched_events = getattr(self, "watched_events", [])
1609
+ produced_events = getattr(self, "produced_events", [])
1610
+ flags = getattr(self, "flags", [])
1611
+
1612
+ help_text = "\n" + "=" * 40 + "\n"
1613
+ help_text += f"Module Help: {self.__name__}\n"
1614
+ help_text += "=" * 40 + "\n\n"
1615
+
1616
+ for key, value in meta.items():
1617
+ help_text += f"{key.replace('_', ' ').title()}: {value}\n"
1618
+
1619
+ help_text += "\nWatched Events:\n"
1620
+ help_text += " " + ", ".join(watched_events) + "\n" if watched_events else " None\n"
1621
+
1622
+ help_text += "\nProduced Events:\n"
1623
+ help_text += " " + ", ".join(produced_events) + "\n" if produced_events else " None\n"
1624
+
1625
+ help_text += "\nFlags:\n"
1626
+ help_text += " " + ", ".join(flags) + "\n" if flags else " None\n"
1627
+
1628
+ help_text += "\nOptions:\n"
1629
+ if options:
1630
+ for option, default_value in options.items():
1631
+ option_description = options_desc.get(option, "No description available.")
1632
+ help_text += f" - {option}:\n"
1633
+ help_text += f" Description: {option_description}\n"
1634
+ help_text += f" Default: {default_value}\n"
1635
+ else:
1636
+ help_text += " No options available."
1637
+
1638
+ return help_text
1639
+
1598
1640
 
1599
1641
  class BaseInterceptModule(BaseModule):
1600
1642
  """
@@ -15,7 +15,7 @@ class nuclei(BaseModule):
15
15
  }
16
16
 
17
17
  options = {
18
- "version": "3.3.9",
18
+ "version": "3.3.10",
19
19
  "tags": "",
20
20
  "templates": "",
21
21
  "severity": "",
@@ -262,6 +262,8 @@ class ExcavateRule:
262
262
 
263
263
 
264
264
  class CustomExtractor(ExcavateRule):
265
+ description = "Enables custom, user-defined YARA rules."
266
+
265
267
  def __init__(self, excavate):
266
268
  super().__init__(excavate)
267
269
 
@@ -356,6 +358,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
356
358
  )
357
359
 
358
360
  class ParameterExtractor(ExcavateRule):
361
+ description = "Extracts web parameters. Enabled if any modules are enabled that emit WEB_PARAMETER events."
359
362
  yara_rules = {}
360
363
 
361
364
  class ParameterExtractorRule:
@@ -531,6 +534,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
531
534
  self.excavate.debug(f"blocked parameter [{parameter_name}] due to validation failure")
532
535
 
533
536
  class CSPExtractor(ExcavateRule):
537
+ description = "Extracts domains from CSP headers."
538
+
534
539
  yara_rules = {
535
540
  "csp": r'rule csp { meta: tags = "affiliate" description = "contains CSP Header" strings: $csp = /Content-Security-Policy:[^\r\n]+/ nocase condition: $csp }',
536
541
  }
@@ -543,6 +548,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
543
548
  await self.report(domain, event, yara_rule_settings, discovery_context, event_type="DNS_NAME")
544
549
 
545
550
  class EmailExtractor(ExcavateRule):
551
+ description = "Extract email addresses."
552
+
546
553
  yara_rules = {
547
554
  "email": 'rule email { meta: description = "contains email address" strings: $email = /[^\\W_][\\w\\-\\.\\+\']{0,100}@[a-zA-Z0-9\\-]{1,100}(\\.[a-zA-Z0-9\\-]{1,100})*\\.[a-zA-Z]{2,63}/ nocase fullword condition: $email }',
548
555
  }
@@ -556,11 +563,13 @@ class excavate(BaseInternalModule, BaseInterceptModule):
556
563
 
557
564
  # Future Work: Emit a JWT Object, and make a new Module to ingest it.
558
565
  class JWTExtractor(ExcavateRule):
566
+ description = "Extracts JSON Web Tokens."
559
567
  yara_rules = {
560
568
  "jwt": r'rule jwt { meta: emit_match = "True" description = "contains JSON Web Token (JWT)" strings: $jwt = /\beyJ[_a-zA-Z0-9\/+]*\.[_a-zA-Z0-9\/+]*\.[_a-zA-Z0-9\/+]*/ nocase condition: $jwt }',
561
569
  }
562
570
 
563
571
  class ErrorExtractor(ExcavateRule):
572
+ description = "Identifies error messages from various platforms."
564
573
  signatures = {
565
574
  "PHP_1": r"/\.php on line [0-9]+/",
566
575
  "PHP_2": r"/\.php<\/b> on line <b>[0-9]+/",
@@ -598,6 +607,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
598
607
  await self.report(event_data, event, yara_rule_settings, discovery_context, event_type="FINDING")
599
608
 
600
609
  class SerializationExtractor(ExcavateRule):
610
+ description = "Identifies serialized objects from various platforms."
601
611
  regexes = {
602
612
  "Java": re.compile(r"[^a-zA-Z0-9\/+]rO0[a-zA-Z0-9+\/]+={0,2}"),
603
613
  "DOTNET": re.compile(r"[^a-zA-Z0-9\/+]AAEAAAD\/\/[a-zA-Z0-9\/+]+={0,2}"),
@@ -627,12 +637,14 @@ class excavate(BaseInternalModule, BaseInterceptModule):
627
637
  await self.report(event_data, event, yara_rule_settings, discovery_context, event_type="FINDING")
628
638
 
629
639
  class FunctionalityExtractor(ExcavateRule):
640
+ description = "Detects potentially exploitable functionality and attack surface in web applications."
630
641
  yara_rules = {
631
642
  "File_Upload_Functionality": r'rule File_Upload_Functionality { meta: description = "contains file upload functionality" strings: $fileuploadfunc = /<input[^>]+type=["\']?file["\']?[^>]+>/ nocase condition: $fileuploadfunc }',
632
643
  "Web_Service_WSDL": r'rule Web_Service_WSDL { meta: emit_match = "True" description = "contains a web service WSDL URL" strings: $wsdl = /https?:\/\/[^\s]*\.(wsdl)/ nocase condition: $wsdl }',
633
644
  }
634
645
 
635
646
  class NonHttpSchemeExtractor(ExcavateRule):
647
+ description = "Detects URIs with non-HTTP schemes."
636
648
  yara_rules = {
637
649
  "Non_HTTP_Scheme": r'rule Non_HTTP_Scheme { meta: description = "contains non-http scheme URL" strings: $nonhttpscheme = /\b\w{2,35}:\/\/[\w.-]+(:\d+)?\b/ nocase fullword condition: $nonhttpscheme }'
638
650
  }
@@ -681,6 +693,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
681
693
  )
682
694
 
683
695
  class URLExtractor(ExcavateRule):
696
+ description = "Extracts URLs."
684
697
  yara_rules = {
685
698
  "url_full": (
686
699
  r"""
@@ -773,6 +786,8 @@ class excavate(BaseInternalModule, BaseInterceptModule):
773
786
  return event_draft
774
787
 
775
788
  class HostnameExtractor(ExcavateRule):
789
+ description = "DNS name discovery, based on the scan target."
790
+
776
791
  yara_rules = {}
777
792
 
778
793
  def __init__(self, excavate):
@@ -785,6 +800,7 @@ class excavate(BaseInternalModule, BaseInterceptModule):
785
800
  await self.report(domain_str, event, yara_rule_settings, discovery_context, event_type="DNS_NAME")
786
801
 
787
802
  class LoginPageExtractor(ExcavateRule):
803
+ description = "Detects login pages with username and password fields."
788
804
  yara_rules = {
789
805
  "login_page": r"""
790
806
  rule login_page {
@@ -1084,3 +1100,39 @@ class excavate(BaseInternalModule, BaseInterceptModule):
1084
1100
  content_type="",
1085
1101
  discovery_context="Parsed file content",
1086
1102
  )
1103
+
1104
+ @classmethod
1105
+ def help_text(self):
1106
+ # Call the base class help_text method
1107
+ base_help_text = super().help_text()
1108
+
1109
+ # Import the current module to inspect its classes
1110
+ import sys
1111
+
1112
+ current_module = sys.modules[self.__module__]
1113
+
1114
+ # Function to recursively find subclasses of ExcavateRule
1115
+ def find_subclasses(cls):
1116
+ subclasses = []
1117
+ for name, obj in vars(cls).items():
1118
+ if isinstance(obj, type) and issubclass(obj, ExcavateRule) and obj is not ExcavateRule:
1119
+ description = getattr(obj, "description", "No description available.")
1120
+ subclasses.append((name, description))
1121
+ # Recursively check for nested classes
1122
+ if isinstance(obj, type):
1123
+ subclasses.extend(find_subclasses(obj))
1124
+ return subclasses
1125
+
1126
+ # Find all classes in the module that inherit from ExcavateRule
1127
+ submodules = find_subclasses(current_module)
1128
+
1129
+ # Format submodules information
1130
+ submodules_info = "\nSubmodules:\n"
1131
+ if submodules:
1132
+ for submodule, description in submodules:
1133
+ submodules_info += f" - {submodule}: {description}\n"
1134
+ else:
1135
+ submodules_info += " No submodules available.\n"
1136
+
1137
+ # Combine the base help text with the submodules information
1138
+ return base_help_text + submodules_info
@@ -67,6 +67,11 @@ class BBOTArgs:
67
67
  "",
68
68
  "bbot -lf",
69
69
  ),
70
+ (
71
+ "Show help for a specific module",
72
+ "",
73
+ "bbot -mh <module_name>",
74
+ ),
70
75
  ]
71
76
 
72
77
  epilog = "EXAMPLES\n"
@@ -314,6 +319,14 @@ class BBOTArgs:
314
319
  help="Show the current preset in its full form, including defaults",
315
320
  )
316
321
 
322
+ scan.add_argument(
323
+ "-mh",
324
+ "--module-help",
325
+ default=None,
326
+ help="Show help for a specific module",
327
+ metavar="MODULE",
328
+ )
329
+
317
330
  output = p.add_argument_group(title="Output")
318
331
  output.add_argument(
319
332
  "-o",
@@ -449,6 +449,20 @@ async def test_cli_customheaders(monkeypatch, caplog, capsys):
449
449
  assert "Custom headers not formatted correctly (missing header name or value)" in caplog.text
450
450
 
451
451
 
452
+ @pytest.mark.asyncio
453
+ async def test_cli_module_help(monkeypatch, capsys):
454
+ monkeypatch.setattr(sys, "exit", lambda *args, **kwargs: True)
455
+ monkeypatch.setattr(os, "_exit", lambda *args, **kwargs: True)
456
+
457
+ monkeypatch.setattr("sys.argv", ["bbot", "--module-help", "excavate"])
458
+ success = await cli._main()
459
+ assert success is None, "module help failed to execute"
460
+ captured = capsys.readouterr()
461
+
462
+ assert "Extracts domains from CSP headers" in captured.out
463
+ assert "Module Help:" in captured.out
464
+
465
+
452
466
  def test_cli_config_validation(monkeypatch, caplog):
453
467
  monkeypatch.setattr(sys, "exit", lambda *args, **kwargs: True)
454
468
  monkeypatch.setattr(os, "_exit", lambda *args, **kwargs: True)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bbot"
3
- version = "v2.4.0.5977rc"
3
+ version = "v2.4.0.5986rc"
4
4
  description = "OSINT automation for hackers."
5
5
  authors = [
6
6
  "TheTechromancer",
File without changes
File without changes