bbot 2.3.0.5370rc0__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.5370rc0 → bbot-2.3.0.5382rc0}/PKG-INFO +2 -2
  2. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/README.md +1 -1
  3. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/__init__.py +1 -1
  4. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/cli.py +2 -6
  5. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/config/files.py +0 -1
  6. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/config/logger.py +1 -1
  7. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/core.py +1 -1
  8. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/event/base.py +13 -16
  9. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/command.py +4 -4
  10. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/depsinstaller/installer.py +5 -5
  11. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/diff.py +7 -7
  12. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/brute.py +1 -1
  13. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/dns.py +1 -2
  14. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/engine.py +4 -6
  15. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/mock.py +0 -1
  16. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/files.py +1 -1
  17. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/helper.py +3 -1
  18. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/interactsh.py +3 -3
  19. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/libmagic.py +0 -1
  20. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/misc.py +11 -11
  21. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/process.py +0 -2
  22. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/regex.py +1 -1
  23. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/regexes.py +3 -3
  24. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/validators.py +1 -2
  25. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/client.py +1 -1
  26. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/engine.py +1 -2
  27. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/web.py +2 -3
  28. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/wordcloud.py +5 -5
  29. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/modules.py +21 -22
  30. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/db/sql/models.py +0 -1
  31. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/azure_tenant.py +2 -2
  32. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/baddns.py +0 -2
  33. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/baddns_direct.py +0 -1
  34. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/base.py +16 -16
  35. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bypass403.py +5 -5
  36. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/c99.py +1 -1
  37. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/columbus.py +1 -1
  38. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/ffuf.py +8 -8
  39. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/nuclei.py +1 -1
  40. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/vhost.py +3 -3
  41. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsbimi.py +1 -1
  42. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsdumpster.py +2 -2
  43. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dockerhub.py +1 -1
  44. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dotnetnuke.py +0 -2
  45. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/extractous.py +1 -1
  46. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/filedownload.py +1 -1
  47. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/generic_ssrf.py +3 -3
  48. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/github_workflows.py +1 -1
  49. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/gowitness.py +7 -7
  50. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/host_header.py +5 -5
  51. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/httpx.py +1 -1
  52. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/iis_shortnames.py +6 -6
  53. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/cloudcheck.py +5 -5
  54. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/dnsresolve.py +7 -7
  55. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/excavate.py +23 -26
  56. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/speculate.py +4 -4
  57. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ipneighbor.py +1 -1
  58. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/jadx.py +1 -1
  59. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/newsletters.py +2 -2
  60. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/asset_inventory.py +6 -6
  61. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/base.py +1 -1
  62. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/csv.py +1 -1
  63. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/stdout.py +2 -2
  64. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/paramminer_headers.py +4 -7
  65. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/portscan.py +3 -3
  66. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/report/asn.py +11 -11
  67. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/robots.py +3 -3
  68. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/securitytxt.py +1 -1
  69. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/sitedossier.py +1 -1
  70. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/social.py +1 -1
  71. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/subdomainradar.py +1 -1
  72. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/telerik.py +7 -7
  73. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/bucket.py +1 -1
  74. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/github.py +1 -1
  75. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/shodan.py +1 -1
  76. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/subdomain_enum.py +1 -1
  77. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/webhook.py +1 -1
  78. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/trufflehog.py +2 -2
  79. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/url_manipulation.py +3 -3
  80. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/urlscan.py +1 -1
  81. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/viewdns.py +1 -1
  82. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wafw00f.py +1 -1
  83. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/args.py +10 -11
  84. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/environ.py +0 -1
  85. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/preset.py +9 -9
  86. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/scanner.py +17 -17
  87. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/target.py +1 -1
  88. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scripts/docs.py +1 -1
  89. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/bbot_fixtures.py +1 -1
  90. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/conftest.py +1 -1
  91. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/run_tests.sh +4 -4
  92. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +2 -2
  93. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_cli.py +56 -56
  94. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_dns.py +15 -15
  95. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_engine.py +17 -17
  96. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_events.py +22 -22
  97. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_helpers.py +26 -26
  98. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +306 -306
  99. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_modules_basic.py +52 -53
  100. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_presets.py +81 -81
  101. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_regexes.py +5 -5
  102. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_scan.py +4 -4
  103. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_target.py +25 -25
  104. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_web.py +5 -5
  105. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/base.py +6 -6
  106. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +1 -1
  107. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -1
  108. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +1 -1
  109. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +6 -6
  110. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +2 -4
  111. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +4 -4
  112. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +2 -2
  113. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +2 -2
  114. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +1 -1
  115. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +2 -2
  116. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +9 -9
  117. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_columbus.py +1 -1
  118. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +2 -2
  119. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +1 -1
  120. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +1 -1
  121. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +8 -9
  122. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -1
  123. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -1
  124. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +2 -2
  125. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -2
  126. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +10 -30
  127. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +9 -9
  128. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +14 -14
  129. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +2 -2
  130. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +4 -4
  131. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +1 -1
  132. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +4 -4
  133. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +7 -7
  134. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +2 -2
  135. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +1 -1
  136. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +1 -1
  137. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +6 -6
  138. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +7 -7
  139. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +1 -1
  140. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +1 -1
  141. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +1 -2
  142. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -6
  143. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +2 -9
  144. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +3 -4
  145. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +1 -1
  146. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +9 -9
  147. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +2 -2
  148. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +1 -1
  149. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -6
  150. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +4 -4
  151. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +1 -1
  152. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +1 -1
  153. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +2 -2
  154. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +1 -1
  155. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/pyproject.toml +5 -5
  156. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/LICENSE +0 -0
  157. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/__init__.py +0 -0
  158. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/config/__init__.py +0 -0
  159. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/engine.py +0 -0
  160. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/event/__init__.py +0 -0
  161. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/event/helpers.py +0 -0
  162. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/flags.py +0 -0
  163. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/__init__.py +0 -0
  164. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/async_helpers.py +0 -0
  165. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/bloom.py +0 -0
  166. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/cache.py +0 -0
  167. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
  168. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
  169. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/__init__.py +0 -0
  170. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/dns/helpers.py +0 -0
  171. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/names_generator.py +0 -0
  172. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/ntlm.py +0 -0
  173. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/ratelimiter.py +0 -0
  174. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/url.py +0 -0
  175. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/__init__.py +0 -0
  176. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
  177. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/multiprocess.py +0 -0
  178. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/core/shared_deps.py +0 -0
  179. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/defaults.yml +0 -0
  180. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/errors.py +0 -0
  181. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/logger.py +0 -0
  182. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/__init__.py +0 -0
  183. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ajaxpro.py +0 -0
  184. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/anubisdb.py +0 -0
  185. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/apkpure.py +0 -0
  186. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/azure_realm.py +0 -0
  187. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/baddns_zone.py +0 -0
  188. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/badsecrets.py +0 -0
  189. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bevigil.py +0 -0
  190. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/binaryedge.py +0 -0
  191. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_amazon.py +0 -0
  192. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_azure.py +0 -0
  193. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_digitalocean.py +0 -0
  194. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_file_enum.py +0 -0
  195. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_firebase.py +0 -0
  196. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bucket_google.py +0 -0
  197. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/bufferoverrun.py +0 -0
  198. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/builtwith.py +0 -0
  199. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/censys.py +0 -0
  200. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/certspotter.py +0 -0
  201. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/chaos.py +0 -0
  202. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/code_repository.py +0 -0
  203. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/credshed.py +0 -0
  204. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/crt.py +0 -0
  205. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/deadly/dastardly.py +0 -0
  206. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dehashed.py +0 -0
  207. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/digitorus.py +0 -0
  208. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsbrute.py +0 -0
  209. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
  210. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnscaa.py +0 -0
  211. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnscommonsrv.py +0 -0
  212. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/dnstlsrpt.py +0 -0
  213. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/docker_pull.py +0 -0
  214. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/emailformat.py +0 -0
  215. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ffuf_shortnames.py +0 -0
  216. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/fingerprintx.py +0 -0
  217. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/fullhunt.py +0 -0
  218. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/git.py +0 -0
  219. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/git_clone.py +0 -0
  220. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/github_codesearch.py +0 -0
  221. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/github_org.py +0 -0
  222. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/gitlab.py +0 -0
  223. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/google_playstore.py +0 -0
  224. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/hackertarget.py +0 -0
  225. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/hunt.py +0 -0
  226. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/hunterio.py +0 -0
  227. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/__init__.py +0 -0
  228. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/aggregate.py +0 -0
  229. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internal/base.py +0 -0
  230. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/internetdb.py +0 -0
  231. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ip2location.py +0 -0
  232. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ipstack.py +0 -0
  233. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/leakix.py +0 -0
  234. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/myssl.py +0 -0
  235. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/ntlm.py +0 -0
  236. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/oauth.py +0 -0
  237. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/otx.py +0 -0
  238. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/__init__.py +0 -0
  239. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/discord.py +0 -0
  240. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/emails.py +0 -0
  241. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/http.py +0 -0
  242. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/json.py +0 -0
  243. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/mysql.py +0 -0
  244. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/neo4j.py +0 -0
  245. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/postgres.py +0 -0
  246. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/python.py +0 -0
  247. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/slack.py +0 -0
  248. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/splunk.py +0 -0
  249. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/sqlite.py +0 -0
  250. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/subdomains.py +0 -0
  251. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/teams.py +0 -0
  252. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/txt.py +0 -0
  253. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/web_report.py +0 -0
  254. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/output/websocket.py +0 -0
  255. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/paramminer_cookies.py +0 -0
  256. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/paramminer_getparams.py +0 -0
  257. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/passivetotal.py +0 -0
  258. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/pgp.py +0 -0
  259. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/postman.py +0 -0
  260. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/postman_download.py +0 -0
  261. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/rapiddns.py +0 -0
  262. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/report/affiliates.py +0 -0
  263. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/report/base.py +0 -0
  264. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/secretsdb.py +0 -0
  265. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/securitytrails.py +0 -0
  266. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/shodan_dns.py +0 -0
  267. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/skymem.py +0 -0
  268. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/smuggler.py +0 -0
  269. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/sslcert.py +0 -0
  270. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/subdomaincenter.py +0 -0
  271. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/postman.py +0 -0
  272. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/templates/sql.py +0 -0
  273. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/trickest.py +0 -0
  274. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/virustotal.py +0 -0
  275. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wappalyzer.py +0 -0
  276. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wayback.py +0 -0
  277. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/wpscan.py +0 -0
  278. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/modules/zoomeye.py +0 -0
  279. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/baddns-thorough.yml +0 -0
  280. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/cloud-enum.yml +0 -0
  281. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/code-enum.yml +0 -0
  282. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/email-enum.yml +0 -0
  283. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/fast.yml +0 -0
  284. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/kitchen-sink.yml +0 -0
  285. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/spider.yml +0 -0
  286. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/subdomain-enum.yml +0 -0
  287. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
  288. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/dirbust-light.yml +0 -0
  289. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
  290. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
  291. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web/paramminer.yml +0 -0
  292. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web-basic.yml +0 -0
  293. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web-screenshots.yml +0 -0
  294. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/presets/web-thorough.yml +0 -0
  295. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/__init__.py +0 -0
  296. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/dispatcher.py +0 -0
  297. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/manager.py +0 -0
  298. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/__init__.py +0 -0
  299. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/conditions.py +0 -0
  300. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/preset/path.py +0 -0
  301. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/scanner/stats.py +0 -0
  302. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/__init__.py +0 -0
  303. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/coverage.cfg +0 -0
  304. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/fastapi_test.py +0 -0
  305. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/owasp_mastg.apk +0 -0
  306. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test.conf +0 -0
  307. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_output.ndjson +0 -0
  308. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/__init__.py +0 -0
  309. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
  310. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
  311. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_command.py +0 -0
  312. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_config.py +0 -0
  313. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
  314. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_docs.py +0 -0
  315. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_files.py +0 -0
  316. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
  317. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
  318. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_1/test_scope.py +0 -0
  319. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/__init__.py +0 -0
  320. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
  321. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
  322. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
  323. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
  324. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
  325. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
  326. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
  327. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
  328. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
  329. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
  330. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
  331. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
  332. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
  333. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
  334. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
  335. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
  336. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
  337. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
  338. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
  339. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
  340. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
  341. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
  342. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
  343. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
  344. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
  345. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
  346. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
  347. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
  348. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
  349. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
  350. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
  351. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
  352. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
  353. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
  354. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
  355. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
  356. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
  357. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
  358. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
  359. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
  360. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
  361. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
  362. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
  363. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
  364. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
  365. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
  366. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
  367. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_internetdb.py +0 -0
  368. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
  369. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
  370. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
  371. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
  372. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
  373. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
  374. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
  375. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
  376. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
  377. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
  378. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
  379. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
  380. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
  381. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_secretsdb.py +0 -0
  382. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
  383. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
  384. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
  385. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
  386. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
  387. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
  388. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
  389. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
  390. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
  391. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
  392. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
  393. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
  394. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
  395. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
  396. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
  397. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
  398. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
  399. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
  400. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
  401. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
  402. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
  403. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
  404. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
  405. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
  406. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
  407. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
  408. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
  409. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/testsslcert.pem +0 -0
  410. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/test/testsslkey.pem +0 -0
  411. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/devops_mutations.txt +0 -0
  412. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/ffuf_shortname_candidates.txt +0 -0
  413. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
  414. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/nameservers.txt +0 -0
  415. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
  416. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
  417. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
  418. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
  419. {bbot-2.3.0.5370rc0 → bbot-2.3.0.5382rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
  420. {bbot-2.3.0.5370rc0 → 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.5370rc0
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.5370rc"
2
+ __version__ = "v2.3.0.5382rc"
3
3
 
4
4
  from .scanner import Scanner, Preset
@@ -29,7 +29,6 @@ scan_name = ""
29
29
 
30
30
 
31
31
  async def _main():
32
-
33
32
  import asyncio
34
33
  import traceback
35
34
  from contextlib import suppress
@@ -45,7 +44,6 @@ async def _main():
45
44
  global scan_name
46
45
 
47
46
  try:
48
-
49
47
  # start by creating a default scan preset
50
48
  preset = Preset(_log=True, name="bbot_cli_main")
51
49
  # parse command line arguments and merge into preset
@@ -81,7 +79,6 @@ async def _main():
81
79
 
82
80
  # if we're listing modules or their options
83
81
  if options.list_modules or options.list_module_options:
84
-
85
82
  # if no modules or flags are specified, enable everything
86
83
  if not (options.modules or options.output_modules or options.flags):
87
84
  for module, preloaded in preset.module_loader.preloaded().items():
@@ -133,8 +130,8 @@ async def _main():
133
130
  ]
134
131
  if deadly_modules and not options.allow_deadly:
135
132
  log.hugewarning(f"You enabled the following deadly modules: {','.join(deadly_modules)}")
136
- log.hugewarning(f"Deadly modules are highly intrusive")
137
- 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")
138
135
  return False
139
136
 
140
137
  # --current-preset
@@ -172,7 +169,6 @@ async def _main():
172
169
  log.trace(f"Command: {' '.join(sys.argv)}")
173
170
 
174
171
  if sys.stdin.isatty():
175
-
176
172
  # warn if any targets belong directly to a cloud provider
177
173
  for event in scan.target.seeds.events:
178
174
  if event.type == "DNS_NAME":
@@ -10,7 +10,6 @@ bbot_code_dir = Path(__file__).parent.parent.parent
10
10
 
11
11
 
12
12
  class BBOTConfigFiles:
13
-
14
13
  config_dir = (Path.home() / ".config" / "bbot").resolve()
15
14
  defaults_filename = (bbot_code_dir / "defaults.yml").resolve()
16
15
  config_filename = (config_dir / "bbot.yml").resolve()
@@ -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
@@ -1180,7 +1180,6 @@ class URL_UNVERIFIED(BaseEvent):
1180
1180
  self.num_redirects = getattr(self.parent, "num_redirects", 0)
1181
1181
 
1182
1182
  def _data_id(self):
1183
-
1184
1183
  data = super()._data_id()
1185
1184
 
1186
1185
  # remove the querystring for URL/URL_UNVERIFIED events, because we will conditionally add it back in (based on settings)
@@ -1228,7 +1227,7 @@ class URL_UNVERIFIED(BaseEvent):
1228
1227
 
1229
1228
  def add_tag(self, tag):
1230
1229
  host_same_as_parent = self.parent and self.host == self.parent.host
1231
- 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:
1232
1231
  # increment the web spider distance
1233
1232
  if self.type == "URL_UNVERIFIED":
1234
1233
  self.web_spider_distance += 1
@@ -1250,7 +1249,7 @@ class URL_UNVERIFIED(BaseEvent):
1250
1249
 
1251
1250
  def _words(self):
1252
1251
  first_elem = self.parsed_url.path.lstrip("/").split("/")[0]
1253
- if not "." in first_elem:
1252
+ if "." not in first_elem:
1254
1253
  return extract_words(first_elem)
1255
1254
  return set()
1256
1255
 
@@ -1267,7 +1266,6 @@ class URL_UNVERIFIED(BaseEvent):
1267
1266
 
1268
1267
 
1269
1268
  class URL(URL_UNVERIFIED):
1270
-
1271
1269
  def __init__(self, *args, **kwargs):
1272
1270
  super().__init__(*args, **kwargs)
1273
1271
 
@@ -1279,7 +1277,7 @@ class URL(URL_UNVERIFIED):
1279
1277
  @property
1280
1278
  def resolved_hosts(self):
1281
1279
  # TODO: remove this when we rip out httpx
1282
- 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-")}
1283
1281
 
1284
1282
  @property
1285
1283
  def pretty_string(self):
@@ -1309,7 +1307,6 @@ class URL_HINT(URL_UNVERIFIED):
1309
1307
 
1310
1308
 
1311
1309
  class WEB_PARAMETER(DictHostEvent):
1312
-
1313
1310
  def _data_id(self):
1314
1311
  # dedupe by url:name:param_type
1315
1312
  url = self.data.get("url", "")
@@ -1668,7 +1665,7 @@ def make_event(
1668
1665
  event.parent = parent
1669
1666
  if context is not None:
1670
1667
  event.discovery_context = context
1671
- if internal == True:
1668
+ if internal is True:
1672
1669
  event.internal = True
1673
1670
  if tags:
1674
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
@@ -16,7 +16,6 @@ log = logging.getLogger("bbot.core.helpers.dns")
16
16
 
17
17
 
18
18
  class DNSHelper(EngineClient):
19
-
20
19
  SERVER_CLASS = DNSEngine
21
20
  ERROR_CLASS = DNSError
22
21
 
@@ -179,7 +178,7 @@ class DNSHelper(EngineClient):
179
178
 
180
179
  host = clean_dns_record(host)
181
180
  # skip check if it's an IP or a plain hostname
182
- if is_ip(host) or not "." in host:
181
+ if is_ip(host) or "." not in host:
183
182
  return False
184
183
 
185
184
  # skip if query isn't a dns name
@@ -24,7 +24,6 @@ all_rdtypes = ["A", "AAAA", "SRV", "MX", "NS", "SOA", "CNAME", "TXT"]
24
24
 
25
25
 
26
26
  class DNSEngine(EngineServer):
27
-
28
27
  CMDS = {
29
28
  0: "resolve",
30
29
  1: "resolve_raw",
@@ -55,7 +54,7 @@ class DNSEngine(EngineServer):
55
54
  dns_omit_queries = self.dns_config.get("omit_queries", None)
56
55
  if not dns_omit_queries:
57
56
  dns_omit_queries = []
58
- self.dns_omit_queries = dict()
57
+ self.dns_omit_queries = {}
59
58
  for d in dns_omit_queries:
60
59
  d = d.split(":")
61
60
  if len(d) == 2:
@@ -73,7 +72,7 @@ class DNSEngine(EngineServer):
73
72
  self.wildcard_ignore = []
74
73
  self.wildcard_ignore = tuple([str(d).strip().lower() for d in self.wildcard_ignore])
75
74
  self.wildcard_tests = self.dns_config.get("wildcard_tests", 5)
76
- self._wildcard_cache = dict()
75
+ self._wildcard_cache = {}
77
76
  # since wildcard detection takes some time, This is to prevent multiple
78
77
  # modules from kicking off wildcard detection for the same domain at the same time
79
78
  self._wildcard_lock = NamedLock()
@@ -83,7 +82,7 @@ class DNSEngine(EngineServer):
83
82
  self._last_connectivity_warning = time.time()
84
83
  # keeps track of warnings issued for wildcard detection to prevent duplicate warnings
85
84
  self._dns_warnings = set()
86
- self._errors = dict()
85
+ self._errors = {}
87
86
  self._debug = self.dns_config.get("debug", False)
88
87
  self._dns_cache = LRUCache(maxsize=10000)
89
88
 
@@ -476,7 +475,6 @@ class DNSEngine(EngineServer):
476
475
  # for every parent domain, starting with the shortest
477
476
  parents = list(domain_parents(query))
478
477
  for parent in parents[::-1]:
479
-
480
478
  # check if the parent domain is set up with wildcards
481
479
  wildcard_results = await self.is_wildcard_domain(parent, rdtypes_to_check)
482
480
 
@@ -640,7 +638,7 @@ class DNSEngine(EngineServer):
640
638
  self._last_dns_success = time.time()
641
639
  return True
642
640
  if time.time() - self._last_connectivity_warning > interval:
643
- 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")
644
642
  self._last_connectivity_warning = time.time()
645
643
  self._errors.clear()
646
644
  return False
@@ -5,7 +5,6 @@ log = logging.getLogger("bbot.core.helpers.dns.mock")
5
5
 
6
6
 
7
7
  class MockResolver:
8
-
9
8
  def __init__(self, mock_data=None, custom_lookup_fn=None):
10
9
  self.mock_data = mock_data if mock_data else {}
11
10
  self._custom_lookup_fn = custom_lookup_fn
@@ -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:
@@ -2,7 +2,6 @@ import puremagic
2
2
 
3
3
 
4
4
  def get_magic_info(file):
5
-
6
5
  magic_detections = puremagic.magic_file(file)
7
6
  if magic_detections:
8
7
  magic_detections.sort(key=lambda x: x.confidence, reverse=True)
@@ -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):
@@ -7,7 +7,6 @@ from .misc import in_exception_chain
7
7
 
8
8
 
9
9
  class BBOTThread(threading.Thread):
10
-
11
10
  default_name = "default bbot thread"
12
11
 
13
12
  def __init__(self, *args, **kwargs):
@@ -24,7 +23,6 @@ class BBOTThread(threading.Thread):
24
23
 
25
24
 
26
25
  class BBOTProcess(SpawnProcess):
27
-
28
26
  default_name = "bbot process pool"
29
27
 
30
28
  def __init__(self, *args, **kwargs):
@@ -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
 
@@ -299,7 +299,6 @@ def is_email(email):
299
299
 
300
300
 
301
301
  class Validators:
302
-
303
302
  def __init__(self, parent_helper):
304
303
  self.parent_helper = parent_helper
305
304
 
@@ -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