bbot 2.3.0.5376rc0__tar.gz → 2.3.0.5382rc0__tar.gz

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

Potentially problematic release.


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

Files changed (420) hide show
  1. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/PKG-INFO +2 -2
  2. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/README.md +1 -1
  3. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/__init__.py +1 -1
  4. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/cli.py +2 -2
  5. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/config/logger.py +1 -1
  6. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/core.py +1 -1
  7. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/event/base.py +13 -13
  8. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/command.py +4 -4
  9. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/depsinstaller/installer.py +5 -5
  10. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/diff.py +7 -7
  11. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/brute.py +1 -1
  12. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/dns.py +1 -1
  13. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/engine.py +4 -4
  14. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/files.py +1 -1
  15. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/helper.py +3 -1
  16. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/interactsh.py +3 -3
  17. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/misc.py +11 -11
  18. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/regex.py +1 -1
  19. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/regexes.py +3 -3
  20. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/validators.py +1 -1
  21. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/client.py +1 -1
  22. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/engine.py +1 -1
  23. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/web.py +2 -2
  24. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/wordcloud.py +5 -5
  25. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/modules.py +21 -21
  26. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/azure_tenant.py +2 -2
  27. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/base.py +16 -16
  28. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bypass403.py +5 -5
  29. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/c99.py +1 -1
  30. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/columbus.py +1 -1
  31. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/ffuf.py +8 -8
  32. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/nuclei.py +1 -1
  33. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/vhost.py +3 -3
  34. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsbimi.py +1 -1
  35. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsdumpster.py +2 -2
  36. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dockerhub.py +1 -1
  37. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/extractous.py +1 -1
  38. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/filedownload.py +1 -1
  39. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/generic_ssrf.py +3 -3
  40. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/github_workflows.py +1 -1
  41. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/gowitness.py +7 -7
  42. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/host_header.py +5 -5
  43. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/httpx.py +1 -1
  44. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/iis_shortnames.py +6 -6
  45. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/cloudcheck.py +5 -5
  46. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/dnsresolve.py +7 -7
  47. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/excavate.py +5 -5
  48. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/speculate.py +4 -4
  49. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ipneighbor.py +1 -1
  50. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/jadx.py +1 -1
  51. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/newsletters.py +2 -2
  52. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/asset_inventory.py +6 -6
  53. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/base.py +1 -1
  54. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/csv.py +1 -1
  55. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/stdout.py +2 -2
  56. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/paramminer_headers.py +3 -3
  57. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/portscan.py +3 -3
  58. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/report/asn.py +11 -11
  59. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/robots.py +3 -3
  60. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/securitytxt.py +1 -1
  61. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/sitedossier.py +1 -1
  62. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/social.py +1 -1
  63. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/subdomainradar.py +1 -1
  64. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/telerik.py +7 -7
  65. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/bucket.py +1 -1
  66. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/github.py +1 -1
  67. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/shodan.py +1 -1
  68. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/subdomain_enum.py +1 -1
  69. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/webhook.py +1 -1
  70. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/trufflehog.py +1 -1
  71. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/url_manipulation.py +3 -3
  72. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/urlscan.py +1 -1
  73. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/viewdns.py +1 -1
  74. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wafw00f.py +1 -1
  75. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/args.py +10 -10
  76. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/preset.py +9 -9
  77. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/scanner.py +17 -17
  78. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/target.py +1 -1
  79. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scripts/docs.py +1 -1
  80. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/bbot_fixtures.py +1 -1
  81. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/conftest.py +1 -1
  82. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/run_tests.sh +4 -4
  83. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +2 -2
  84. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_cli.py +56 -56
  85. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_dns.py +15 -15
  86. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_engine.py +17 -17
  87. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_events.py +22 -22
  88. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_helpers.py +26 -26
  89. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +306 -306
  90. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_modules_basic.py +52 -53
  91. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_presets.py +81 -81
  92. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_regexes.py +5 -5
  93. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_scan.py +4 -4
  94. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_target.py +25 -25
  95. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_web.py +5 -5
  96. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/base.py +6 -6
  97. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +1 -1
  98. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +1 -1
  99. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +6 -6
  100. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +2 -4
  101. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +4 -4
  102. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +2 -2
  103. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +2 -2
  104. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +1 -1
  105. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +2 -2
  106. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +9 -9
  107. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +1 -1
  108. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +2 -2
  109. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +1 -1
  110. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +1 -1
  111. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +8 -8
  112. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +2 -2
  113. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +10 -10
  114. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +9 -9
  115. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +14 -14
  116. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +2 -2
  117. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +4 -4
  118. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +1 -1
  119. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +4 -4
  120. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +7 -7
  121. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +2 -2
  122. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +1 -1
  123. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +1 -1
  124. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +6 -6
  125. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +7 -7
  126. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +1 -1
  127. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +1 -1
  128. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +1 -1
  129. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +2 -2
  130. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +3 -3
  131. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +1 -1
  132. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +9 -9
  133. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +2 -2
  134. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +1 -1
  135. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -6
  136. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +4 -4
  137. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +1 -1
  138. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +1 -1
  139. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +2 -2
  140. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +1 -1
  141. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/pyproject.toml +2 -3
  142. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/LICENSE +0 -0
  143. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/__init__.py +0 -0
  144. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/config/__init__.py +0 -0
  145. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/config/files.py +0 -0
  146. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/engine.py +0 -0
  147. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/event/__init__.py +0 -0
  148. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/event/helpers.py +0 -0
  149. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/flags.py +0 -0
  150. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/__init__.py +0 -0
  151. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/async_helpers.py +0 -0
  152. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/bloom.py +0 -0
  153. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/cache.py +0 -0
  154. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
  155. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
  156. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/__init__.py +0 -0
  157. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/helpers.py +0 -0
  158. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/mock.py +0 -0
  159. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/libmagic.py +0 -0
  160. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/names_generator.py +0 -0
  161. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/ntlm.py +0 -0
  162. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/process.py +0 -0
  163. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/ratelimiter.py +0 -0
  164. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/url.py +0 -0
  165. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/__init__.py +0 -0
  166. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
  167. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/multiprocess.py +0 -0
  168. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/core/shared_deps.py +0 -0
  169. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/db/sql/models.py +0 -0
  170. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/defaults.yml +0 -0
  171. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/errors.py +0 -0
  172. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/logger.py +0 -0
  173. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/__init__.py +0 -0
  174. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ajaxpro.py +0 -0
  175. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/anubisdb.py +0 -0
  176. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/apkpure.py +0 -0
  177. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/azure_realm.py +0 -0
  178. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/baddns.py +0 -0
  179. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/baddns_direct.py +0 -0
  180. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/baddns_zone.py +0 -0
  181. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/badsecrets.py +0 -0
  182. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bevigil.py +0 -0
  183. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/binaryedge.py +0 -0
  184. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_amazon.py +0 -0
  185. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_azure.py +0 -0
  186. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_digitalocean.py +0 -0
  187. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_file_enum.py +0 -0
  188. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_firebase.py +0 -0
  189. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_google.py +0 -0
  190. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bufferoverrun.py +0 -0
  191. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/builtwith.py +0 -0
  192. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/censys.py +0 -0
  193. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/certspotter.py +0 -0
  194. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/chaos.py +0 -0
  195. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/code_repository.py +0 -0
  196. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/credshed.py +0 -0
  197. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/crt.py +0 -0
  198. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/dastardly.py +0 -0
  199. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dehashed.py +0 -0
  200. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/digitorus.py +0 -0
  201. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsbrute.py +0 -0
  202. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
  203. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnscaa.py +0 -0
  204. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnscommonsrv.py +0 -0
  205. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnstlsrpt.py +0 -0
  206. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/docker_pull.py +0 -0
  207. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dotnetnuke.py +0 -0
  208. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/emailformat.py +0 -0
  209. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ffuf_shortnames.py +0 -0
  210. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/fingerprintx.py +0 -0
  211. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/fullhunt.py +0 -0
  212. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/git.py +0 -0
  213. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/git_clone.py +0 -0
  214. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/github_codesearch.py +0 -0
  215. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/github_org.py +0 -0
  216. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/gitlab.py +0 -0
  217. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/google_playstore.py +0 -0
  218. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/hackertarget.py +0 -0
  219. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/hunt.py +0 -0
  220. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/hunterio.py +0 -0
  221. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/__init__.py +0 -0
  222. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/aggregate.py +0 -0
  223. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/base.py +0 -0
  224. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internetdb.py +0 -0
  225. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ip2location.py +0 -0
  226. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ipstack.py +0 -0
  227. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/leakix.py +0 -0
  228. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/myssl.py +0 -0
  229. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ntlm.py +0 -0
  230. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/oauth.py +0 -0
  231. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/otx.py +0 -0
  232. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/__init__.py +0 -0
  233. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/discord.py +0 -0
  234. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/emails.py +0 -0
  235. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/http.py +0 -0
  236. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/json.py +0 -0
  237. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/mysql.py +0 -0
  238. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/neo4j.py +0 -0
  239. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/postgres.py +0 -0
  240. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/python.py +0 -0
  241. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/slack.py +0 -0
  242. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/splunk.py +0 -0
  243. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/sqlite.py +0 -0
  244. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/subdomains.py +0 -0
  245. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/teams.py +0 -0
  246. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/txt.py +0 -0
  247. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/web_report.py +0 -0
  248. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/websocket.py +0 -0
  249. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/paramminer_cookies.py +0 -0
  250. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/paramminer_getparams.py +0 -0
  251. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/passivetotal.py +0 -0
  252. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/pgp.py +0 -0
  253. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/postman.py +0 -0
  254. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/postman_download.py +0 -0
  255. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/rapiddns.py +0 -0
  256. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/report/affiliates.py +0 -0
  257. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/report/base.py +0 -0
  258. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/secretsdb.py +0 -0
  259. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/securitytrails.py +0 -0
  260. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/shodan_dns.py +0 -0
  261. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/skymem.py +0 -0
  262. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/smuggler.py +0 -0
  263. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/sslcert.py +0 -0
  264. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/subdomaincenter.py +0 -0
  265. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/postman.py +0 -0
  266. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/sql.py +0 -0
  267. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/trickest.py +0 -0
  268. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/virustotal.py +0 -0
  269. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wappalyzer.py +0 -0
  270. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wayback.py +0 -0
  271. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wpscan.py +0 -0
  272. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/modules/zoomeye.py +0 -0
  273. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/baddns-thorough.yml +0 -0
  274. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/cloud-enum.yml +0 -0
  275. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/code-enum.yml +0 -0
  276. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/email-enum.yml +0 -0
  277. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/fast.yml +0 -0
  278. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/kitchen-sink.yml +0 -0
  279. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/spider.yml +0 -0
  280. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/subdomain-enum.yml +0 -0
  281. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
  282. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/dirbust-light.yml +0 -0
  283. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
  284. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
  285. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/paramminer.yml +0 -0
  286. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web-basic.yml +0 -0
  287. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web-screenshots.yml +0 -0
  288. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web-thorough.yml +0 -0
  289. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/__init__.py +0 -0
  290. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/dispatcher.py +0 -0
  291. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/manager.py +0 -0
  292. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/__init__.py +0 -0
  293. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/conditions.py +0 -0
  294. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/environ.py +0 -0
  295. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/path.py +0 -0
  296. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/stats.py +0 -0
  297. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/__init__.py +0 -0
  298. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/coverage.cfg +0 -0
  299. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/fastapi_test.py +0 -0
  300. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/owasp_mastg.apk +0 -0
  301. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test.conf +0 -0
  302. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_output.ndjson +0 -0
  303. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/__init__.py +0 -0
  304. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
  305. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
  306. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_command.py +0 -0
  307. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_config.py +0 -0
  308. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
  309. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_docs.py +0 -0
  310. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_files.py +0 -0
  311. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
  312. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
  313. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_scope.py +0 -0
  314. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/__init__.py +0 -0
  315. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
  316. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
  317. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
  318. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
  319. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
  320. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
  321. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
  322. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
  323. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
  324. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
  325. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
  326. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
  327. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
  328. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
  329. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
  330. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
  331. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
  332. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
  333. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
  334. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
  335. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
  336. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
  337. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
  338. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
  339. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
  340. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
  341. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
  342. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
  343. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
  344. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
  345. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
  346. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
  347. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
  348. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
  349. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
  350. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
  351. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
  352. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
  353. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
  354. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
  355. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
  356. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
  357. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
  358. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
  359. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
  360. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
  361. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
  362. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
  363. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
  364. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
  365. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
  366. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
  367. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
  368. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
  369. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
  370. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
  371. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
  372. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
  373. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
  374. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
  375. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
  376. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
  377. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
  378. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
  379. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
  380. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
  381. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
  382. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
  383. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
  384. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
  385. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
  386. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
  387. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
  388. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
  389. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
  390. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
  391. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
  392. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
  393. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
  394. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
  395. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
  396. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
  397. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
  398. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
  399. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
  400. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
  401. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
  402. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
  403. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
  404. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
  405. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
  406. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
  407. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
  408. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
  409. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/testsslcert.pem +0 -0
  410. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/test/testsslkey.pem +0 -0
  411. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/devops_mutations.txt +0 -0
  412. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +0 -0
  413. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
  414. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/nameservers.txt +0 -0
  415. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
  416. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
  417. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
  418. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
  419. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
  420. {bbot-2.3.0.5376rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bbot
3
- Version: 2.3.0.5376rc0
3
+ Version: 2.3.0.5382rc0
4
4
  Summary: OSINT automation for hackers.
5
5
  Home-page: https://github.com/blacklanternsecurity/bbot
6
6
  License: GPL-3.0
@@ -54,7 +54,7 @@ Description-Content-Type: text/markdown
54
54
 
55
55
  [![bbot_banner](https://github.com/user-attachments/assets/f02804ce-9478-4f1e-ac4d-9cf5620a3214)](https://github.com/blacklanternsecurity/bbot)
56
56
 
57
- [![Python Version](https://img.shields.io/badge/python-3.9+-FF8400)](https://www.python.org) [![License](https://img.shields.io/badge/license-GPLv3-FF8400.svg)](https://github.com/blacklanternsecurity/bbot/blob/dev/LICENSE) [![DEF CON Recon Village 2024](https://img.shields.io/badge/DEF%20CON%20Demo%20Labs-2023-FF8400.svg)](https://www.reconvillage.org/talks) [![PyPi Downloads](https://static.pepy.tech/personalized-badge/bbot?right_color=orange&left_color=grey)](https://pepy.tech/project/bbot) [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Tests](https://github.com/blacklanternsecurity/bbot/actions/workflows/tests.yml/badge.svg?branch=stable)](https://github.com/blacklanternsecurity/bbot/actions?query=workflow%3A"tests") [![Codecov](https://codecov.io/gh/blacklanternsecurity/bbot/branch/dev/graph/badge.svg?token=IR5AZBDM5K)](https://codecov.io/gh/blacklanternsecurity/bbot) [![Discord](https://img.shields.io/discord/859164869970362439)](https://discord.com/invite/PZqkgxu5SA)
57
+ [![Python Version](https://img.shields.io/badge/python-3.9+-FF8400)](https://www.python.org) [![License](https://img.shields.io/badge/license-GPLv3-FF8400.svg)](https://github.com/blacklanternsecurity/bbot/blob/dev/LICENSE) [![DEF CON Recon Village 2024](https://img.shields.io/badge/DEF%20CON%20Demo%20Labs-2023-FF8400.svg)](https://www.reconvillage.org/talks) [![PyPi Downloads](https://static.pepy.tech/personalized-badge/bbot?right_color=orange&left_color=grey)](https://pepy.tech/project/bbot) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Tests](https://github.com/blacklanternsecurity/bbot/actions/workflows/tests.yml/badge.svg?branch=stable)](https://github.com/blacklanternsecurity/bbot/actions?query=workflow%3A"tests") [![Codecov](https://codecov.io/gh/blacklanternsecurity/bbot/branch/dev/graph/badge.svg?token=IR5AZBDM5K)](https://codecov.io/gh/blacklanternsecurity/bbot) [![Discord](https://img.shields.io/discord/859164869970362439)](https://discord.com/invite/PZqkgxu5SA)
58
58
 
59
59
  ### **BEE·bot** is a multipurpose scanner inspired by [Spiderfoot](https://github.com/smicallef/spiderfoot), built to automate your **Recon**, **Bug Bounties**, and **ASM**!
60
60
 
@@ -1,6 +1,6 @@
1
1
  [![bbot_banner](https://github.com/user-attachments/assets/f02804ce-9478-4f1e-ac4d-9cf5620a3214)](https://github.com/blacklanternsecurity/bbot)
2
2
 
3
- [![Python Version](https://img.shields.io/badge/python-3.9+-FF8400)](https://www.python.org) [![License](https://img.shields.io/badge/license-GPLv3-FF8400.svg)](https://github.com/blacklanternsecurity/bbot/blob/dev/LICENSE) [![DEF CON Recon Village 2024](https://img.shields.io/badge/DEF%20CON%20Demo%20Labs-2023-FF8400.svg)](https://www.reconvillage.org/talks) [![PyPi Downloads](https://static.pepy.tech/personalized-badge/bbot?right_color=orange&left_color=grey)](https://pepy.tech/project/bbot) [![Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Tests](https://github.com/blacklanternsecurity/bbot/actions/workflows/tests.yml/badge.svg?branch=stable)](https://github.com/blacklanternsecurity/bbot/actions?query=workflow%3A"tests") [![Codecov](https://codecov.io/gh/blacklanternsecurity/bbot/branch/dev/graph/badge.svg?token=IR5AZBDM5K)](https://codecov.io/gh/blacklanternsecurity/bbot) [![Discord](https://img.shields.io/discord/859164869970362439)](https://discord.com/invite/PZqkgxu5SA)
3
+ [![Python Version](https://img.shields.io/badge/python-3.9+-FF8400)](https://www.python.org) [![License](https://img.shields.io/badge/license-GPLv3-FF8400.svg)](https://github.com/blacklanternsecurity/bbot/blob/dev/LICENSE) [![DEF CON Recon Village 2024](https://img.shields.io/badge/DEF%20CON%20Demo%20Labs-2023-FF8400.svg)](https://www.reconvillage.org/talks) [![PyPi Downloads](https://static.pepy.tech/personalized-badge/bbot?right_color=orange&left_color=grey)](https://pepy.tech/project/bbot) [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff) [![Tests](https://github.com/blacklanternsecurity/bbot/actions/workflows/tests.yml/badge.svg?branch=stable)](https://github.com/blacklanternsecurity/bbot/actions?query=workflow%3A"tests") [![Codecov](https://codecov.io/gh/blacklanternsecurity/bbot/branch/dev/graph/badge.svg?token=IR5AZBDM5K)](https://codecov.io/gh/blacklanternsecurity/bbot) [![Discord](https://img.shields.io/discord/859164869970362439)](https://discord.com/invite/PZqkgxu5SA)
4
4
 
5
5
  ### **BEE·bot** is a multipurpose scanner inspired by [Spiderfoot](https://github.com/smicallef/spiderfoot), built to automate your **Recon**, **Bug Bounties**, and **ASM**!
6
6
 
@@ -1,4 +1,4 @@
1
1
  # version placeholder (replaced by poetry-dynamic-versioning)
2
- __version__ = "v2.3.0.5376rc"
2
+ __version__ = "v2.3.0.5382rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
@@ -130,8 +130,8 @@ async def _main():
130
130
  ]
131
131
  if deadly_modules and not options.allow_deadly:
132
132
  log.hugewarning(f"You enabled the following deadly modules: {','.join(deadly_modules)}")
133
- log.hugewarning(f"Deadly modules are highly intrusive")
134
- log.hugewarning(f"Please specify --allow-deadly to continue")
133
+ log.hugewarning("Deadly modules are highly intrusive")
134
+ log.hugewarning("Please specify --allow-deadly to continue")
135
135
  return False
136
136
 
137
137
  # --current-preset
@@ -68,7 +68,7 @@ class BBOTLogger:
68
68
  self.listener = None
69
69
 
70
70
  # if we haven't set up logging yet, do it now
71
- if not "_BBOT_LOGGING_SETUP" in os.environ:
71
+ if "_BBOT_LOGGING_SETUP" not in os.environ:
72
72
  os.environ["_BBOT_LOGGING_SETUP"] = "1"
73
73
  self.queue = multiprocessing.Queue()
74
74
  self.setup_queue_handler()
@@ -106,7 +106,7 @@ class BBOTCore:
106
106
  if DEFAULT_CONFIG is None:
107
107
  self.default_config = self.files_config.get_default_config()
108
108
  # ensure bbot home dir
109
- if not "home" in self.default_config:
109
+ if "home" not in self.default_config:
110
110
  self.default_config["home"] = "~/.bbot"
111
111
  return DEFAULT_CONFIG
112
112
 
@@ -175,8 +175,8 @@ class BaseEvent:
175
175
  self._scope_distance = None
176
176
  self._module_priority = None
177
177
  self._resolved_hosts = set()
178
- self.dns_children = dict()
179
- self.raw_dns_records = dict()
178
+ self.dns_children = {}
179
+ self.raw_dns_records = {}
180
180
  self._discovery_context = ""
181
181
  self._discovery_context_regex = re.compile(r"\{(?:event|module)[^}]*\}")
182
182
  self.web_spider_distance = 0
@@ -203,7 +203,7 @@ class BaseEvent:
203
203
  # self.scan holds the instantiated scan object (for helpers, etc.)
204
204
  self.scan = scan
205
205
  if (not self.scan) and (not self._dummy):
206
- raise ValidationError(f"Must specify scan")
206
+ raise ValidationError("Must specify scan")
207
207
  # self.scans holds a list of scan IDs from scans that encountered this event
208
208
  self.scans = []
209
209
  if scans is not None:
@@ -222,7 +222,7 @@ class BaseEvent:
222
222
 
223
223
  self.parent = parent
224
224
  if (not self.parent) and (not self._dummy):
225
- raise ValidationError(f"Must specify event parent")
225
+ raise ValidationError("Must specify event parent")
226
226
 
227
227
  if tags is not None:
228
228
  for tag in tags:
@@ -301,9 +301,9 @@ class BaseEvent:
301
301
  The purpose of internal events is to enable speculative/explorative discovery without cluttering
302
302
  the console with irrelevant or uninteresting events.
303
303
  """
304
- if not value in (True, False):
304
+ if value not in (True, False):
305
305
  raise ValueError(f'"internal" must be boolean, not {type(value)}')
306
- if value == True:
306
+ if value is True:
307
307
  self.add_tag("internal")
308
308
  else:
309
309
  self.remove_tag("internal")
@@ -769,7 +769,7 @@ class BaseEvent:
769
769
  Returns:
770
770
  dict: JSON-serializable dictionary representation of the event object.
771
771
  """
772
- j = dict()
772
+ j = {}
773
773
  # type, ID, scope description
774
774
  for i in ("type", "id", "uuid", "scope_description", "netloc"):
775
775
  v = getattr(self, i, "")
@@ -1013,12 +1013,12 @@ class ClosestHostEvent(DictHostEvent):
1013
1013
  if not self.host:
1014
1014
  for parent in self.get_parents(include_self=True):
1015
1015
  # inherit closest URL
1016
- if not "url" in self.data:
1016
+ if "url" not in self.data:
1017
1017
  parent_url = getattr(parent, "parsed_url", None)
1018
1018
  if parent_url is not None:
1019
1019
  self.data["url"] = parent_url.geturl()
1020
1020
  # inherit closest path
1021
- if not "path" in self.data and isinstance(parent.data, dict) and not parent.type == "HTTP_RESPONSE":
1021
+ if "path" not in self.data and isinstance(parent.data, dict) and not parent.type == "HTTP_RESPONSE":
1022
1022
  parent_path = parent.data.get("path", None)
1023
1023
  if parent_path is not None:
1024
1024
  self.data["path"] = parent_path
@@ -1227,7 +1227,7 @@ class URL_UNVERIFIED(BaseEvent):
1227
1227
 
1228
1228
  def add_tag(self, tag):
1229
1229
  host_same_as_parent = self.parent and self.host == self.parent.host
1230
- if tag == "spider-danger" and host_same_as_parent and not "spider-danger" in self.tags:
1230
+ if tag == "spider-danger" and host_same_as_parent and "spider-danger" not in self.tags:
1231
1231
  # increment the web spider distance
1232
1232
  if self.type == "URL_UNVERIFIED":
1233
1233
  self.web_spider_distance += 1
@@ -1249,7 +1249,7 @@ class URL_UNVERIFIED(BaseEvent):
1249
1249
 
1250
1250
  def _words(self):
1251
1251
  first_elem = self.parsed_url.path.lstrip("/").split("/")[0]
1252
- if not "." in first_elem:
1252
+ if "." not in first_elem:
1253
1253
  return extract_words(first_elem)
1254
1254
  return set()
1255
1255
 
@@ -1277,7 +1277,7 @@ class URL(URL_UNVERIFIED):
1277
1277
  @property
1278
1278
  def resolved_hosts(self):
1279
1279
  # TODO: remove this when we rip out httpx
1280
- return set(".".join(i.split("-")[1:]) for i in self.tags if i.startswith("ip-"))
1280
+ return {".".join(i.split("-")[1:]) for i in self.tags if i.startswith("ip-")}
1281
1281
 
1282
1282
  @property
1283
1283
  def pretty_string(self):
@@ -1665,7 +1665,7 @@ def make_event(
1665
1665
  event.parent = parent
1666
1666
  if context is not None:
1667
1667
  event.discovery_context = context
1668
- if internal == True:
1668
+ if internal is True:
1669
1669
  event.internal = True
1670
1670
  if tags:
1671
1671
  event.tags = tags.union(event.tags)
@@ -269,11 +269,11 @@ def _prepare_command_kwargs(self, command, kwargs):
269
269
  (['sudo', '-E', '-A', 'LD_LIBRARY_PATH=...', 'PATH=...', 'ls', '-l'], {'limit': 104857600, 'stdout': -1, 'stderr': -1, 'env': environ(...)})
270
270
  """
271
271
  # limit = 100MB (this is needed for cases like httpx that are sending large JSON blobs over stdout)
272
- if not "limit" in kwargs:
272
+ if "limit" not in kwargs:
273
273
  kwargs["limit"] = 1024 * 1024 * 100
274
- if not "stdout" in kwargs:
274
+ if "stdout" not in kwargs:
275
275
  kwargs["stdout"] = asyncio.subprocess.PIPE
276
- if not "stderr" in kwargs:
276
+ if "stderr" not in kwargs:
277
277
  kwargs["stderr"] = asyncio.subprocess.PIPE
278
278
  sudo = kwargs.pop("sudo", False)
279
279
 
@@ -286,7 +286,7 @@ def _prepare_command_kwargs(self, command, kwargs):
286
286
 
287
287
  # use full path of binary, if not already specified
288
288
  binary = command[0]
289
- if not "/" in binary:
289
+ if "/" not in binary:
290
290
  binary_full_path = which(binary)
291
291
  if binary_full_path is None:
292
292
  raise SubprocessError(f'Command "{binary}" was not found')
@@ -97,11 +97,11 @@ class DepsInstaller:
97
97
  or self.deps_behavior == "force_install"
98
98
  ):
99
99
  if not notified:
100
- log.hugeinfo(f"Installing module dependencies. Please be patient, this may take a while.")
100
+ log.hugeinfo("Installing module dependencies. Please be patient, this may take a while.")
101
101
  notified = True
102
102
  log.verbose(f'Installing dependencies for module "{m}"')
103
103
  # get sudo access if we need it
104
- if preloaded.get("sudo", False) == True:
104
+ if preloaded.get("sudo", False) is True:
105
105
  self.ensure_root(f'Module "{m}" needs root privileges to install its dependencies.')
106
106
  success = await self.install_module(m)
107
107
  self.setup_status[module_hash] = success
@@ -159,7 +159,7 @@ class DepsInstaller:
159
159
  deps_common = preloaded["deps"]["common"]
160
160
  if deps_common:
161
161
  for dep_common in deps_common:
162
- if self.setup_status.get(dep_common, False) == True:
162
+ if self.setup_status.get(dep_common, False) is True:
163
163
  log.debug(
164
164
  f'Skipping installation of dependency "{dep_common}" for module "{module}" since it is already installed'
165
165
  )
@@ -244,7 +244,7 @@ class DepsInstaller:
244
244
  if success:
245
245
  log.info(f"Successfully ran {len(commands):,} shell commands")
246
246
  else:
247
- log.warning(f"Failed to run shell dependencies")
247
+ log.warning("Failed to run shell dependencies")
248
248
  return success
249
249
 
250
250
  def tasks(self, module, tasks):
@@ -310,7 +310,7 @@ class DepsInstaller:
310
310
  return success, err
311
311
 
312
312
  def read_setup_status(self):
313
- setup_status = dict()
313
+ setup_status = {}
314
314
  if self.setup_status_cache.is_file():
315
315
  with open(self.setup_status_cache) as f:
316
316
  with suppress(Exception):
@@ -101,7 +101,7 @@ class HttpCompare:
101
101
  ddiff = DeepDiff(baseline_1_json, baseline_2_json, ignore_order=True, view="tree")
102
102
  self.ddiff_filters = []
103
103
 
104
- for k, v in ddiff.items():
104
+ for k in ddiff.keys():
105
105
  for x in list(ddiff[k]):
106
106
  log.debug(f"Added {k} filter for path: {x.path()}")
107
107
  self.ddiff_filters.append(x.path())
@@ -140,7 +140,7 @@ class HttpCompare:
140
140
 
141
141
  ddiff = DeepDiff(headers_1, headers_2, ignore_order=True, view="tree")
142
142
 
143
- for k, v in ddiff.items():
143
+ for k in ddiff.keys():
144
144
  for x in list(ddiff[k]):
145
145
  try:
146
146
  header_value = str(x).split("'")[1]
@@ -183,7 +183,7 @@ class HttpCompare:
183
183
 
184
184
  await self._baseline()
185
185
 
186
- if timeout == None:
186
+ if timeout is None:
187
187
  timeout = self.timeout
188
188
 
189
189
  reflection = False
@@ -238,11 +238,11 @@ class HttpCompare:
238
238
 
239
239
  different_headers = self.compare_headers(self.baseline.headers, subject_response.headers)
240
240
  if different_headers:
241
- log.debug(f"headers were different, no match")
241
+ log.debug("headers were different, no match")
242
242
  diff_reasons.append("header")
243
243
 
244
- if self.compare_body(self.baseline_json, subject_json) == False:
245
- log.debug(f"difference in HTML body, no match")
244
+ if self.compare_body(self.baseline_json, subject_json) is False:
245
+ log.debug("difference in HTML body, no match")
246
246
 
247
247
  diff_reasons.append("body")
248
248
 
@@ -275,6 +275,6 @@ class HttpCompare:
275
275
  )
276
276
 
277
277
  # if a nonsense header "caused" a difference, we need to abort. We also need to abort if our canary was reflected
278
- if match == False or reflection == True:
278
+ if match is False or reflection is True:
279
279
  return False
280
280
  return True
@@ -164,7 +164,7 @@ class DNSBrute:
164
164
  for i in range(0, max(0, n - 5)):
165
165
  d = delimiters[i % len(delimiters)]
166
166
  l = lengths[i % len(lengths)]
167
- segments = list(random.choice(self.devops_mutations) for _ in range(l))
167
+ segments = [random.choice(self.devops_mutations) for _ in range(l)]
168
168
  segments.append(self.parent_helper.rand_string(length=8, digits=False))
169
169
  subdomain = d.join(segments)
170
170
  yield subdomain
@@ -178,7 +178,7 @@ class DNSHelper(EngineClient):
178
178
 
179
179
  host = clean_dns_record(host)
180
180
  # skip check if it's an IP or a plain hostname
181
- if is_ip(host) or not "." in host:
181
+ if is_ip(host) or "." not in host:
182
182
  return False
183
183
 
184
184
  # skip if query isn't a dns name
@@ -54,7 +54,7 @@ class DNSEngine(EngineServer):
54
54
  dns_omit_queries = self.dns_config.get("omit_queries", None)
55
55
  if not dns_omit_queries:
56
56
  dns_omit_queries = []
57
- self.dns_omit_queries = dict()
57
+ self.dns_omit_queries = {}
58
58
  for d in dns_omit_queries:
59
59
  d = d.split(":")
60
60
  if len(d) == 2:
@@ -72,7 +72,7 @@ class DNSEngine(EngineServer):
72
72
  self.wildcard_ignore = []
73
73
  self.wildcard_ignore = tuple([str(d).strip().lower() for d in self.wildcard_ignore])
74
74
  self.wildcard_tests = self.dns_config.get("wildcard_tests", 5)
75
- self._wildcard_cache = dict()
75
+ self._wildcard_cache = {}
76
76
  # since wildcard detection takes some time, This is to prevent multiple
77
77
  # modules from kicking off wildcard detection for the same domain at the same time
78
78
  self._wildcard_lock = NamedLock()
@@ -82,7 +82,7 @@ class DNSEngine(EngineServer):
82
82
  self._last_connectivity_warning = time.time()
83
83
  # keeps track of warnings issued for wildcard detection to prevent duplicate warnings
84
84
  self._dns_warnings = set()
85
- self._errors = dict()
85
+ self._errors = {}
86
86
  self._debug = self.dns_config.get("debug", False)
87
87
  self._dns_cache = LRUCache(maxsize=10000)
88
88
 
@@ -638,7 +638,7 @@ class DNSEngine(EngineServer):
638
638
  self._last_dns_success = time.time()
639
639
  return True
640
640
  if time.time() - self._last_connectivity_warning > interval:
641
- self.log.warning(f"DNS queries are failing, please check your internet connection")
641
+ self.log.warning("DNS queries are failing, please check your internet connection")
642
642
  self._last_connectivity_warning = time.time()
643
643
  self._errors.clear()
644
644
  return False
@@ -83,7 +83,7 @@ def _feed_pipe(self, pipe, content, text=True):
83
83
  for c in content:
84
84
  p.write(decode_fn(c) + newline)
85
85
  except BrokenPipeError:
86
- log.debug(f"Broken pipe in _feed_pipe()")
86
+ log.debug("Broken pipe in _feed_pipe()")
87
87
  except ValueError:
88
88
  log.debug(f"Error _feed_pipe(): {traceback.format_exc()}")
89
89
  except KeyboardInterrupt:
@@ -153,7 +153,9 @@ class ConfigAwareHelper:
153
153
  return self.temp_dir / filename
154
154
 
155
155
  def clean_old_scans(self):
156
- _filter = lambda x: x.is_dir() and self.regexes.scan_name_regex.match(x.name)
156
+ def _filter(x):
157
+ return x.is_dir() and self.regexes.scan_name_regex.match(x.name)
158
+
157
159
  self.clean_old(self.scans_dir, keep=self.keep_old_scans, filter=_filter)
158
160
 
159
161
  def make_target(self, *targets, **kwargs):
@@ -155,7 +155,7 @@ class Interactsh:
155
155
  break
156
156
 
157
157
  if not self.server:
158
- raise InteractshError(f"Failed to register with an interactsh server")
158
+ raise InteractshError("Failed to register with an interactsh server")
159
159
 
160
160
  log.info(
161
161
  f"Successfully registered to interactsh server {self.server} with correlation_id {self.correlation_id} [{self.domain}]"
@@ -181,7 +181,7 @@ class Interactsh:
181
181
  >>> await interactsh_client.deregister()
182
182
  """
183
183
  if not self.server or not self.correlation_id or not self.secret:
184
- raise InteractshError(f"Missing required information to deregister")
184
+ raise InteractshError("Missing required information to deregister")
185
185
 
186
186
  headers = {}
187
187
  if self.token:
@@ -226,7 +226,7 @@ class Interactsh:
226
226
  ]
227
227
  """
228
228
  if not self.server or not self.correlation_id or not self.secret:
229
- raise InteractshError(f"Missing required information to poll")
229
+ raise InteractshError("Missing required information to poll")
230
230
 
231
231
  headers = {}
232
232
  if self.token:
@@ -391,7 +391,7 @@ def url_parents(u):
391
391
  parent_list = []
392
392
  while 1:
393
393
  parent = parent_url(u)
394
- if parent == None:
394
+ if parent is None:
395
395
  return parent_list
396
396
  elif parent not in parent_list:
397
397
  parent_list.append(parent)
@@ -512,7 +512,7 @@ def domain_stem(domain):
512
512
  - Utilizes the `tldextract` function for domain parsing.
513
513
  """
514
514
  parsed = tldextract(str(domain))
515
- return f".".join(parsed.subdomain.split(".") + parsed.domain.split(".")).strip(".")
515
+ return ".".join(parsed.subdomain.split(".") + parsed.domain.split(".")).strip(".")
516
516
 
517
517
 
518
518
  def ip_network_parents(i, include_self=False):
@@ -921,12 +921,12 @@ def extract_params_xml(xml_data, compare_mode="getparam"):
921
921
 
922
922
  # Define valid characters for each mode based on RFCs
923
923
  valid_chars_dict = {
924
- "header": set(
924
+ "header": {
925
925
  chr(c) for c in range(33, 127) if chr(c) in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_"
926
- ),
927
- "getparam": set(chr(c) for c in range(33, 127) if chr(c) not in ":/?#[]@!$&'()*+,;="),
928
- "postparam": set(chr(c) for c in range(33, 127) if chr(c) not in ":/?#[]@!$&'()*+,;="),
929
- "cookie": set(chr(c) for c in range(33, 127) if chr(c) not in '()<>@,;:"/[]?={} \t'),
926
+ },
927
+ "getparam": {chr(c) for c in range(33, 127) if chr(c) not in ":/?#[]@!$&'()*+,;="},
928
+ "postparam": {chr(c) for c in range(33, 127) if chr(c) not in ":/?#[]@!$&'()*+,;="},
929
+ "cookie": {chr(c) for c in range(33, 127) if chr(c) not in '()<>@,;:"/[]?={} \t'},
930
930
  }
931
931
 
932
932
 
@@ -1148,7 +1148,7 @@ def chain_lists(
1148
1148
  """
1149
1149
  if isinstance(l, str):
1150
1150
  l = [l]
1151
- final_list = dict()
1151
+ final_list = {}
1152
1152
  for entry in l:
1153
1153
  for s in split_regex.split(entry):
1154
1154
  f = s.strip()
@@ -1345,7 +1345,7 @@ def search_dict_by_key(key, d):
1345
1345
  if isinstance(d, dict):
1346
1346
  if key in d:
1347
1347
  yield d[key]
1348
- for k, v in d.items():
1348
+ for v in d.values():
1349
1349
  yield from search_dict_by_key(key, v)
1350
1350
  elif isinstance(d, list):
1351
1351
  for v in d:
@@ -1412,7 +1412,7 @@ def search_dict_values(d, *regexes):
1412
1412
  results.add(h)
1413
1413
  yield result
1414
1414
  elif isinstance(d, dict):
1415
- for _, v in d.items():
1415
+ for v in d.values():
1416
1416
  yield from search_dict_values(v, *regexes)
1417
1417
  elif isinstance(d, list):
1418
1418
  for v in d:
@@ -2397,7 +2397,7 @@ def in_exception_chain(e, exc_types):
2397
2397
  ... if not in_exception_chain(e, (KeyboardInterrupt, asyncio.CancelledError)):
2398
2398
  ... raise
2399
2399
  """
2400
- return any([isinstance(_, exc_types) for _ in get_exception_chain(e)])
2400
+ return any(isinstance(_, exc_types) for _ in get_exception_chain(e))
2401
2401
 
2402
2402
 
2403
2403
  def get_traceback_details(e):
@@ -41,7 +41,7 @@ class RegexHelper:
41
41
  """
42
42
  if not isinstance(compiled_regexes, dict):
43
43
  raise ValueError('compiled_regexes must be a dictionary like this: {"regex_name": <compiled_regex>}')
44
- for k, v in compiled_regexes.items():
44
+ for v in compiled_regexes.values():
45
45
  self.ensure_compiled_regex(v)
46
46
 
47
47
  tasks = {}
@@ -36,7 +36,7 @@ _ip_range_regexes = (
36
36
  _ipv4_regex + r"\/[0-9]{1,2}",
37
37
  _ipv6_regex + r"\/[0-9]{1,3}",
38
38
  )
39
- ip_range_regexes = list(re.compile(r, re.I) for r in _ip_range_regexes)
39
+ ip_range_regexes = [re.compile(r, re.I) for r in _ip_range_regexes]
40
40
 
41
41
  # dns names with periods
42
42
  _dns_name_regex = r"(?:\w(?:[\w-]{0,100}\w)?\.)+(?:[xX][nN]--)?[^\W_]{1,63}\.?"
@@ -64,14 +64,14 @@ _open_port_regexes = (
64
64
  _hostname_regex + r":[0-9]{1,5}",
65
65
  r"\[" + _ipv6_regex + r"\]:[0-9]{1,5}",
66
66
  )
67
- open_port_regexes = list(re.compile(r, re.I) for r in _open_port_regexes)
67
+ open_port_regexes = [re.compile(r, re.I) for r in _open_port_regexes]
68
68
 
69
69
  _url_regexes = (
70
70
  r"https?://" + _dns_name_regex + r"(?::[0-9]{1,5})?(?:(?:/|\?).*)?",
71
71
  r"https?://" + _hostname_regex + r"(?::[0-9]{1,5})?(?:(?:/|\?).*)?",
72
72
  r"https?://\[" + _ipv6_regex + r"\](?::[0-9]{1,5})?(?:(?:/|\?).*)?",
73
73
  )
74
- url_regexes = list(re.compile(r, re.I) for r in _url_regexes)
74
+ url_regexes = [re.compile(r, re.I) for r in _url_regexes]
75
75
 
76
76
  _double_slash_regex = r"/{2,}"
77
77
  double_slash_regex = re.compile(_double_slash_regex)
@@ -132,7 +132,7 @@ def validate_host(host: Union[str, ipaddress.IPv4Address, ipaddress.IPv6Address]
132
132
  @validator
133
133
  def validate_severity(severity: str):
134
134
  severity = str(severity).strip().upper()
135
- if not severity in ("UNKNOWN", "INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"):
135
+ if severity not in ("UNKNOWN", "INFO", "LOW", "MEDIUM", "HIGH", "CRITICAL"):
136
136
  raise ValueError(f"Invalid severity: {severity}")
137
137
  return severity
138
138
 
@@ -56,7 +56,7 @@ class BBOTAsyncClient(httpx.AsyncClient):
56
56
 
57
57
  # timeout
58
58
  http_timeout = self._web_config.get("http_timeout", 20)
59
- if not "timeout" in kwargs:
59
+ if "timeout" not in kwargs:
60
60
  kwargs["timeout"] = http_timeout
61
61
 
62
62
  # headers
@@ -137,7 +137,7 @@ class HTTPEngine(EngineServer):
137
137
  if max_size is not None:
138
138
  max_size = human_to_bytes(max_size)
139
139
  kwargs["follow_redirects"] = follow_redirects
140
- if not "method" in kwargs:
140
+ if "method" not in kwargs:
141
141
  kwargs["method"] = "GET"
142
142
  try:
143
143
  total_size = 0
@@ -261,7 +261,7 @@ class WebHelper(EngineClient):
261
261
  """
262
262
  if not path:
263
263
  raise WordlistError(f"Invalid wordlist: {path}")
264
- if not "cache_hrs" in kwargs:
264
+ if "cache_hrs" not in kwargs:
265
265
  kwargs["cache_hrs"] = 720
266
266
  if self.parent_helper.is_url(path):
267
267
  filename = await self.download(str(path), **kwargs)
@@ -350,7 +350,7 @@ class WebHelper(EngineClient):
350
350
  headers[hk] = hv
351
351
 
352
352
  # add the timeout
353
- if not "timeout" in kwargs:
353
+ if "timeout" not in kwargs:
354
354
  timeout = http_timeout
355
355
 
356
356
  curl_command.append("-m")
@@ -111,7 +111,7 @@ class WordCloud(dict):
111
111
  results = set()
112
112
  for word in words:
113
113
  h = hash(word)
114
- if not h in results:
114
+ if h not in results:
115
115
  results.add(h)
116
116
  yield (word,)
117
117
  if numbers > 0:
@@ -119,7 +119,7 @@ class WordCloud(dict):
119
119
  for word in words:
120
120
  for number_mutation in self.get_number_mutations(word, n=numbers, padding=number_padding):
121
121
  h = hash(number_mutation)
122
- if not h in results:
122
+ if h not in results:
123
123
  results.add(h)
124
124
  yield (number_mutation,)
125
125
  for word in words:
@@ -322,7 +322,7 @@ class WordCloud(dict):
322
322
 
323
323
  @property
324
324
  def default_filename(self):
325
- return self.parent_helper.preset.scan.home / f"wordcloud.tsv"
325
+ return self.parent_helper.preset.scan.home / "wordcloud.tsv"
326
326
 
327
327
  def save(self, filename=None, limit=None):
328
328
  """
@@ -357,7 +357,7 @@ class WordCloud(dict):
357
357
  log.debug(f"Saved word cloud ({len(self):,} words) to {filename}")
358
358
  return True, filename
359
359
  else:
360
- log.debug(f"No words to save")
360
+ log.debug("No words to save")
361
361
  except Exception as e:
362
362
  import traceback
363
363
 
@@ -421,7 +421,7 @@ class Mutator(dict):
421
421
  def mutate(self, word, max_mutations=None, mutations=None):
422
422
  if mutations is None:
423
423
  mutations = self.top_mutations(max_mutations)
424
- for mutation, count in mutations.items():
424
+ for mutation in mutations.keys():
425
425
  ret = []
426
426
  for s in mutation:
427
427
  if s is not None: