bbot 2.3.0.5376rc0__py3-none-any.whl → 2.3.0.5384rc0__py3-none-any.whl

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 (143) hide show
  1. bbot/__init__.py +1 -1
  2. bbot/cli.py +2 -2
  3. bbot/core/config/logger.py +1 -1
  4. bbot/core/core.py +1 -1
  5. bbot/core/event/base.py +13 -13
  6. bbot/core/helpers/command.py +4 -4
  7. bbot/core/helpers/depsinstaller/installer.py +5 -5
  8. bbot/core/helpers/diff.py +7 -7
  9. bbot/core/helpers/dns/brute.py +1 -1
  10. bbot/core/helpers/dns/dns.py +1 -1
  11. bbot/core/helpers/dns/engine.py +4 -4
  12. bbot/core/helpers/files.py +1 -1
  13. bbot/core/helpers/helper.py +3 -1
  14. bbot/core/helpers/interactsh.py +3 -3
  15. bbot/core/helpers/misc.py +11 -11
  16. bbot/core/helpers/regex.py +1 -1
  17. bbot/core/helpers/regexes.py +3 -3
  18. bbot/core/helpers/validators.py +1 -1
  19. bbot/core/helpers/web/client.py +1 -1
  20. bbot/core/helpers/web/engine.py +1 -1
  21. bbot/core/helpers/web/web.py +2 -2
  22. bbot/core/helpers/wordcloud.py +5 -5
  23. bbot/core/modules.py +21 -21
  24. bbot/modules/azure_tenant.py +2 -2
  25. bbot/modules/base.py +16 -16
  26. bbot/modules/bypass403.py +5 -5
  27. bbot/modules/c99.py +1 -1
  28. bbot/modules/columbus.py +1 -1
  29. bbot/modules/deadly/ffuf.py +8 -8
  30. bbot/modules/deadly/nuclei.py +1 -1
  31. bbot/modules/deadly/vhost.py +3 -3
  32. bbot/modules/dnsbimi.py +1 -1
  33. bbot/modules/dnsdumpster.py +2 -2
  34. bbot/modules/dockerhub.py +1 -1
  35. bbot/modules/extractous.py +1 -1
  36. bbot/modules/filedownload.py +1 -1
  37. bbot/modules/generic_ssrf.py +3 -3
  38. bbot/modules/github_workflows.py +1 -1
  39. bbot/modules/gowitness.py +7 -7
  40. bbot/modules/host_header.py +5 -5
  41. bbot/modules/httpx.py +1 -1
  42. bbot/modules/iis_shortnames.py +6 -6
  43. bbot/modules/internal/cloudcheck.py +5 -5
  44. bbot/modules/internal/dnsresolve.py +7 -7
  45. bbot/modules/internal/excavate.py +5 -5
  46. bbot/modules/internal/speculate.py +4 -4
  47. bbot/modules/ipneighbor.py +1 -1
  48. bbot/modules/jadx.py +1 -1
  49. bbot/modules/newsletters.py +2 -2
  50. bbot/modules/output/asset_inventory.py +6 -6
  51. bbot/modules/output/base.py +1 -1
  52. bbot/modules/output/csv.py +1 -1
  53. bbot/modules/output/stdout.py +2 -2
  54. bbot/modules/paramminer_headers.py +3 -3
  55. bbot/modules/portscan.py +3 -3
  56. bbot/modules/report/asn.py +11 -11
  57. bbot/modules/robots.py +3 -3
  58. bbot/modules/securitytxt.py +1 -1
  59. bbot/modules/sitedossier.py +1 -1
  60. bbot/modules/social.py +1 -1
  61. bbot/modules/subdomainradar.py +1 -1
  62. bbot/modules/telerik.py +7 -7
  63. bbot/modules/templates/bucket.py +1 -1
  64. bbot/modules/templates/github.py +1 -1
  65. bbot/modules/templates/shodan.py +1 -1
  66. bbot/modules/templates/subdomain_enum.py +1 -1
  67. bbot/modules/templates/webhook.py +1 -1
  68. bbot/modules/trufflehog.py +1 -1
  69. bbot/modules/url_manipulation.py +3 -3
  70. bbot/modules/urlscan.py +1 -1
  71. bbot/modules/viewdns.py +1 -1
  72. bbot/modules/wafw00f.py +1 -1
  73. bbot/scanner/preset/args.py +10 -10
  74. bbot/scanner/preset/preset.py +9 -9
  75. bbot/scanner/scanner.py +17 -17
  76. bbot/scanner/target.py +1 -1
  77. bbot/scripts/docs.py +1 -1
  78. bbot/test/bbot_fixtures.py +1 -1
  79. bbot/test/conftest.py +1 -1
  80. bbot/test/run_tests.sh +4 -4
  81. bbot/test/test_step_1/test_bbot_fastapi.py +2 -2
  82. bbot/test/test_step_1/test_cli.py +56 -56
  83. bbot/test/test_step_1/test_dns.py +15 -15
  84. bbot/test/test_step_1/test_engine.py +17 -17
  85. bbot/test/test_step_1/test_events.py +22 -22
  86. bbot/test/test_step_1/test_helpers.py +26 -26
  87. bbot/test/test_step_1/test_manager_scope_accuracy.py +306 -306
  88. bbot/test/test_step_1/test_modules_basic.py +52 -53
  89. bbot/test/test_step_1/test_presets.py +81 -81
  90. bbot/test/test_step_1/test_regexes.py +5 -5
  91. bbot/test/test_step_1/test_scan.py +4 -4
  92. bbot/test/test_step_1/test_target.py +25 -25
  93. bbot/test/test_step_1/test_web.py +5 -5
  94. bbot/test/test_step_2/module_tests/base.py +6 -6
  95. bbot/test/test_step_2/module_tests/test_module_anubisdb.py +1 -1
  96. bbot/test/test_step_2/module_tests/test_module_azure_realm.py +1 -1
  97. bbot/test/test_step_2/module_tests/test_module_baddns.py +6 -6
  98. bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +2 -4
  99. bbot/test/test_step_2/module_tests/test_module_bevigil.py +4 -4
  100. bbot/test/test_step_2/module_tests/test_module_binaryedge.py +2 -2
  101. bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +2 -2
  102. bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +1 -1
  103. bbot/test/test_step_2/module_tests/test_module_builtwith.py +2 -2
  104. bbot/test/test_step_2/module_tests/test_module_c99.py +9 -9
  105. bbot/test/test_step_2/module_tests/test_module_columbus.py +1 -1
  106. bbot/test/test_step_2/module_tests/test_module_credshed.py +2 -2
  107. bbot/test/test_step_2/module_tests/test_module_dehashed.py +1 -1
  108. bbot/test/test_step_2/module_tests/test_module_digitorus.py +1 -1
  109. bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +8 -8
  110. bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +2 -2
  111. bbot/test/test_step_2/module_tests/test_module_excavate.py +10 -10
  112. bbot/test/test_step_2/module_tests/test_module_extractous.py +9 -9
  113. bbot/test/test_step_2/module_tests/test_module_filedownload.py +14 -14
  114. bbot/test/test_step_2/module_tests/test_module_git_clone.py +2 -2
  115. bbot/test/test_step_2/module_tests/test_module_gowitness.py +4 -4
  116. bbot/test/test_step_2/module_tests/test_module_host_header.py +1 -1
  117. bbot/test/test_step_2/module_tests/test_module_http.py +4 -4
  118. bbot/test/test_step_2/module_tests/test_module_httpx.py +7 -7
  119. bbot/test/test_step_2/module_tests/test_module_leakix.py +2 -2
  120. bbot/test/test_step_2/module_tests/test_module_myssl.py +1 -1
  121. bbot/test/test_step_2/module_tests/test_module_neo4j.py +1 -1
  122. bbot/test/test_step_2/module_tests/test_module_newsletters.py +6 -6
  123. bbot/test/test_step_2/module_tests/test_module_ntlm.py +7 -7
  124. bbot/test/test_step_2/module_tests/test_module_oauth.py +1 -1
  125. bbot/test/test_step_2/module_tests/test_module_otx.py +1 -1
  126. bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +1 -1
  127. bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +2 -2
  128. bbot/test/test_step_2/module_tests/test_module_portscan.py +3 -3
  129. bbot/test/test_step_2/module_tests/test_module_postgres.py +1 -1
  130. bbot/test/test_step_2/module_tests/test_module_rapiddns.py +9 -9
  131. bbot/test/test_step_2/module_tests/test_module_sitedossier.py +2 -2
  132. bbot/test/test_step_2/module_tests/test_module_smuggler.py +1 -1
  133. bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -6
  134. bbot/test/test_step_2/module_tests/test_module_splunk.py +4 -4
  135. bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +1 -1
  136. bbot/test/test_step_2/module_tests/test_module_subdomains.py +1 -1
  137. bbot/test/test_step_2/module_tests/test_module_trufflehog.py +2 -2
  138. bbot/test/test_step_2/module_tests/test_module_wayback.py +1 -1
  139. {bbot-2.3.0.5376rc0.dist-info → bbot-2.3.0.5384rc0.dist-info}/METADATA +2 -2
  140. {bbot-2.3.0.5376rc0.dist-info → bbot-2.3.0.5384rc0.dist-info}/RECORD +143 -143
  141. {bbot-2.3.0.5376rc0.dist-info → bbot-2.3.0.5384rc0.dist-info}/LICENSE +0 -0
  142. {bbot-2.3.0.5376rc0.dist-info → bbot-2.3.0.5384rc0.dist-info}/WHEEL +0 -0
  143. {bbot-2.3.0.5376rc0.dist-info → bbot-2.3.0.5384rc0.dist-info}/entry_points.txt +0 -0
@@ -64,8 +64,8 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
64
64
  assert not helpers.is_subdomain("notreal")
65
65
  assert helpers.is_url("http://evilcorp.co.uk/asdf?a=b&c=d#asdf")
66
66
  assert helpers.is_url("https://evilcorp.co.uk/asdf?a=b&c=d#asdf")
67
- assert helpers.is_uri("ftp://evilcorp.co.uk") == True
68
- assert helpers.is_uri("http://evilcorp.co.uk") == True
67
+ assert helpers.is_uri("ftp://evilcorp.co.uk") is True
68
+ assert helpers.is_uri("http://evilcorp.co.uk") is True
69
69
  assert helpers.is_uri("evilcorp.co.uk", return_scheme=True) == ""
70
70
  assert helpers.is_uri("ftp://evilcorp.co.uk", return_scheme=True) == "ftp"
71
71
  assert helpers.is_uri("FTP://evilcorp.co.uk", return_scheme=True) == "ftp"
@@ -283,7 +283,7 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
283
283
  replaced = helpers.search_format_dict(
284
284
  {"asdf": [{"wat": {"here": "#{replaceme}!"}}, {500: True}]}, replaceme="asdf"
285
285
  )
286
- assert replaced["asdf"][1][500] == True
286
+ assert replaced["asdf"][1][500] is True
287
287
  assert replaced["asdf"][0]["wat"]["here"] == "asdf!"
288
288
 
289
289
  filtered_dict = helpers.filter_dict(
@@ -315,7 +315,7 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
315
315
  fuzzy=True,
316
316
  exclude_keys="modules",
317
317
  )
318
- assert not "secrets_db" in filtered_dict4["modules"]
318
+ assert "secrets_db" not in filtered_dict4["modules"]
319
319
  assert "ipneighbor" in filtered_dict4["modules"]
320
320
  assert "secret" in filtered_dict4["modules"]["ipneighbor"]
321
321
  assert "asdf" not in filtered_dict4["modules"]["ipneighbor"]
@@ -408,15 +408,15 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
408
408
  assert helpers.validators.validate_host("LOCALHOST ") == "localhost"
409
409
  assert helpers.validators.validate_host(" 192.168.1.1") == "192.168.1.1"
410
410
  assert helpers.validators.validate_host(" Dead::c0dE ") == "dead::c0de"
411
- assert helpers.validators.soft_validate(" evilCorp.COM", "host") == True
412
- assert helpers.validators.soft_validate("!@#$", "host") == False
411
+ assert helpers.validators.soft_validate(" evilCorp.COM", "host") is True
412
+ assert helpers.validators.soft_validate("!@#$", "host") is False
413
413
  with pytest.raises(ValueError):
414
414
  assert helpers.validators.validate_host("!@#$")
415
415
  # ports
416
416
  assert helpers.validators.validate_port(666) == 666
417
417
  assert helpers.validators.validate_port(666666) == 65535
418
- assert helpers.validators.soft_validate(666, "port") == True
419
- assert helpers.validators.soft_validate("!@#$", "port") == False
418
+ assert helpers.validators.soft_validate(666, "port") is True
419
+ assert helpers.validators.soft_validate("!@#$", "port") is False
420
420
  with pytest.raises(ValueError):
421
421
  helpers.validators.validate_port("asdf")
422
422
  # top tcp ports
@@ -428,7 +428,7 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
428
428
  assert top_tcp_ports[-10:] == [65526, 65527, 65528, 65529, 65530, 65531, 65532, 65533, 65534, 65535]
429
429
  assert len(top_tcp_ports) == 65535
430
430
  assert len(set(top_tcp_ports)) == 65535
431
- assert all([isinstance(i, int) for i in top_tcp_ports])
431
+ assert all(isinstance(i, int) for i in top_tcp_ports)
432
432
  top_tcp_ports = helpers.top_tcp_ports(10, as_string=True)
433
433
  assert top_tcp_ports == "80,23,443,21,22,25,3389,110,445,139"
434
434
  # urls
@@ -437,20 +437,20 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
437
437
  helpers.validators.validate_url_parsed(" httP://evilcorP.com/asdf?a=b&c=d#e").geturl()
438
438
  == "http://evilcorp.com/asdf"
439
439
  )
440
- assert helpers.validators.soft_validate(" httP://evilcorP.com/asdf?a=b&c=d#e", "url") == True
441
- assert helpers.validators.soft_validate("!@#$", "url") == False
440
+ assert helpers.validators.soft_validate(" httP://evilcorP.com/asdf?a=b&c=d#e", "url") is True
441
+ assert helpers.validators.soft_validate("!@#$", "url") is False
442
442
  with pytest.raises(ValueError):
443
443
  helpers.validators.validate_url("!@#$")
444
444
  # severities
445
445
  assert helpers.validators.validate_severity(" iNfo") == "INFO"
446
- assert helpers.validators.soft_validate(" iNfo", "severity") == True
447
- assert helpers.validators.soft_validate("NOPE", "severity") == False
446
+ assert helpers.validators.soft_validate(" iNfo", "severity") is True
447
+ assert helpers.validators.soft_validate("NOPE", "severity") is False
448
448
  with pytest.raises(ValueError):
449
449
  helpers.validators.validate_severity("NOPE")
450
450
  # emails
451
451
  assert helpers.validators.validate_email(" bOb@eViLcorp.COM") == "bob@evilcorp.com"
452
- assert helpers.validators.soft_validate(" bOb@eViLcorp.COM", "email") == True
453
- assert helpers.validators.soft_validate("!@#$", "email") == False
452
+ assert helpers.validators.soft_validate(" bOb@eViLcorp.COM", "email") is True
453
+ assert helpers.validators.soft_validate("!@#$", "email") is False
454
454
  with pytest.raises(ValueError):
455
455
  helpers.validators.validate_email("!@#$")
456
456
 
@@ -533,9 +533,9 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
533
533
  truncated_filename.unlink()
534
534
 
535
535
  # misc DNS helpers
536
- assert helpers.is_ptr("wsc-11-22-33-44-wat.evilcorp.com") == True
537
- assert helpers.is_ptr("wsc-11-22-33-wat.evilcorp.com") == False
538
- assert helpers.is_ptr("11wat.evilcorp.com") == False
536
+ assert helpers.is_ptr("wsc-11-22-33-44-wat.evilcorp.com") is True
537
+ assert helpers.is_ptr("wsc-11-22-33-wat.evilcorp.com") is False
538
+ assert helpers.is_ptr("11wat.evilcorp.com") is False
539
539
 
540
540
  ## NTLM
541
541
  testheader = "TlRMTVNTUAACAAAAHgAeADgAAAAVgorilwL+bvnVipUAAAAAAAAAAJgAmABWAAAACgBjRQAAAA9XAEkATgAtAFMANAAyAE4ATwBCAEQAVgBUAEsAOAACAB4AVwBJAE4ALQBTADQAMgBOAE8AQgBEAFYAVABLADgAAQAeAFcASQBOAC0AUwA0ADIATgBPAEIARABWAFQASwA4AAQAHgBXAEkATgAtAFMANAAyAE4ATwBCAEQAVgBUAEsAOAADAB4AVwBJAE4ALQBTADQAMgBOAE8AQgBEAFYAVABLADgABwAIAHUwOZlfoNgBAAAAAA=="
@@ -613,8 +613,8 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
613
613
  assert len(helpers.get_exception_chain(e)) == 2
614
614
  assert len([_ for _ in helpers.get_exception_chain(e) if isinstance(_, KeyboardInterrupt)]) == 1
615
615
  assert len([_ for _ in helpers.get_exception_chain(e) if isinstance(_, ValueError)]) == 1
616
- assert helpers.in_exception_chain(e, (KeyboardInterrupt, asyncio.CancelledError)) == True
617
- assert helpers.in_exception_chain(e, (TypeError, OSError)) == False
616
+ assert helpers.in_exception_chain(e, (KeyboardInterrupt, asyncio.CancelledError)) is True
617
+ assert helpers.in_exception_chain(e, (TypeError, OSError)) is False
618
618
  test_ran = True
619
619
  assert test_ran
620
620
  test_ran = False
@@ -627,9 +627,9 @@ async def test_helpers_misc(helpers, scan, bbot_scanner, bbot_httpserver):
627
627
  assert len(helpers.get_exception_chain(e)) == 2
628
628
  assert len([_ for _ in helpers.get_exception_chain(e) if isinstance(_, AttributeError)]) == 1
629
629
  assert len([_ for _ in helpers.get_exception_chain(e) if isinstance(_, ValueError)]) == 1
630
- assert helpers.in_exception_chain(e, (KeyboardInterrupt, asyncio.CancelledError)) == False
631
- assert helpers.in_exception_chain(e, (KeyboardInterrupt, AttributeError)) == True
632
- assert helpers.in_exception_chain(e, (AttributeError,)) == True
630
+ assert helpers.in_exception_chain(e, (KeyboardInterrupt, asyncio.CancelledError)) is False
631
+ assert helpers.in_exception_chain(e, (KeyboardInterrupt, AttributeError)) is True
632
+ assert helpers.in_exception_chain(e, (AttributeError,)) is True
633
633
  test_ran = True
634
634
  assert test_ran
635
635
 
@@ -886,7 +886,7 @@ async def test_parameter_validation(helpers):
886
886
  if helpers.validate_parameter(p, "getparam"):
887
887
  assert p in getparam_valid_params and p not in getparam_invalid_params
888
888
  else:
889
- assert p in getparam_invalid_params and not p in getparam_valid_params
889
+ assert p in getparam_invalid_params and p not in getparam_valid_params
890
890
 
891
891
  header_valid_params = {
892
892
  "name",
@@ -917,7 +917,7 @@ async def test_parameter_validation(helpers):
917
917
  if helpers.validate_parameter(p, "header"):
918
918
  assert p in header_valid_params and p not in header_invalid_params
919
919
  else:
920
- assert p in header_invalid_params and not p in header_valid_params
920
+ assert p in header_invalid_params and p not in header_valid_params
921
921
 
922
922
  cookie_valid_params = {
923
923
  "name",
@@ -947,4 +947,4 @@ async def test_parameter_validation(helpers):
947
947
  if helpers.validate_parameter(p, "cookie"):
948
948
  assert p in cookie_valid_params and p not in cookie_invalid_params
949
949
  else:
950
- assert p in cookie_invalid_params and not p in cookie_valid_params
950
+ assert p in cookie_invalid_params and p not in cookie_valid_params