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
@@ -4,12 +4,12 @@ from .base import ModuleTestBase
4
4
  class TestDNSDumpster(ModuleTestBase):
5
5
  async def setup_after_prep(self, module_test):
6
6
  module_test.httpx_mock.add_response(
7
- url=f"https://dnsdumpster.com",
7
+ url="https://dnsdumpster.com",
8
8
  headers={"Set-Cookie": "csrftoken=asdf"},
9
9
  content=b'<!DOCTYPE html>\n<html lang="en">\n <head>\n\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n<meta name="google-site-verification" content="vAWNZCy-5XAPGRgA2_NY5HictfnByvgpqOLQUAmVZW0" />\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <meta name="description" content="Find dns records in order to identify the Internet footprint of an organization. Recon that enables deeper security assessments and discovery of the attack surface.">\n <meta name="author" content="">\n <link rel="icon" href="/static/favicon.ico">\n <title>DNSdumpster.com - dns recon and research, find and lookup dns records</title>\n\n\n <!-- Bootstrap core CSS -->\n <link href="/static/css/bootstrap.min.css" rel="stylesheet">\n <link href="/static/font-awesome/css/font-awesome.min.css" rel="stylesheet">\n\n <!-- Custom styles for this template -->\n <link href="/static/cover.css?v=1.4" rel="stylesheet">\n\n </head>\n\n <body>\n\n <div class="site-wrapper">\n <div class="site-wrapper-inner">\n<!-- Section 1 -->\n<section id="intro" data-speed="6" data-type="background">\n <div class="container">\n\n <div class="masthead clearfix">\n <div class="container inner">\n <nav>\n <ul class="nav masthead-nav">\n <li><a href="https://dnsdumpster.com/" data-toggle="tooltip" data-placement="bottom" title="Home"><i style="font-size: 1.2em;" class="fa fa-home"></i></a></li>\n <li><a href="/osint-network-defenders/" data-toggle="tooltip" data-placement="bottom" title="Defend"><i style="font-size: 1.2em;" class="fa fa-shield" aria-hidden="true"></i></a></li>\n <li><a href="/footprinting-reconnaissance/" data-placement="bottom" data-toggle="tooltip" title="Learn"><i style="font-size: 1.2em;" class="fa fa-mortar-board" aria-hidden="true"></i></a></li>\n <li><a href="https://hackertarget.com/" data-toggle="tooltip" title="Online Vulnerability Scanners"><i style="font-size: 1.2em; color: #00CC00;" class="fa fa-bullseye"></i></a></li>\n </ul>\n </nav>\n </div>\n </div>\n\n\n\n\n <div class="cover-container" style="max-width: 900px;">\n <div class="inner cover">\n <h1 class="cover-heading" style="margin-top: 100px;">dns recon & research, find & lookup dns records</h1>\n<p class="lead">\n<div id="hideform">\n<form role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="XYxKkbdJJrio6VMqowCdykwpM4mAflKkF9BcKFbLdmPbB3lwXArEVJvTPNpIz50l">\n <div class="form-group">\n<div class="col-md-2"></div><div class="col-md-6">\n\n<input class="form-control" type="text" placeholder="exampledomain.com" name="targetip" id="regularInput" autofocus>\n\n<input type="hidden" name="user" value="free">\n</div></div>\n<div align="left" id="formsubmit"><button type="submit" class="btn btn-default">Search <span class="glyphicon glyphicon-chevron-right"></span></button></div>\n</form></div></div>\n<div class="row"><div class="col-md-2"></div><div class="col-md-8">\n<div id="showloading" style="color: #fff;">Loading...<br>\n<div class="progress">\n<div class="progress-bar progress-bar-success progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 100%">\n</div></div></div></div></div></div>\n</P>\n\n<div class="row"><div class="col-md-12" style="padding: 80px;">\n\n</div></div>\n\n<p class="lead" style="margin-top: 40px; margin-bottom: 30px;">DNSdumpster.com is a FREE domain research tool that can discover hosts related to a domain. Finding visible hosts from the attackers perspective is an important part of the security assessment process.</p>\n\n </div>\n\n <p style="color: #777; margin-top: 40px;">this is a <a href="https://hackertarget.com/" title="Online Vulnerability Scanners"><button type="button" class="btn btn-danger btn-xs">HackerTarget.com</button></a> project</p>\n\n\n <div style="margin-top: 160px;" class="container">\n <div class="row">\n <div class="col-lg-12 text-center">\n <h2 class="section-heading text-uppercase"></h2>\n <h3 class="section-subheading text-muted">Open Source Intelligence for Networks</h3>\n </div>\n </div>\n <div style="margin-top: 30px;" class="row text-center">\n <div class="col-md-4">\n <span class="fa-stack fa-4x">\n <i class="fa fa-user-secret fa-stack-1x" style="color: #00CC00;"></i>\n </span>\n <h4 class="service-heading">Attack</h4>\n <p class="text-muted">The ability to quickly identify the attack surface is essential. Whether you are penetration testing or chasing bug bounties.</p>\n </div>\n <div class="col-md-4">\n <span class="fa-stack fa-4x">\n <i class="fa fa-shield fa-stack-1x" style="color: #00CC00;"></i>\n </span>\n <h4 class="service-heading">Defend</h4>\n <p class="text-muted">Network defenders benefit from passive reconnaissance in a number of ways. With analysis informing information security strategy.</p>\n </div>\n <div class="col-md-4">\n <span class="fa-stack fa-4x">\n <i class="fa fa-mortar-board fa-stack-1x" style="color: #00CC00;"></i>\n </span>\n <h4 class="service-heading">Learn</h4>\n <p class="text-muted">Understanding network based OSINT helps information technologists to better operate, assess and manage the network.</p>\n </div>\n </div>\n </div>\n\n\n\n\n <div class="container" style="background-color: #474747; margin-top: 180px; padding-bottom: 80px;"><div class="col-md-2"></div><div class="col-md-8">\n\n <span class="glyphicon glyphicon-trash" style="font-size: 4em; line-height: 5.5em;"></span>\n<p style="font-size: 1.7em; line-height: 1.9em; margin-bottom: 80px;">Map an organizations attack surface with a virtual <i>dumpster dive*</i> of the DNS records associated with the target organization.</p>\n<p style="font-size: 1.2em; color: #fff;">*DUMPSTER DIVING: The practice of sifting refuse from an office or technical installation to extract confidential data, especially security-compromising information.</p>\n</div> </div>\n\n\n<div class="container" style="text-align: left; margin-top: 80px; margin-bottom: 80px;">\n\n<h2 style="font-size: 1.8em;">Frequently Asked Questions</h2>\n\n<h4 style="margin-top: 30px;">How can I take my security assessments to the next level?</h4>\n\n<p>The company behind DNSDumpster is <a href="https://hackertarget.com/" title="Online Vulnerability Scanners">hackertarget.com</a> where we provide online hosted access to trusted open source security vulnerability scanners and network intelligence tools.</P><P>Save time and headaches by incorporating our attack surface discovery into your vulnerability assessment process.</p><P style="text-align: center; padding: 30px;"><a href="https://hackertarget.com/" title="HackerTarget.com | Online Security Testing and Open Source Intelligence"><img src="https://hackertarget.com/wp-content/uploads/2019/09/know-your-network-tools.png" alt="HackerTarget.com | Online Security Testing and Open Source Intelligence"></a></p>\n\n<h4>What data does DNSDumpster use?</h4>\n\n<p>No brute force subdomain enumeration is used as is common in dns recon tools that enumerate subdomains. We use open source intelligence resources to query for related domain data. It is then compiled into an actionable resource for both attackers and defenders of Internet facing systems.</P>\n<P>More than a simple <a href="https://hackertarget.com/dns-lookup/" title="Online DNS Lookup">DNS lookup</a> this tool will discover those hard to find sub-domains and web hosts. The search relies on data from our crawls of the Alexa Top 1 Million sites, Search Engines, Common Crawl, Certificate Transparency, Max Mind, Team Cymru, Shodan and <a href="https://scans.io/" style="text-decoration: underline;">scans.io</a>.</P>\n\n<h4>I have hit the host limit, do you have a PRO option?</h4>\n\n<P>Over at <a href="https://hackertarget.com/" title="Online Vulnerability Scanners">hackertarget.com</a> there\'s a tool we call <a href="https://hackertarget.com/domain-profiler/">domain profiler</a>. This compiles data similiar to DNSDumpster; with additional data discovery. Queries available are based on the membership plan with the number of results (subdomains) being unlimited. With a STARTER membership you have access to the domain profiler tool for 12 months. Once the years membership expires you will revert to BASIC member status, however access to Domain Profiler and Basic Nmap scans continue. The BASIC access does not expire.</P>\n\n<h4>What are some other resources and tools for learning more?</h4>\n\n<P>There are some great open source recon frameworks that have been developed over the past couple of years. In addition tools such as <b>Metasploit</b> and <b>Nmap</b> include various modules for enumerating DNS. Check our <a href="https://dnsdumpster.com/footprinting-reconnaissance/">Getting Started with Footprinting</a> for more information.</P>\n\n</div>\n\n\n</div></div>\n</div></div>\n\n<footer>\n<div class="row" style="background-color: #1e1e1e; padding-top: 40px; padding-bottom: 20px;"><div class="container">\n<div class="col-md-6 col-sm-12 right-border" style="text-align: center;">\n<div class="footer-about" style="text-align: left; padding-left: 40px;">\n<h2 class="footer-title" style="font-size: 1.8em;">About</h2>\n<p style="margin-top: 20px;">At <a href="https://hackertarget.com/">hackertarget.com</a>, we have been scanning the Internet since 2007. Our vulnerability scanners now reach millions of IP addresses every year. We work to raise awareness of the value in open source security solutions.</p>\n</div>\n</div>\n<div class="col-md-6 col-sm-12">\n<div class="contact-info" style="text-align: left; padding-left: 40px;">\n<h2 class="footer-title" style="font-size: 1.8em;">Stay in Touch</h2>\n\n<div class="single">\n <p><i style="font-size: 1.2em;" class="fa fa-envelope"></i> dnsdumpster@gmail.com</p>\n</div>\n<div class="single">\n <p><i style="font-size: 1.2em;" class="fa fa-twitter"></i> <a href="https://twitter.com/hackertarget/">@hackertarget</a></p>\n</div>\n<!-- Begin MailChimp Signup Form -->\n<link href="https://cdn-images.mailchimp.com/embedcode/horizontal-slim-10_7.css" rel="stylesheet" type="text/css">\n<style type="text/css">\n #mc_embed_signup{background:#1e1e1e; clear:left; font:14px Helvetica,Arial,sans-serif; width:100%;}\n /* Add your own MailChimp form style overrides in your site stylesheet or in this style block.\n We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */\n </style>\n <div id="mc_embed_signup">\n <form action="https://dnsdumpster.us17.list-manage.com/subscribe/post?u=3cbc62d931a69e74b2c856f1a&amp;id=532c46ab39" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>\n <div id="mc_embed_signup_scroll" style="text-align: left;">\n\n <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>\n <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->\n <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_3cbc62d931a69e74b2c856f1a_532c46ab39" tabindex="-1" value=""></div><br>\n <div class="clear" style="margin-top: 5px;"><input type="submit" style="background-color: #00CC00;" value="Subscribe to our List" name="subscribe" id="mc-embedded-subscribe" class="button"> <span style="font-size: 0.8em;">Low volume Updates and News</a></div>\n </div>\n </form>\n </div>\n\n <!--End mc_embed_signup-->\n\n</div>\n</div>\n</div>\n<div class="clearfix"></div>\n<div class="copyright" style="background-color: #1e1e1e; margin-top: 20px;">\n<p>Copyright &copy; 2023 Hacker Target Pty Ltd</p>\n</div>\n</div>\n</div>\n</div>\n</footer>\n </div>\n </div>\n </div>\n </div>\n\n\n\n\n</div></div>\n\n <!-- Bootstrap core JavaScript\n ================================================== -->\n <!-- Placed at the end of the document so the pages load faster -->\n <script src="https://dnsdumpster.com/static/js/jquery-1.12.4.min.js"></script>\n <script src="/static/js/bootstrap.min.js"></script>\n\n\n\n<script type="text/javascript">\n $(document).ready(function() {\n$(\'[data-toggle="tooltip"]\').tooltip({\'placement\': \'top\'});\n\n$("body").on(\'DOMSubtreeModified\', ".modal-content", function() {\n $(".modal-heading").hide();\n $(".modal-content").show();\n});\n\n $(\'body\').on(\'hidden.bs.modal\', \'.modal\', function () {\n $(this).removeData(\'bs.modal\');\n });\n\n }); //END $(document).ready()\n\n\n$(\'a.external\').on(\'click\', function(e) {\n e.preventDefault();\n $(".modal-heading").show();\n $(".modal-content").hide();\n\n\n var url = $(this).attr(\'href\');\n $(".modal-body").html(\'<iframe id="myiframe" style="background-color: #ccc;" width="100%" height="100%" frameborder="0" scrolling="yes" allowtransparency="true" src="\'+url+\'"></iframe>\');\n });\n\n \n\n\n $(\'#myModal\').on(\'show.bs.modal\', function () {\n $(this).find(\'.modal-dialog\').css({\n width:\'80%\', //choose your width\n height:\'80%\',\n \'padding\':\'5\'\n });\n $(this).find(\'.modal-content\').css({\n height:\'100%\',\n \'border-radius\':\'0\',\n \'padding\':\'15\'\n });\n $(this).find(\'.modal-body\').html(null);\n $(this).find(\'.modal-body\').css({\n width:\'auto\',\n height:\'100%\',\n \'padding\':\'5\'\n });\n })\n\n </script>\n\n<script>\n$(document).ready(function(){\n $("#showloading").hide();\n $("#formsubmit").click(function(){\n $("#hideform").hide();\n $("#showloading").show();\n });\n\n});\n</script>\n<!-- Google tag (gtag.js) -->\n<script async src="https://www.googletagmanager.com/gtag/js?id=G-FPGN9YXFNE"></script>\n<script>\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag(\'js\', new Date());\n\n gtag(\'config\', \'G-FPGN9YXFNE\');\n</script>\n </body>\n</html>\n',
10
10
  )
11
11
  module_test.httpx_mock.add_response(
12
- url=f"https://dnsdumpster.com/",
12
+ url="https://dnsdumpster.com/",
13
13
  method="POST",
14
14
  content=b'<!DOCTYPE html>\n<html lang="en">\n <head>\n\n <meta charset="utf-8">\n <meta http-equiv="X-UA-Compatible" content="IE=edge">\n<meta name="google-site-verification" content="vAWNZCy-5XAPGRgA2_NY5HictfnByvgpqOLQUAmVZW0" />\n <meta name="viewport" content="width=device-width, initial-scale=1">\n <meta name="description" content="Find dns records in order to identify the Internet footprint of an organization. Recon that enables deeper security assessments and discovery of the attack surface.">\n <meta name="author" content="">\n <link rel="icon" href="/static/favicon.ico">\n <title>DNSdumpster.com - dns recon and research, find and lookup dns records</title>\n\n\n <!-- Bootstrap core CSS -->\n <link href="/static/css/bootstrap.min.css" rel="stylesheet">\n <link href="/static/font-awesome/css/font-awesome.min.css" rel="stylesheet">\n\n <!-- Custom styles for this template -->\n <link href="/static/cover.css?v=1.4" rel="stylesheet">\n\n </head>\n\n <body>\n\n <div class="site-wrapper">\n <div class="site-wrapper-inner">\n<!-- Section 1 -->\n<section id="intro" data-speed="6" data-type="background">\n <div class="container">\n\n <div class="masthead clearfix">\n <div class="container inner">\n <nav>\n <ul class="nav masthead-nav">\n <li><a href="https://dnsdumpster.com/" data-toggle="tooltip" data-placement="bottom" title="Home"><i style="font-size: 1.2em;" class="fa fa-home"></i></a></li>\n <li><a href="/osint-network-defenders/" data-toggle="tooltip" data-placement="bottom" title="Defend"><i style="font-size: 1.2em;" class="fa fa-shield" aria-hidden="true"></i></a></li>\n <li><a href="/footprinting-reconnaissance/" data-placement="bottom" data-toggle="tooltip" title="Learn"><i style="font-size: 1.2em;" class="fa fa-mortar-board" aria-hidden="true"></i></a></li>\n <li><a href="https://hackertarget.com/" data-toggle="tooltip" title="Online Vulnerability Scanners"><i style="font-size: 1.2em; color: #00CC00;" class="fa fa-bullseye"></i></a></li>\n </ul>\n </nav>\n </div>\n </div>\n\n\n\n\n <div class="cover-container" style="max-width: 900px;">\n <div class="inner cover">\n <h1 class="cover-heading" style="margin-top: 100px;">dns recon & research, find & lookup dns records</h1>\n<p class="lead">\n<div id="hideform">\n<form role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS">\n <div class="form-group">\n<div class="col-md-2"></div><div class="col-md-6">\n\n<input class="form-control" type="text" placeholder="exampledomain.com" name="targetip" id="regularInput" autofocus>\n\n<input type="hidden" name="user" value="free">\n</div></div>\n<div align="left" id="formsubmit"><button type="submit" class="btn btn-default">Search <span class="glyphicon glyphicon-chevron-right"></span></button></div>\n</form></div></div>\n<div class="row"><div class="col-md-2"></div><div class="col-md-8">\n<div id="showloading" style="color: #fff;">Loading...<br>\n<div class="progress">\n<div class="progress-bar progress-bar-success progress-bar-striped active" role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 100%">\n</div></div></div></div></div></div>\n</P>\n\n<div class="row"><div class="col-md-12" style="padding: 80px;">\n\n<p><h4 style="color: #00CC00; text-align: left; font-size: 1.5em; line-height: 2.7em;">Showing results for <span style="font-weight: 700;">blacklanternsecurity.com</span></h4></p>\n<div style="text-align: right; font-size: 1em;"><a href="#dnsanchor"><span class="label label-default">DNS Servers</span></a> <a href="#mxanchor"><span class="label label-default">MX Records</span></a> <a href="#txtanchor"><span class="label label-default">TXT Records</span></a> <a href="#hostanchor"><span class="label label-default">Host (A) Records</span></a> <a href="#domainmap"><span class="label label-default">Domain Map</span></a></div><div class="clearfix" style="height: 30px;"></div>\n<div class="container">\n <div class="row">\n <div class="col-md-4">\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left; padding-left: 30px; padding-bottom: 20px;">Hosting (IP block owners)</P>\n<canvas id="hosting" height="380" width="300"></canvas></div>\n <div class="col-md-8">\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left; padding-left: 30px;">GeoIP of Host Locations</P>\n <div id="world-map" style="width: 480px; height: 380px"></div>\n</div> </div>\n</div>\n\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left;"><a name="dnsanchor"></a>DNS Servers</P>\n<div class="table-responsive" style="text-align: left;">\n <table class="table" style="font-size: 1.1em; border-color: #777;">\n \n <tr><td class="col-md-4">ns01.domaincontrol.com.<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=ns01.domaincontrol.com." data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers from IP address (Active)"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/zonetransfer/?q=ns01.domaincontrol.com." data-target="#myModal"><span class="glyphicon glyphicon-log-in" data-toggle="tooltip" data-placement="top" title="Attempt Zone Transfer (Active)"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=97.74.100.1" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path to IP address using MTR (Active)"></span></a> <a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/findshareddns/?q=ns01.domaincontrol.com." data-target="#myModal"><span class="glyphicon glyphicon-cloud-download" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this DNS server"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="97.74.100.0/23" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="97.74.100.1" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n</td><td class="col-md-3">97.74.100.1<br><span style="font-size: 0.9em; color: #eee;">ns01.domaincontrol.com</span></td><td class="col-md-3">GODADDY-DNS<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">ns02.domaincontrol.com.<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=ns02.domaincontrol.com." data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers from IP address (Active)"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/zonetransfer/?q=ns02.domaincontrol.com." data-target="#myModal"><span class="glyphicon glyphicon-log-in" data-toggle="tooltip" data-placement="top" title="Attempt Zone Transfer (Active)"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=173.201.68.1" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path to IP address using MTR (Active)"></span></a> <a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/findshareddns/?q=ns02.domaincontrol.com." data-target="#myModal"><span class="glyphicon glyphicon-cloud-download" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this DNS server"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="173.201.68.0/23" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="173.201.68.1" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n</td><td class="col-md-3">173.201.68.1<br><span style="font-size: 0.9em; color: #eee;">ns02.domaincontrol.com</span></td><td class="col-md-3">GODADDY-DNS<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n </table>\n</div>\n\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left;"><a name="mxanchor"></a>MX Records <span style="font-size: 0.8em; color: #777;">** This is where email for the domain goes...</P>\n<div class="table-responsive" style="text-align: left;">\n <table class="table" style="font-size: 1.1em; font-family: \'Courier New\', Courier, monospace;">\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com.mail.protection.outlook.com.<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=104.47.55.138" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=104.47.55.138" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="104.40.0.0/13" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="104.47.55.138" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n</td><td class="col-md-3">104.47.55.138<br><span style="font-size: 0.9em; color: #eee;">mail-bn8nam120138.inbound.protection.outlook.com</span></td><td class="col-md-3">MICROSOFT-CORP-MSN-AS-BLOCK<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n </table>\n</div>\n\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left;"><a name="txtanchor"></a>TXT Records <span style="font-size: 0.8em; color: #777;">** Find more hosts in Sender Policy Framework (SPF) configurations</span></P>\n<div class="table-responsive" style="text-align: left;">\n <table class="table" style="font-size: 1.1em; font-family: \'Courier New\', Courier, monospace;">\n\n<tr><td>&quot;MS=ms26206678&quot;</td></tr>\n\n<tr><td>&quot;v=spf1 ip4:50.240.76.25 include:spf.protection.outlook.com -all&quot;</td></tr>\n\n<tr><td>&quot;google-site-verification=O_PoQFTGJ_hZ9LqfNT9OEc0KPFERKHQ_1t1m0YTx_1E&quot;</td></tr>\n\n<tr><td>&quot;google-site-verification=7XKUMxJSTHBSzdvT7gH47jLRjNAS76nrEfXmzhR_DO4&quot;</td></tr>\n\n</table>\n</div>\n\n\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left;"><a name="hostanchor"></a>Host Records (A) <span style="font-size: 0.8em; color: #777;">** this data may not be current as it uses a static database (updated monthly)</span> </P>\n<div class="table-responsive" style="text-align: left;">\n <table class="table" style="font-size: 1.1em; font-family: \'Courier New\', Courier, monospace;">\n\n \n <tr><td class="col-md-4">blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=185.199.108.153" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=185.199.108.153" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="185.199.108.0/24" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="185.199.108.153" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n<br><span style="font-size: 0.8em; color: #bbb;">HTTP: </span>\n <span style="font-size: 0.9em; color: #eee; color: #0C0;" data-toggle="tooltip" data-placement="top" title="HTTP Server found in Global Scan data (Passive)">GitHub.com</span>\n\n\n\n\n\n\n\n\n<br><span style="font-size: 0.8em; color: #bbb;">HTTP TECH: </span>\n <span style="font-size: 0.9em; color: #eee; color: #0C0;" data-toggle="tooltip" data-placement="top" title="Apps / Technologies found in Global Scan data (Passive)">varnish</span>\n\n\n\n</td><td class="col-md-3">185.199.108.153<br><span style="font-size: 0.9em; color: #eee;">cdn-185-199-108-153.github.com</span></td><td class="col-md-3">FASTLY<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=143.244.156.80" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://asdf.blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=143.244.156.80" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="143.244.144.0/20" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="143.244.156.80" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n\n\n\n<br><span style="font-size: 0.8em; color: #bbb;">SSH: </span>\n <span style="font-size: 0.9em; color: #eee; color: #0C0;" data-toggle="tooltip" data-placement="top" title="SSH Server found in Global Scan data (Passive)">SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3</span>\n\n\n\n\n\n\n\n</td><td class="col-md-3">143.244.156.80<br><span style="font-size: 0.9em; color: #eee;">asdf.blacklanternsecurity.com</span></td><td class="col-md-3">DIGITALOCEAN-ASN<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=64.227.8.231" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://asdf.blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=64.227.8.231" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="64.227.0.0/20" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="64.227.8.231" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n<br><span style="font-size: 0.8em; color: #bbb;">HTTP: </span>\n <span style="font-size: 0.9em; color: #eee; color: #0C0;" data-toggle="tooltip" data-placement="top" title="HTTP Server found in Global Scan data (Passive)">Apache/2.4.29 (Ubuntu)</span>\n\n\n\n\n\n\n\n\n<br><span style="font-size: 0.8em; color: #bbb;">HTTP TECH: </span>\n <span style="font-size: 0.9em; color: #eee; color: #0C0;" data-toggle="tooltip" data-placement="top" title="Apps / Technologies found in Global Scan data (Passive)">Ubuntu<br>Apache,2.4.29</span>\n\n\n\n</td><td class="col-md-3">64.227.8.231<br><span style="font-size: 0.9em; color: #eee;">asdf.blacklanternsecurity.com</span></td><td class="col-md-3">DIGITALOCEAN-ASN<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=192.34.56.157" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://asdf.blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=192.34.56.157" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="192.34.56.0/24" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="192.34.56.157" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n</td><td class="col-md-3">192.34.56.157<br><span style="font-size: 0.9em; color: #eee;">asdf.blacklanternsecurity.com</span></td><td class="col-md-3">DIGITALOCEAN-ASN<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=192.241.216.208" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://asdf.blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=192.241.216.208" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="192.241.192.0/19" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="192.241.216.208" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n</td><td class="col-md-3">192.241.216.208<br><span style="font-size: 0.9em; color: #eee;">asdf.blacklanternsecurity.com</span></td><td class="col-md-3">DIGITALOCEAN-ASN<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=167.71.95.71" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://asdf.blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=167.71.95.71" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="167.71.80.0/20" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="167.71.95.71" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n</td><td class="col-md-3">167.71.95.71<br><span style="font-size: 0.9em; color: #eee;">asdf.blacklanternsecurity.com</span></td><td class="col-md-3">DIGITALOCEAN-ASN<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n <tr><td class="col-md-4">asdf.blacklanternsecurity.com<br>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/reverseiplookup/?q=157.245.247.197" data-target="#myModal"><span class="glyphicon glyphicon-th" data-toggle="tooltip" data-placement="top" title="Find hosts sharing this IP address"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/httpheaders/?q=http://asdf.blacklanternsecurity.com" data-target="#myModal"><span class="glyphicon glyphicon-globe" data-toggle="tooltip" data-placement="top" title="Get HTTP Headers"></span></a>\n<a class="external nounderline" data-toggle="modal" href="https://api.hackertarget.com/mtr/?q=157.245.247.197" data-target="#myModal"><span class="glyphicon glyphicon-random" data-toggle="tooltip" data-placement="top" title="Trace path"></span></a>\n<form style="display: inline;" role="form" action="." method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="157.245.240.0/20" name="targetip"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Search Banners for Netblock (Passive)"><span class="glyphicon glyphicon-eye-open"></span></button></form>\n<form style="display: inline;" role="form" action="https://hackertarget.com/nmap-online-port-scanner/" target="_blank" method="post"><input type="hidden" name="csrfmiddlewaretoken" value="FNUVMI6wikKoeDeCNL9cFyiCnsxbycmxnwLAffFtp8wzEwJEc1lJHpmrmZFVDxiS"><input type="hidden" value="157.245.247.197" name="send_scan[]"><button class="submit-with-icon" type="submit" data-toggle="tooltip" data-placement="top" title="Nmap Port Scan (Active)"><span class="glyphicon glyphicon-screenshot" style="color: #0C0;"></span></button></form>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n</td><td class="col-md-3">157.245.247.197<br><span style="font-size: 0.9em; color: #eee;">asdf.blacklanternsecurity.com</span></td><td class="col-md-3">DIGITALOCEAN-ASN<br><span style="font-size: 0.9em; color: #eee;">United States</span></td></tr>\n \n </table>\n<br>\n\n\n\n<div style="margin: 30px;" align="center"><a href="/static/asdf.blacklanternsecurity.com-202305190301.xlsx"><button type="button" class="btn btn-default"><span class="glyphicon glyphicon-download" aria-hidden="true"></span> Download .xlsx of Hosts</button></a> <a href="/static/asdf.blacklanternsecurity.com-202305190301.html" target="_blank"><button type="button" class="btn btn-default"><span class="glyphicon glyphicon-download" aria-hidden="true"></span> View Graph (beta)</button></div>\n\n<br>\n<p style="color: #ddd; font-family: \'Courier New\', Courier, monospace; text-align: left;"><a name="domainmap"></a>Mapping the domain<span style="font-size: 0.8em; color: #777;"> ** click for full size image</span> </P>\n<p>\n<a href="/static/asdf.blacklanternsecurity.com.png"><img style="max-width: 100%;" class="img-responsive" src="/static/asdf.blacklanternsecurity.com.png"></a>\n</p>\n</div>\n\n</div></div>\n\n<p class="lead" style="margin-top: 40px; margin-bottom: 30px;">DNSdumpster.com is a FREE domain research tool that can discover hosts related to a domain. Finding visible hosts from the attackers perspective is an important part of the security assessment process.</p>\n\n </div>\n\n <p style="color: #777; margin-top: 40px;">this is a <a href="https://hackertarget.com/" title="Online Vulnerability Scanners"><button type="button" class="btn btn-danger btn-xs">HackerTarget.com</button></a> project</p>\n\n\n <div style="margin-top: 160px;" class="container">\n <div class="row">\n <div class="col-lg-12 text-center">\n <h2 class="section-heading text-uppercase"></h2>\n <h3 class="section-subheading text-muted">Open Source Intelligence for Networks</h3>\n </div>\n </div>\n <div style="margin-top: 30px;" class="row text-center">\n <div class="col-md-4">\n <span class="fa-stack fa-4x">\n <i class="fa fa-user-secret fa-stack-1x" style="color: #00CC00;"></i>\n </span>\n <h4 class="service-heading">Attack</h4>\n <p class="text-muted">The ability to quickly identify the attack surface is essential. Whether you are penetration testing or chasing bug bounties.</p>\n </div>\n <div class="col-md-4">\n <span class="fa-stack fa-4x">\n <i class="fa fa-shield fa-stack-1x" style="color: #00CC00;"></i>\n </span>\n <h4 class="service-heading">Defend</h4>\n <p class="text-muted">Network defenders benefit from passive reconnaissance in a number of ways. With analysis informing information security strategy.</p>\n </div>\n <div class="col-md-4">\n <span class="fa-stack fa-4x">\n <i class="fa fa-mortar-board fa-stack-1x" style="color: #00CC00;"></i>\n </span>\n <h4 class="service-heading">Learn</h4>\n <p class="text-muted">Understanding network based OSINT helps information technologists to better operate, assess and manage the network.</p>\n </div>\n </div>\n </div>\n\n\n\n\n <div class="container" style="background-color: #474747; margin-top: 180px; padding-bottom: 80px;"><div class="col-md-2"></div><div class="col-md-8">\n\n <span class="glyphicon glyphicon-trash" style="font-size: 4em; line-height: 5.5em;"></span>\n<p style="font-size: 1.7em; line-height: 1.9em; margin-bottom: 80px;">Map an organizations attack surface with a virtual <i>dumpster dive*</i> of the DNS records associated with the target organization.</p>\n<p style="font-size: 1.2em; color: #fff;">*DUMPSTER DIVING: The practice of sifting refuse from an office or technical installation to extract confidential data, especially security-compromising information.</p>\n</div> </div>\n\n\n<div class="container" style="text-align: left; margin-top: 80px; margin-bottom: 80px;">\n\n<h2 style="font-size: 1.8em;">Frequently Asked Questions</h2>\n\n<h4 style="margin-top: 30px;">How can I take my security assessments to the next level?</h4>\n\n<p>The company behind DNSDumpster is <a href="https://hackertarget.com/" title="Online Vulnerability Scanners">hackertarget.com</a> where we provide online hosted access to trusted open source security vulnerability scanners and network intelligence tools.</P><P>Save time and headaches by incorporating our attack surface discovery into your vulnerability assessment process.</p><P style="text-align: center; padding: 30px;"><a href="https://hackertarget.com/" title="HackerTarget.com | Online Security Testing and Open Source Intelligence"><img src="https://hackertarget.com/wp-content/uploads/2019/09/know-your-network-tools.png" alt="HackerTarget.com | Online Security Testing and Open Source Intelligence"></a></p>\n\n<h4>What data does DNSDumpster use?</h4>\n\n<p>No brute force subdomain enumeration is used as is common in dns recon tools that enumerate subdomains. We use open source intelligence resources to query for related domain data. It is then compiled into an actionable resource for both attackers and defenders of Internet facing systems.</P>\n<P>More than a simple <a href="https://hackertarget.com/dns-lookup/" title="Online DNS Lookup">DNS lookup</a> this tool will discover those hard to find sub-domains and web hosts. The search relies on data from our crawls of the Alexa Top 1 Million sites, Search Engines, Common Crawl, Certificate Transparency, Max Mind, Team Cymru, Shodan and <a href="https://scans.io/" style="text-decoration: underline;">scans.io</a>.</P>\n\n<h4>I have hit the host limit, do you have a PRO option?</h4>\n\n<P>Over at <a href="https://hackertarget.com/" title="Online Vulnerability Scanners">hackertarget.com</a> there\'s a tool we call <a href="https://hackertarget.com/domain-profiler/">domain profiler</a>. This compiles data similiar to DNSDumpster; with additional data discovery. Queries available are based on the membership plan with the number of results (subdomains) being unlimited. With a STARTER membership you have access to the domain profiler tool for 12 months. Once the years membership expires you will revert to BASIC member status, however access to Domain Profiler and Basic Nmap scans continue. The BASIC access does not expire.</P>\n\n<h4>What are some other resources and tools for learning more?</h4>\n\n<P>There are some great open source recon frameworks that have been developed over the past couple of years. In addition tools such as <b>Metasploit</b> and <b>Nmap</b> include various modules for enumerating DNS. Check our <a href="https://dnsdumpster.com/footprinting-reconnaissance/">Getting Started with Footprinting</a> for more information.</P>\n\n</div>\n\n\n\n<!-- Modal -->\n<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">\n <div class="modal-dialog">\n<div class="modal-heading lds-facebook" style="margin-top: 200px;"><div></div><div></div><div></div></div>\n <div class="modal-content" style="background-color: #CCC; white-space: pre-wrap; padding: 20px; text-shadow: none; font-size: 1.2em; max-width: 1000px;">\n </div><!-- /.modal-content -->\n </div><!-- /.modal-dialog -->\n</div><!-- /.modal -->\n\n</div></div>\n</div></div>\n\n<footer>\n<div class="row" style="background-color: #1e1e1e; padding-top: 40px; padding-bottom: 20px;"><div class="container">\n<div class="col-md-6 col-sm-12 right-border" style="text-align: center;">\n<div class="footer-about" style="text-align: left; padding-left: 40px;">\n<h2 class="footer-title" style="font-size: 1.8em;">About</h2>\n<p style="margin-top: 20px;">At <a href="https://hackertarget.com/">hackertarget.com</a>, we have been scanning the Internet since 2007. Our vulnerability scanners now reach millions of IP addresses every year. We work to raise awareness of the value in open source security solutions.</p>\n</div>\n</div>\n<div class="col-md-6 col-sm-12">\n<div class="contact-info" style="text-align: left; padding-left: 40px;">\n<h2 class="footer-title" style="font-size: 1.8em;">Stay in Touch</h2>\n\n<div class="single">\n <p><i style="font-size: 1.2em;" class="fa fa-envelope"></i> dnsdumpster@gmail.com</p>\n</div>\n<div class="single">\n <p><i style="font-size: 1.2em;" class="fa fa-twitter"></i> <a href="https://twitter.com/hackertarget/">@hackertarget</a></p>\n</div>\n<!-- Begin MailChimp Signup Form -->\n<link href="https://cdn-images.mailchimp.com/embedcode/horizontal-slim-10_7.css" rel="stylesheet" type="text/css">\n<style type="text/css">\n #mc_embed_signup{background:#1e1e1e; clear:left; font:14px Helvetica,Arial,sans-serif; width:100%;}\n /* Add your own MailChimp form style overrides in your site stylesheet or in this style block.\n We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */\n </style>\n <div id="mc_embed_signup">\n <form action="https://dnsdumpster.us17.list-manage.com/subscribe/post?u=3cbc62d931a69e74b2c856f1a&amp;id=532c46ab39" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>\n <div id="mc_embed_signup_scroll" style="text-align: left;">\n\n <input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>\n <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->\n <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_3cbc62d931a69e74b2c856f1a_532c46ab39" tabindex="-1" value=""></div><br>\n <div class="clear" style="margin-top: 5px;"><input type="submit" style="background-color: #00CC00;" value="Subscribe to our List" name="subscribe" id="mc-embedded-subscribe" class="button"> <span style="font-size: 0.8em;">Low volume Updates and News</a></div>\n </div>\n </form>\n </div>\n\n <!--End mc_embed_signup-->\n\n</div>\n</div>\n</div>\n<div class="clearfix"></div>\n<div class="copyright" style="background-color: #1e1e1e; margin-top: 20px;">\n<p>Copyright &copy; 2023 Hacker Target Pty Ltd</p>\n</div>\n</div>\n</div>\n</div>\n</footer>\n </div>\n </div>\n </div>\n </div>\n\n\n\n\n</div></div>\n\n <!-- Bootstrap core JavaScript\n ================================================== -->\n <!-- Placed at the end of the document so the pages load faster -->\n <script src="https://dnsdumpster.com/static/js/jquery-1.12.4.min.js"></script>\n <script src="/static/js/bootstrap.min.js"></script>\n\n\n<script src="/static/Chart.js"></script>\n <link rel="stylesheet" href="/static/jquery-jvectormap-2.0.1.css" type="text/css" media="screen"/>\n <script src="/static/jquery-jvectormap-2.0.1.min.js"></script>\n <script src="/static/jquery-jvectormap-world-mill-en.js"></script>\n\n <script type="text/javascript">\nvar barChartData = {\nlabels : [\n\n"GODADDY-DNS",\n\n"MICROSOFT-CORP-MSN-AS-BLOCK",\n\n"FASTLY",\n\n"DIGITALOCEAN-ASN",\n\n],\ndatasets : [\n{\nfillColor : "#ccc",\nstrokeColor : "#ccc",\ndata : [\n\n2,\n\n1,\n\n1,\n\n6,\n\n],\n}\n]\n}\n\nwindow.onload = function(){\nvar ctx = document.getElementById("hosting").getContext("2d");\nwindow.myBar = new Chart(ctx).Bar(barChartData, {\n});\n}\n</script>\n\n\n<script>\nvar gdpData = {\n\n"US" : 3,\n\n"United States" : 7,\n\n};\n $(function(){\n$(\'#world-map\').vectorMap({\n map: \'world_mill_en\',\n backgroundColor: \'#333333\',\n zoomButtons : false,\n series: {\n regions: [{\n values: gdpData,\n scale: [\'#00CC00\', \'#008400\'],\n normalizeFunction: \'polynomial\'\n }]\n },\n onRegionTipShow: function(e, el, code){\n if (typeof gdpData[code] !=="undefined"){\n el.html(el.html()+\' <br>Hosts Found : \'+gdpData[code]);\n } \n }\n});\n });\n </script>\n\n\n\n<script type="text/javascript">\n $(document).ready(function() {\n$(\'[data-toggle="tooltip"]\').tooltip({\'placement\': \'top\'});\n\n$("body").on(\'DOMSubtreeModified\', ".modal-content", function() {\n $(".modal-heading").hide();\n $(".modal-content").show();\n});\n\n $(\'body\').on(\'hidden.bs.modal\', \'.modal\', function () {\n $(this).removeData(\'bs.modal\');\n });\n\n }); //END $(document).ready()\n\n\n$(\'a.external\').on(\'click\', function(e) {\n e.preventDefault();\n $(".modal-heading").show();\n $(".modal-content").hide();\n\n\n var url = $(this).attr(\'href\');\n $(".modal-body").html(\'<iframe id="myiframe" style="background-color: #ccc;" width="100%" height="100%" frameborder="0" scrolling="yes" allowtransparency="true" src="\'+url+\'"></iframe>\');\n });\n\n \n\n\n $(\'#myModal\').on(\'show.bs.modal\', function () {\n $(this).find(\'.modal-dialog\').css({\n width:\'80%\', //choose your width\n height:\'80%\',\n \'padding\':\'5\'\n });\n $(this).find(\'.modal-content\').css({\n height:\'100%\',\n \'border-radius\':\'0\',\n \'padding\':\'15\'\n });\n $(this).find(\'.modal-body\').html(null);\n $(this).find(\'.modal-body\').css({\n width:\'auto\',\n height:\'100%\',\n \'padding\':\'5\'\n });\n })\n\n </script>\n\n<script>\n$(document).ready(function(){\n $("#showloading").hide();\n $("#formsubmit").click(function(){\n $("#hideform").hide();\n $("#showloading").show();\n });\n\n});\n</script>\n<!-- Google tag (gtag.js) -->\n<script async src="https://www.googletagmanager.com/gtag/js?id=G-FPGN9YXFNE"></script>\n<script>\n window.dataLayer = window.dataLayer || [];\n function gtag(){dataLayer.push(arguments);}\n gtag(\'js\', new Date());\n\n gtag(\'config\', \'G-FPGN9YXFNE\');\n</script>\n </body>\n</html>\n',
15
15
  )
@@ -60,8 +60,8 @@ class TestExcavate(ModuleTestBase):
60
60
  assert "www6.test.notreal" in event_data
61
61
  assert "www7.test.notreal" in event_data
62
62
  assert "www8.test.notreal" in event_data
63
- assert not "http://127.0.0.1:8888/a_relative.js" in event_data
64
- assert not "http://127.0.0.1:8888/link_relative.js" in event_data
63
+ assert "http://127.0.0.1:8888/a_relative.js" not in event_data
64
+ assert "http://127.0.0.1:8888/link_relative.js" not in event_data
65
65
  assert "http://127.0.0.1:8888/a_relative.txt" in event_data
66
66
  assert "http://127.0.0.1:8888/link_relative.txt" in event_data
67
67
 
@@ -220,7 +220,7 @@ class TestExcavateRedirect(TestExcavate):
220
220
  [e for e in events if e.type == "FINDING" and e.data["description"] == "Non-HTTP URI: smb://127.0.0.1"]
221
221
  )
222
222
  assert 1 == len(
223
- [e for e in events if e.type == "PROTOCOL" and e.data["protocol"] == "SMB" and not "port" in e.data]
223
+ [e for e in events if e.type == "PROTOCOL" and e.data["protocol"] == "SMB" and "port" not in e.data]
224
224
  )
225
225
  assert 0 == len([e for e in events if e.type == "FINDING" and "ssh://127.0.0.1" in e.data["description"]])
226
226
  assert 0 == len([e for e in events if e.type == "PROTOCOL" and e.data["protocol"] == "SSH"])
@@ -711,7 +711,7 @@ class TestExcavateSpiderDedupe(ModuleTestBase):
711
711
  if (
712
712
  str(e.module) == "dummy_module"
713
713
  and "spider-danger" not in e.tags
714
- and not "spider-max" in e.tags
714
+ and "spider-max" not in e.tags
715
715
  ):
716
716
  found_url_unverified_dummy = True
717
717
  if e.type == "URL" and e.data == "http://127.0.0.1:8888/spider":
@@ -868,8 +868,8 @@ class TestExcavateHeaders(ModuleTestBase):
868
868
  if e.data["name"] == "COOKIE2":
869
869
  found_second_cookie = True
870
870
 
871
- assert found_first_cookie == True
872
- assert found_second_cookie == True
871
+ assert found_first_cookie is True
872
+ assert found_second_cookie is True
873
873
 
874
874
 
875
875
  class TestExcavateRAWTEXT(ModuleTestBase):
@@ -957,12 +957,12 @@ A href <a href='/donot_detect.js'>Click me</a>"""
957
957
 
958
958
  async def setup_after_prep(self, module_test):
959
959
  module_test.set_expect_requests(
960
- dict(uri="/"),
961
- dict(response_data='<a href="/Test_PDF"/>'),
960
+ {"uri": "/"},
961
+ {"response_data": '<a href="/Test_PDF"/>'},
962
962
  )
963
963
  module_test.set_expect_requests(
964
- dict(uri="/Test_PDF"),
965
- dict(response_data=self.pdf_data, headers={"Content-Type": "application/pdf"}),
964
+ {"uri": "/Test_PDF"},
965
+ {"response_data": self.pdf_data, "headers": {"Content-Type": "application/pdf"}},
966
966
  )
967
967
 
968
968
  def check(self, module_test, events):
@@ -21,19 +21,19 @@ class TestExtractous(ModuleTestBase):
21
21
 
22
22
  async def setup_after_prep(self, module_test):
23
23
  module_test.set_expect_requests(
24
- dict(uri="/"),
25
- dict(response_data='<a href="/Test_PDF"/><a href="/Test_DOCX"/>'),
24
+ {"uri": "/"},
25
+ {"response_data": '<a href="/Test_PDF"/><a href="/Test_DOCX"/>'},
26
26
  )
27
27
  module_test.set_expect_requests(
28
- dict(uri="/Test_PDF"),
29
- dict(response_data=self.pdf_data, headers={"Content-Type": "application/pdf"}),
28
+ {"uri": "/Test_PDF"},
29
+ {"response_data": self.pdf_data, "headers": {"Content-Type": "application/pdf"}},
30
30
  )
31
31
  module_test.set_expect_requests(
32
- dict(uri="/Test_DOCX"),
33
- dict(
34
- response_data=self.docx_data,
35
- headers={"Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
36
- ),
32
+ {"uri": "/Test_DOCX"},
33
+ {
34
+ "response_data": self.docx_data,
35
+ "headers": {"Content-Type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
36
+ },
37
37
  )
38
38
 
39
39
  def check(self, module_test, events):
@@ -15,28 +15,28 @@ trailer <</Root 1 0 R>>"""
15
15
 
16
16
  async def setup_after_prep(self, module_test):
17
17
  module_test.set_expect_requests(
18
- dict(uri="/"),
19
- dict(
20
- response_data='<a href="/Test_File.txt"/><a href="/Test_PDF"/><a href="/test.html"/><a href="/test2"/>'
21
- ),
18
+ {"uri": "/"},
19
+ {
20
+ "response_data": '<a href="/Test_File.txt"/><a href="/Test_PDF"/><a href="/test.html"/><a href="/test2"/>'
21
+ },
22
22
  )
23
23
  module_test.set_expect_requests(
24
- dict(uri="/Test_File.txt"),
25
- dict(
26
- response_data="juicy stuff",
27
- ),
24
+ {"uri": "/Test_File.txt"},
25
+ {
26
+ "response_data": "juicy stuff",
27
+ },
28
28
  )
29
29
  module_test.set_expect_requests(
30
- dict(uri="/Test_PDF"),
31
- dict(response_data=self.pdf_data, headers={"Content-Type": "application/pdf"}),
30
+ {"uri": "/Test_PDF"},
31
+ {"response_data": self.pdf_data, "headers": {"Content-Type": "application/pdf"}},
32
32
  )
33
33
  module_test.set_expect_requests(
34
- dict(uri="/test.html"),
35
- dict(response_data="<!DOCTYPE html>", headers={"Content-Type": "text/html"}),
34
+ {"uri": "/test.html"},
35
+ {"response_data": "<!DOCTYPE html>", "headers": {"Content-Type": "text/html"}},
36
36
  )
37
37
  module_test.set_expect_requests(
38
- dict(uri="/test2"),
39
- dict(response_data="<!DOCTYPE html>", headers={"Content-Type": "text/html"}),
38
+ {"uri": "/test2"},
39
+ {"response_data": "<!DOCTYPE html>", "headers": {"Content-Type": "text/html"}},
40
40
  )
41
41
 
42
42
  def check(self, module_test, events):
@@ -202,7 +202,7 @@ class TestGit_Clone(ModuleTestBase):
202
202
  ]
203
203
  assert 1 == len(filesystem_events), "Failed to git clone CODE_REPOSITORY"
204
204
  # make sure the binary blob isn't here
205
- assert not any(["blob" in e.data for e in [e for e in events if e.type == "FILESYSTEM"]])
205
+ assert not any("blob" in e.data for e in [e for e in events if e.type == "FILESYSTEM"])
206
206
  filesystem_event = filesystem_events[0]
207
207
  folder = Path(filesystem_event.data["path"])
208
208
  assert folder.is_dir(), "Destination folder doesn't exist"
@@ -217,7 +217,7 @@ class TestGit_CloneWithBlob(TestGit_Clone):
217
217
  def check(self, module_test, events):
218
218
  filesystem_events = [e for e in events if e.type == "FILESYSTEM"]
219
219
  assert len(filesystem_events) == 1
220
- assert all(["blob" in e.data for e in filesystem_events])
220
+ assert all("blob" in e.data for e in filesystem_events)
221
221
  filesystem_event = filesystem_events[0]
222
222
  blob = filesystem_event.data["blob"]
223
223
  tar_bytes = base64.b64decode(blob)
@@ -27,8 +27,8 @@ class TestGowitness(ModuleTestBase):
27
27
  "headers": {"Server": "Apache/2.4.41 (Ubuntu)"},
28
28
  }
29
29
  module_test.set_expect_requests(respond_args=respond_args)
30
- request_args = dict(uri="/blacklanternsecurity")
31
- respond_args = dict(response_data="""blacklanternsecurity github <a data-bem""")
30
+ request_args = {"uri": "/blacklanternsecurity"}
31
+ respond_args = {"response_data": """blacklanternsecurity github <a data-bem"""}
32
32
  module_test.set_expect_requests(request_args, respond_args)
33
33
 
34
34
  # monkeypatch social
@@ -45,7 +45,7 @@ class TestGowitness(ModuleTestBase):
45
45
  webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
46
46
  assert webscreenshots, "failed to raise WEBSCREENSHOT events"
47
47
  assert not any(
48
- ["blob" in e.data for e in webscreenshots]
48
+ "blob" in e.data for e in webscreenshots
49
49
  ), "blob was included in WEBSCREENSHOT data when it shouldn't have been"
50
50
 
51
51
  screenshots_path = self.home_dir / "scans" / module_test.scan.name / "gowitness" / "screenshots"
@@ -102,5 +102,5 @@ class TestGoWitnessWithBlob(TestGowitness):
102
102
  webscreenshots = [e for e in events if e.type == "WEBSCREENSHOT"]
103
103
  assert webscreenshots, "failed to raise WEBSCREENSHOT events"
104
104
  assert all(
105
- ["blob" in e.data and e.data["blob"] for e in webscreenshots]
105
+ "blob" in e.data and e.data["blob"] for e in webscreenshots
106
106
  ), "blob not found in WEBSCREENSHOT data"
@@ -31,7 +31,7 @@ class TestHost_Header(ModuleTestBase):
31
31
  if subdomain_tag_overrides:
32
32
  return Response(f"Alive, host is: {subdomain_tag}.{self.fake_host}", status=200)
33
33
 
34
- return Response(f"Alive, host is: defaulthost.com", status=200)
34
+ return Response("Alive, host is: defaulthost.com", status=200)
35
35
 
36
36
  async def setup_before_prep(self, module_test):
37
37
  self.interactsh_mock_instance = module_test.mock_interactsh("host_header")
@@ -48,10 +48,10 @@ class TestHTTP(ModuleTestBase):
48
48
  )
49
49
 
50
50
  def check(self, module_test, events):
51
- assert self.got_event == True
52
- assert self.headers_correct == True
53
- assert self.method_correct == True
54
- assert self.url_correct == True
51
+ assert self.got_event is True
52
+ assert self.headers_correct is True
53
+ assert self.method_correct is True
54
+ assert self.url_correct is True
55
55
 
56
56
 
57
57
  class TestHTTPSIEMFriendly(TestHTTP):
@@ -31,11 +31,11 @@ class TestHTTPXBase(ModuleTestBase):
31
31
  </html>"""
32
32
 
33
33
  async def setup_after_prep(self, module_test):
34
- request_args = dict(uri="/", headers={"test": "header"})
35
- respond_args = dict(response_data=self.html_without_login)
34
+ request_args = {"uri": "/", "headers": {"test": "header"}}
35
+ respond_args = {"response_data": self.html_without_login}
36
36
  module_test.set_expect_requests(request_args, respond_args)
37
- request_args = dict(uri="/url", headers={"test": "header"})
38
- respond_args = dict(response_data=self.html_with_login)
37
+ request_args = {"uri": "/url", "headers": {"test": "header"}}
38
+ respond_args = {"response_data": self.html_with_login}
39
39
  module_test.set_expect_requests(request_args, respond_args)
40
40
 
41
41
  def check(self, module_test, events):
@@ -44,7 +44,7 @@ class TestHTTPXBase(ModuleTestBase):
44
44
  for e in events:
45
45
  if e.type == "HTTP_RESPONSE":
46
46
  if e.data["path"] == "/":
47
- assert not "login-page" in e.tags
47
+ assert "login-page" not in e.tags
48
48
  open_port = True
49
49
  elif e.data["path"] == "/url":
50
50
  assert "login-page" in e.tags
@@ -124,8 +124,8 @@ class TestHTTPX_URLBlacklist(ModuleTestBase):
124
124
  assert 1 == len([e for e in events if e.type == "URL" and e.data == "http://127.0.0.1:8888/"])
125
125
  assert 1 == len([e for e in events if e.type == "URL" and e.data == "http://127.0.0.1:8888/test.aspx"])
126
126
  assert 1 == len([e for e in events if e.type == "URL" and e.data == "http://127.0.0.1:8888/test.txt"])
127
- assert not any([e for e in events if "URL" in e.type and ".svg" in e.data])
128
- assert not any([e for e in events if "URL" in e.type and ".woff" in e.data])
127
+ assert not any(e for e in events if "URL" in e.type and ".svg" in e.data)
128
+ assert not any(e for e in events if "URL" in e.type and ".woff" in e.data)
129
129
 
130
130
 
131
131
  class TestHTTPX_querystring_removed(ModuleTestBase):
@@ -11,7 +11,7 @@ class TestLeakIX(ModuleTestBase):
11
11
  json={"title": "Not Found", "description": "Host not found"},
12
12
  )
13
13
  module_test.httpx_mock.add_response(
14
- url=f"https://leakix.net/api/subdomains/blacklanternsecurity.com",
14
+ url="https://leakix.net/api/subdomains/blacklanternsecurity.com",
15
15
  match_headers={"api-key": "asdf"},
16
16
  json=[
17
17
  {
@@ -35,7 +35,7 @@ class TestLeakIX_NoAPIKey(ModuleTestBase):
35
35
  json={"title": "Not Found", "description": "Host not found"},
36
36
  )
37
37
  module_test.httpx_mock.add_response(
38
- url=f"https://leakix.net/api/subdomains/blacklanternsecurity.com",
38
+ url="https://leakix.net/api/subdomains/blacklanternsecurity.com",
39
39
  json=[
40
40
  {
41
41
  "subdomain": "asdf.blacklanternsecurity.com",
@@ -5,7 +5,7 @@ class TestMySSL(ModuleTestBase):
5
5
  async def setup_after_prep(self, module_test):
6
6
  module_test.module.abort_if = lambda e: False
7
7
  module_test.httpx_mock.add_response(
8
- url=f"https://myssl.com/api/v1/discover_sub_domain?domain=blacklanternsecurity.com",
8
+ url="https://myssl.com/api/v1/discover_sub_domain?domain=blacklanternsecurity.com",
9
9
  json={
10
10
  "code": 0,
11
11
  "data": [
@@ -41,4 +41,4 @@ class TestNeo4j(ModuleTestBase):
41
41
  module_test.monkeypatch.setattr("neo4j.AsyncGraphDatabase.driver", MockDriver)
42
42
 
43
43
  def check(self, module_test, events):
44
- assert self.neo4j_used == True
44
+ assert self.neo4j_used is True
@@ -33,11 +33,11 @@ class TestNewsletters(ModuleTestBase):
33
33
  """
34
34
 
35
35
  async def setup_after_prep(self, module_test):
36
- request_args = dict(uri="/found", headers={"test": "header"})
37
- respond_args = dict(response_data=self.html_with_newsletter)
36
+ request_args = {"uri": "/found", "headers": {"test": "header"}}
37
+ respond_args = {"response_data": self.html_with_newsletter}
38
38
  module_test.set_expect_requests(request_args, respond_args)
39
- request_args = dict(uri="/missing", headers={"test": "header"})
40
- respond_args = dict(response_data=self.html_without_newsletter)
39
+ request_args = {"uri": "/missing", "headers": {"test": "header"}}
40
+ respond_args = {"response_data": self.html_without_newsletter}
41
41
  module_test.set_expect_requests(request_args, respond_args)
42
42
 
43
43
  def check(self, module_test, events):
@@ -53,5 +53,5 @@ class TestNewsletters(ModuleTestBase):
53
53
  # Verify Negative Result (should skip this statement if correct)
54
54
  elif event.data["url"] == self.missing_tgt:
55
55
  missing = False
56
- assert found, f"NEWSLETTER 'Found' Error - Expect status of True but got False"
57
- assert missing, f"NEWSLETTER 'Missing' Error - Expect status of True but got False"
56
+ assert found, "NEWSLETTER 'Found' Error - Expect status of True but got False"
57
+ assert missing, "NEWSLETTER 'Missing' Error - Expect status of True but got False"
@@ -7,16 +7,16 @@ class TestNTLM(ModuleTestBase):
7
7
  config_overrides = {"modules": {"ntlm": {"try_all": True}}}
8
8
 
9
9
  async def setup_after_prep(self, module_test):
10
- request_args = dict(uri="/", headers={"test": "header"})
10
+ request_args = {"uri": "/", "headers": {"test": "header"}}
11
11
  module_test.set_expect_requests(request_args, {})
12
- request_args = dict(
13
- uri="/oab/", headers={"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="}
14
- )
15
- respond_args = dict(
16
- headers={
12
+ request_args = {
13
+ "uri": "/oab/", "headers": {"Authorization": "NTLM TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAKAGFKAAAADw=="}
14
+ }
15
+ respond_args = {
16
+ "headers": {
17
17
  "WWW-Authenticate": "NTLM TlRMTVNTUAACAAAABgAGADgAAAAVgoni89aZT4Q0mH0AAAAAAAAAAHYAdgA+AAAABgGxHQAAAA9WAE4ATwACAAYAVgBOAE8AAQAKAEUAWABDADAAMQAEABIAdgBuAG8ALgBsAG8AYwBhAGwAAwAeAEUAWABDADAAMQAuAHYAbgBvAC4AbABvAGMAYQBsAAUAEgB2AG4AbwAuAGwAbwBjAGEAbAAHAAgAXxo0p/6L2QEAAAAA"
18
18
  }
19
- )
19
+ }
20
20
  module_test.set_expect_requests(request_args, respond_args)
21
21
 
22
22
  def check(self, module_test, events):
@@ -167,7 +167,7 @@ class TestOAUTH(ModuleTestBase):
167
167
  async def setup_after_prep(self, module_test):
168
168
  await module_test.mock_dns({"evilcorp.com": {"A": ["127.0.0.1"]}})
169
169
  module_test.httpx_mock.add_response(
170
- url=f"https://login.microsoftonline.com/getuserrealm.srf?login=test@evilcorp.com",
170
+ url="https://login.microsoftonline.com/getuserrealm.srf?login=test@evilcorp.com",
171
171
  json=Azure_Realm.response_json,
172
172
  )
173
173
  module_test.httpx_mock.add_response(
@@ -4,7 +4,7 @@ from .base import ModuleTestBase
4
4
  class TestOTX(ModuleTestBase):
5
5
  async def setup_after_prep(self, module_test):
6
6
  module_test.httpx_mock.add_response(
7
- url=f"https://otx.alienvault.com/api/v1/indicators/domain/blacklanternsecurity.com/passive_dns",
7
+ url="https://otx.alienvault.com/api/v1/indicators/domain/blacklanternsecurity.com/passive_dns",
8
8
  json={
9
9
  "passive_dns": [
10
10
  {
@@ -28,7 +28,7 @@ class TestParamminer_Cookies(Paramminer_Headers):
28
28
  module_test.monkeypatch.setattr(
29
29
  helper.HttpCompare, "gen_cache_buster", lambda *args, **kwargs: {"AAAAAA": "1"}
30
30
  )
31
- expect_args = dict(headers={"Cookie": "admincookie=AAAAAAAAAAAAAA"})
31
+ expect_args = {"headers": {"Cookie": "admincookie=AAAAAAAAAAAAAA"}}
32
32
  respond_args = {"response_data": self.cookies_body_match}
33
33
  module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args)
34
34
 
@@ -31,7 +31,7 @@ class Paramminer_Headers(ModuleTestBase):
31
31
  module_test.monkeypatch.setattr(
32
32
  helper.HttpCompare, "gen_cache_buster", lambda *args, **kwargs: {"AAAAAA": "1"}
33
33
  )
34
- expect_args = dict(headers={"tracestate": "AAAAAAAAAAAAAA"})
34
+ expect_args = {"headers": {"tracestate": "AAAAAAAAAAAAAA"}}
35
35
  respond_args = {"response_data": self.headers_body_match}
36
36
  module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args)
37
37
 
@@ -112,7 +112,7 @@ class TestParamminer_Headers_extract(Paramminer_Headers):
112
112
  module_test.monkeypatch.setattr(
113
113
  helper.HttpCompare, "gen_cache_buster", lambda *args, **kwargs: {"AAAAAA": "1"}
114
114
  )
115
- expect_args = dict(headers={"foo": "AAAAAAAAAAAAAA"})
115
+ expect_args = {"headers": {"foo": "AAAAAAAAAAAAAA"}}
116
116
  respond_args = {"response_data": self.headers_body_match}
117
117
  module_test.set_expect_requests(expect_args=expect_args, respond_args=respond_args)
118
118
 
@@ -122,7 +122,7 @@ class TestPortscan(ModuleTestBase):
122
122
  assert 1 == len([e for e in events if e.type == "OPEN_TCP_PORT" and e.data == "asdf.evilcorp.net:80"])
123
123
  assert 1 == len([e for e in events if e.type == "OPEN_TCP_PORT" and e.data == "dummy.asdf.evilcorp.net:80"])
124
124
  assert 1 == len([e for e in events if e.type == "OPEN_TCP_PORT" and e.data == "dummy.evilcorp.com:631"])
125
- assert not any([e for e in events if e.type == "OPEN_TCP_PORT" and e.host == "dummy.www.evilcorp.com"])
125
+ assert not any(e for e in events if e.type == "OPEN_TCP_PORT" and e.host == "dummy.www.evilcorp.com")
126
126
 
127
127
 
128
128
  class TestPortscanPingFirst(TestPortscan):
@@ -136,7 +136,7 @@ class TestPortscanPingFirst(TestPortscan):
136
136
  assert self.ping_runs == 1
137
137
  open_port_events = [e for e in events if e.type == "OPEN_TCP_PORT"]
138
138
  assert len(open_port_events) == 3
139
- assert set([e.data for e in open_port_events]) == {"8.8.8.8:443", "evilcorp.com:443", "www.evilcorp.com:443"}
139
+ assert {e.data for e in open_port_events} == {"8.8.8.8:443", "evilcorp.com:443", "www.evilcorp.com:443"}
140
140
 
141
141
 
142
142
  class TestPortscanPingOnly(TestPortscan):
@@ -154,4 +154,4 @@ class TestPortscanPingOnly(TestPortscan):
154
154
  assert len(open_port_events) == 0
155
155
  ip_events = [e for e in events if e.type == "IP_ADDRESS"]
156
156
  assert len(ip_events) == 1
157
- assert set([e.data for e in ip_events]) == {"8.8.8.8"}
157
+ assert {e.data for e in ip_events} == {"8.8.8.8"}