bbot 2.3.0.5370rc0__py3-none-any.whl → 2.3.0.5382rc0__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 (157) hide show
  1. bbot/__init__.py +1 -1
  2. bbot/cli.py +2 -6
  3. bbot/core/config/files.py +0 -1
  4. bbot/core/config/logger.py +1 -1
  5. bbot/core/core.py +1 -1
  6. bbot/core/event/base.py +13 -16
  7. bbot/core/helpers/command.py +4 -4
  8. bbot/core/helpers/depsinstaller/installer.py +5 -5
  9. bbot/core/helpers/diff.py +7 -7
  10. bbot/core/helpers/dns/brute.py +1 -1
  11. bbot/core/helpers/dns/dns.py +1 -2
  12. bbot/core/helpers/dns/engine.py +4 -6
  13. bbot/core/helpers/dns/mock.py +0 -1
  14. bbot/core/helpers/files.py +1 -1
  15. bbot/core/helpers/helper.py +3 -1
  16. bbot/core/helpers/interactsh.py +3 -3
  17. bbot/core/helpers/libmagic.py +0 -1
  18. bbot/core/helpers/misc.py +11 -11
  19. bbot/core/helpers/process.py +0 -2
  20. bbot/core/helpers/regex.py +1 -1
  21. bbot/core/helpers/regexes.py +3 -3
  22. bbot/core/helpers/validators.py +1 -2
  23. bbot/core/helpers/web/client.py +1 -1
  24. bbot/core/helpers/web/engine.py +1 -2
  25. bbot/core/helpers/web/web.py +2 -3
  26. bbot/core/helpers/wordcloud.py +5 -5
  27. bbot/core/modules.py +21 -22
  28. bbot/db/sql/models.py +0 -1
  29. bbot/modules/azure_tenant.py +2 -2
  30. bbot/modules/baddns.py +0 -2
  31. bbot/modules/baddns_direct.py +0 -1
  32. bbot/modules/base.py +16 -16
  33. bbot/modules/bypass403.py +5 -5
  34. bbot/modules/c99.py +1 -1
  35. bbot/modules/columbus.py +1 -1
  36. bbot/modules/deadly/ffuf.py +8 -8
  37. bbot/modules/deadly/nuclei.py +1 -1
  38. bbot/modules/deadly/vhost.py +3 -3
  39. bbot/modules/dnsbimi.py +1 -1
  40. bbot/modules/dnsdumpster.py +2 -2
  41. bbot/modules/dockerhub.py +1 -1
  42. bbot/modules/dotnetnuke.py +0 -2
  43. bbot/modules/extractous.py +1 -1
  44. bbot/modules/filedownload.py +1 -1
  45. bbot/modules/generic_ssrf.py +3 -3
  46. bbot/modules/github_workflows.py +1 -1
  47. bbot/modules/gowitness.py +7 -7
  48. bbot/modules/host_header.py +5 -5
  49. bbot/modules/httpx.py +1 -1
  50. bbot/modules/iis_shortnames.py +6 -6
  51. bbot/modules/internal/cloudcheck.py +5 -5
  52. bbot/modules/internal/dnsresolve.py +7 -7
  53. bbot/modules/internal/excavate.py +23 -26
  54. bbot/modules/internal/speculate.py +4 -4
  55. bbot/modules/ipneighbor.py +1 -1
  56. bbot/modules/jadx.py +1 -1
  57. bbot/modules/newsletters.py +2 -2
  58. bbot/modules/output/asset_inventory.py +6 -6
  59. bbot/modules/output/base.py +1 -1
  60. bbot/modules/output/csv.py +1 -1
  61. bbot/modules/output/stdout.py +2 -2
  62. bbot/modules/paramminer_headers.py +4 -7
  63. bbot/modules/portscan.py +3 -3
  64. bbot/modules/report/asn.py +11 -11
  65. bbot/modules/robots.py +3 -3
  66. bbot/modules/securitytxt.py +1 -1
  67. bbot/modules/sitedossier.py +1 -1
  68. bbot/modules/social.py +1 -1
  69. bbot/modules/subdomainradar.py +1 -1
  70. bbot/modules/telerik.py +7 -7
  71. bbot/modules/templates/bucket.py +1 -1
  72. bbot/modules/templates/github.py +1 -1
  73. bbot/modules/templates/shodan.py +1 -1
  74. bbot/modules/templates/subdomain_enum.py +1 -1
  75. bbot/modules/templates/webhook.py +1 -1
  76. bbot/modules/trufflehog.py +2 -2
  77. bbot/modules/url_manipulation.py +3 -3
  78. bbot/modules/urlscan.py +1 -1
  79. bbot/modules/viewdns.py +1 -1
  80. bbot/modules/wafw00f.py +1 -1
  81. bbot/scanner/preset/args.py +10 -11
  82. bbot/scanner/preset/environ.py +0 -1
  83. bbot/scanner/preset/preset.py +9 -9
  84. bbot/scanner/scanner.py +17 -17
  85. bbot/scanner/target.py +1 -1
  86. bbot/scripts/docs.py +1 -1
  87. bbot/test/bbot_fixtures.py +1 -1
  88. bbot/test/conftest.py +1 -1
  89. bbot/test/run_tests.sh +4 -4
  90. bbot/test/test_step_1/test_bbot_fastapi.py +2 -2
  91. bbot/test/test_step_1/test_cli.py +56 -56
  92. bbot/test/test_step_1/test_dns.py +15 -15
  93. bbot/test/test_step_1/test_engine.py +17 -17
  94. bbot/test/test_step_1/test_events.py +22 -22
  95. bbot/test/test_step_1/test_helpers.py +26 -26
  96. bbot/test/test_step_1/test_manager_scope_accuracy.py +306 -306
  97. bbot/test/test_step_1/test_modules_basic.py +52 -53
  98. bbot/test/test_step_1/test_presets.py +81 -81
  99. bbot/test/test_step_1/test_regexes.py +5 -5
  100. bbot/test/test_step_1/test_scan.py +4 -4
  101. bbot/test/test_step_1/test_target.py +25 -25
  102. bbot/test/test_step_1/test_web.py +5 -5
  103. bbot/test/test_step_2/module_tests/base.py +6 -6
  104. bbot/test/test_step_2/module_tests/test_module_anubisdb.py +1 -1
  105. bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -1
  106. bbot/test/test_step_2/module_tests/test_module_azure_realm.py +1 -1
  107. bbot/test/test_step_2/module_tests/test_module_baddns.py +6 -6
  108. bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +2 -4
  109. bbot/test/test_step_2/module_tests/test_module_bevigil.py +4 -4
  110. bbot/test/test_step_2/module_tests/test_module_binaryedge.py +2 -2
  111. bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +2 -2
  112. bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +1 -1
  113. bbot/test/test_step_2/module_tests/test_module_builtwith.py +2 -2
  114. bbot/test/test_step_2/module_tests/test_module_c99.py +9 -9
  115. bbot/test/test_step_2/module_tests/test_module_columbus.py +1 -1
  116. bbot/test/test_step_2/module_tests/test_module_credshed.py +2 -2
  117. bbot/test/test_step_2/module_tests/test_module_dehashed.py +1 -1
  118. bbot/test/test_step_2/module_tests/test_module_digitorus.py +1 -1
  119. bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +8 -9
  120. bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -1
  121. bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -1
  122. bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +2 -2
  123. bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -2
  124. bbot/test/test_step_2/module_tests/test_module_excavate.py +10 -30
  125. bbot/test/test_step_2/module_tests/test_module_extractous.py +9 -9
  126. bbot/test/test_step_2/module_tests/test_module_filedownload.py +14 -14
  127. bbot/test/test_step_2/module_tests/test_module_git_clone.py +2 -2
  128. bbot/test/test_step_2/module_tests/test_module_gowitness.py +4 -4
  129. bbot/test/test_step_2/module_tests/test_module_host_header.py +1 -1
  130. bbot/test/test_step_2/module_tests/test_module_http.py +4 -4
  131. bbot/test/test_step_2/module_tests/test_module_httpx.py +7 -7
  132. bbot/test/test_step_2/module_tests/test_module_leakix.py +2 -2
  133. bbot/test/test_step_2/module_tests/test_module_myssl.py +1 -1
  134. bbot/test/test_step_2/module_tests/test_module_neo4j.py +1 -1
  135. bbot/test/test_step_2/module_tests/test_module_newsletters.py +6 -6
  136. bbot/test/test_step_2/module_tests/test_module_ntlm.py +7 -7
  137. bbot/test/test_step_2/module_tests/test_module_oauth.py +1 -1
  138. bbot/test/test_step_2/module_tests/test_module_otx.py +1 -1
  139. bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +1 -2
  140. bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -6
  141. bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +2 -9
  142. bbot/test/test_step_2/module_tests/test_module_portscan.py +3 -4
  143. bbot/test/test_step_2/module_tests/test_module_postgres.py +1 -1
  144. bbot/test/test_step_2/module_tests/test_module_rapiddns.py +9 -9
  145. bbot/test/test_step_2/module_tests/test_module_sitedossier.py +2 -2
  146. bbot/test/test_step_2/module_tests/test_module_smuggler.py +1 -1
  147. bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -6
  148. bbot/test/test_step_2/module_tests/test_module_splunk.py +4 -4
  149. bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +1 -1
  150. bbot/test/test_step_2/module_tests/test_module_subdomains.py +1 -1
  151. bbot/test/test_step_2/module_tests/test_module_trufflehog.py +2 -2
  152. bbot/test/test_step_2/module_tests/test_module_wayback.py +1 -1
  153. {bbot-2.3.0.5370rc0.dist-info → bbot-2.3.0.5382rc0.dist-info}/METADATA +2 -2
  154. {bbot-2.3.0.5370rc0.dist-info → bbot-2.3.0.5382rc0.dist-info}/RECORD +157 -157
  155. {bbot-2.3.0.5370rc0.dist-info → bbot-2.3.0.5382rc0.dist-info}/LICENSE +0 -0
  156. {bbot-2.3.0.5370rc0.dist-info → bbot-2.3.0.5382rc0.dist-info}/WHEEL +0 -0
  157. {bbot-2.3.0.5370rc0.dist-info → bbot-2.3.0.5382rc0.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
  )
@@ -146,14 +146,12 @@ class TestDotnetnuke_blindssrf(ModuleTestBase):
146
146
  return Response("alive", status=200)
147
147
 
148
148
  async def setup_before_prep(self, module_test):
149
-
150
149
  self.interactsh_mock_instance = module_test.mock_interactsh("dotnetnuke_blindssrf")
151
150
  module_test.monkeypatch.setattr(
152
151
  module_test.scan.helpers, "interactsh", lambda *args, **kwargs: self.interactsh_mock_instance
153
152
  )
154
153
 
155
154
  async def setup_after_prep(self, module_test):
156
-
157
155
  # Simulate DotNetNuke Instance
158
156
  expect_args = {"method": "GET", "uri": "/"}
159
157
  respond_args = {"response_data": dotnetnuke_http_response}
@@ -13,7 +13,6 @@ class TestExcavate(ModuleTestBase):
13
13
  config_overrides = {"web": {"spider_distance": 1, "spider_depth": 1}}
14
14
 
15
15
  async def setup_before_prep(self, module_test):
16
-
17
16
  response_data = """
18
17
  ftp://ftp.test.notreal
19
18
  \\nhttps://www1.test.notreal
@@ -61,8 +60,8 @@ class TestExcavate(ModuleTestBase):
61
60
  assert "www6.test.notreal" in event_data
62
61
  assert "www7.test.notreal" in event_data
63
62
  assert "www8.test.notreal" in event_data
64
- assert not "http://127.0.0.1:8888/a_relative.js" in event_data
65
- 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
66
65
  assert "http://127.0.0.1:8888/a_relative.txt" in event_data
67
66
  assert "http://127.0.0.1:8888/link_relative.txt" in event_data
68
67
 
@@ -181,7 +180,6 @@ class TestExcavateRedirect(TestExcavate):
181
180
  module_test.httpserver.no_handler_status_code = 404
182
181
 
183
182
  def check(self, module_test, events):
184
-
185
183
  assert 1 == len(
186
184
  [
187
185
  e
@@ -222,7 +220,7 @@ class TestExcavateRedirect(TestExcavate):
222
220
  [e for e in events if e.type == "FINDING" and e.data["description"] == "Non-HTTP URI: smb://127.0.0.1"]
223
221
  )
224
222
  assert 1 == len(
225
- [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]
226
224
  )
227
225
  assert 0 == len([e for e in events if e.type == "FINDING" and "ssh://127.0.0.1" in e.data["description"]])
228
226
  assert 0 == len([e for e in events if e.type == "PROTOCOL" and e.data["protocol"] == "SSH"])
@@ -332,7 +330,6 @@ class TestExcavateMaxLinksPerPage(TestExcavate):
332
330
 
333
331
 
334
332
  class TestExcavateCSP(TestExcavate):
335
-
336
333
  csp_test_header = "default-src 'self'; script-src asdf.test.notreal; object-src 'none';"
337
334
 
338
335
  async def setup_before_prep(self, module_test):
@@ -356,7 +353,6 @@ class TestExcavateURL(TestExcavate):
356
353
 
357
354
 
358
355
  class TestExcavateURL_IP(TestExcavate):
359
-
360
356
  targets = ["http://127.0.0.1:8888/", "127.0.0.2"]
361
357
 
362
358
  async def setup_before_prep(self, module_test):
@@ -405,7 +401,6 @@ class TestExcavateSerializationPositive(TestExcavate):
405
401
 
406
402
 
407
403
  class TestExcavateNonHttpScheme(TestExcavate):
408
-
409
404
  targets = ["http://127.0.0.1:8888/", "test.notreal"]
410
405
 
411
406
  non_http_scheme_html = """
@@ -425,7 +420,6 @@ class TestExcavateNonHttpScheme(TestExcavate):
425
420
  module_test.httpserver.expect_request("/").respond_with_data(self.non_http_scheme_html)
426
421
 
427
422
  def check(self, module_test, events):
428
-
429
423
  found_hxxp_url = False
430
424
  found_ftp_url = False
431
425
  found_nonsense_url = False
@@ -540,7 +534,6 @@ class TestExcavateParameterExtraction(TestExcavate):
540
534
 
541
535
 
542
536
  class TestExcavateParameterExtraction_getparam(ModuleTestBase):
543
-
544
537
  targets = ["http://127.0.0.1:8888/"]
545
538
 
546
539
  # hunt is added as parameter extraction is only activated by one or more modules that consume WEB_PARAMETER
@@ -554,11 +547,9 @@ class TestExcavateParameterExtraction_getparam(ModuleTestBase):
554
547
  module_test.set_expect_requests(respond_args=respond_args)
555
548
 
556
549
  def check(self, module_test, events):
557
-
558
550
  excavate_getparam_extraction = False
559
551
  for e in events:
560
552
  if e.type == "WEB_PARAMETER":
561
-
562
553
  if "HTTP Extracted Parameter [hack] (HTML Tags Submodule)" in e.data["description"]:
563
554
  excavate_getparam_extraction = True
564
555
  assert excavate_getparam_extraction, "Excavate failed to extract web parameter"
@@ -626,7 +617,6 @@ class excavateTestRule(ExcavateRule):
626
617
 
627
618
 
628
619
  class TestExcavateYara(TestExcavate):
629
-
630
620
  targets = ["http://127.0.0.1:8888/"]
631
621
  yara_test_html = """
632
622
  <html>
@@ -641,12 +631,10 @@ class TestExcavateYara(TestExcavate):
641
631
  """
642
632
 
643
633
  async def setup_before_prep(self, module_test):
644
-
645
634
  self.modules_overrides = ["excavate", "httpx"]
646
635
  module_test.httpserver.expect_request("/").respond_with_data(self.yara_test_html)
647
636
 
648
637
  async def setup_after_prep(self, module_test):
649
-
650
638
  excavate_module = module_test.scan.modules["excavate"]
651
639
  excavateruleinstance = excavateTestRule(excavate_module)
652
640
  excavate_module.add_yara_rule(
@@ -665,7 +653,6 @@ class TestExcavateYara(TestExcavate):
665
653
  found_yara_string_1 = False
666
654
  found_yara_string_2 = False
667
655
  for e in events:
668
-
669
656
  if e.type == "FINDING":
670
657
  if e.data["description"] == "HTTP response (body) Contains the text AAAABBBBCCCC":
671
658
  found_yara_string_1 = True
@@ -677,7 +664,6 @@ class TestExcavateYara(TestExcavate):
677
664
 
678
665
 
679
666
  class TestExcavateYaraCustom(TestExcavateYara):
680
-
681
667
  rule_file = [
682
668
  'rule SearchForText { meta: description = "Contains the text AAAABBBBCCCC" strings: $text = "AAAABBBBCCCC" condition: $text }',
683
669
  'rule SearchForText2 { meta: description = "Contains the text DDDDEEEEFFFF" strings: $text2 = "DDDDEEEEFFFF" condition: $text2 }',
@@ -711,7 +697,6 @@ class TestExcavateSpiderDedupe(ModuleTestBase):
711
697
  module_test.httpserver.expect_request("/spider").respond_with_data("hi")
712
698
 
713
699
  def check(self, module_test, events):
714
-
715
700
  found_url_unverified_spider_max = False
716
701
  found_url_unverified_dummy = False
717
702
  found_url_event = False
@@ -726,7 +711,7 @@ class TestExcavateSpiderDedupe(ModuleTestBase):
726
711
  if (
727
712
  str(e.module) == "dummy_module"
728
713
  and "spider-danger" not in e.tags
729
- and not "spider-max" in e.tags
714
+ and "spider-max" not in e.tags
730
715
  ):
731
716
  found_url_unverified_dummy = True
732
717
  if e.type == "URL" and e.data == "http://127.0.0.1:8888/spider":
@@ -803,7 +788,6 @@ class TestExcavate_retain_querystring(ModuleTestBase):
803
788
 
804
789
 
805
790
  class TestExcavate_retain_querystring_not(TestExcavate_retain_querystring):
806
-
807
791
  config_overrides = {
808
792
  "url_querystring_remove": False,
809
793
  "url_querystring_collapse": False,
@@ -827,7 +811,6 @@ class TestExcavate_retain_querystring_not(TestExcavate_retain_querystring):
827
811
 
828
812
 
829
813
  class TestExcavate_webparameter_outofscope(ModuleTestBase):
830
-
831
814
  html_body = "<html><a class=button href='https://socialmediasite.com/send?text=foo'><a class=button href='https://outofscope.com/send?text=foo'></html>"
832
815
 
833
816
  targets = ["http://127.0.0.1:8888", "socialmediasite.com"]
@@ -858,13 +841,11 @@ class TestExcavate_webparameter_outofscope(ModuleTestBase):
858
841
 
859
842
 
860
843
  class TestExcavateHeaders(ModuleTestBase):
861
-
862
844
  targets = ["http://127.0.0.1:8888/"]
863
845
  modules_overrides = ["excavate", "httpx", "hunt"]
864
846
  config_overrides = {"web": {"spider_distance": 1, "spider_depth": 1}}
865
847
 
866
848
  async def setup_before_prep(self, module_test):
867
-
868
849
  module_test.httpserver.expect_request("/").respond_with_data(
869
850
  "<html><p>test</p></html>",
870
851
  status=200,
@@ -877,7 +858,6 @@ class TestExcavateHeaders(ModuleTestBase):
877
858
  )
878
859
 
879
860
  def check(self, module_test, events):
880
-
881
861
  found_first_cookie = False
882
862
  found_second_cookie = False
883
863
 
@@ -888,8 +868,8 @@ class TestExcavateHeaders(ModuleTestBase):
888
868
  if e.data["name"] == "COOKIE2":
889
869
  found_second_cookie = True
890
870
 
891
- assert found_first_cookie == True
892
- assert found_second_cookie == True
871
+ assert found_first_cookie is True
872
+ assert found_second_cookie is True
893
873
 
894
874
 
895
875
  class TestExcavateRAWTEXT(ModuleTestBase):
@@ -977,12 +957,12 @@ A href <a href='/donot_detect.js'>Click me</a>"""
977
957
 
978
958
  async def setup_after_prep(self, module_test):
979
959
  module_test.set_expect_requests(
980
- dict(uri="/"),
981
- dict(response_data='<a href="/Test_PDF"/>'),
960
+ {"uri": "/"},
961
+ {"response_data": '<a href="/Test_PDF"/>'},
982
962
  )
983
963
  module_test.set_expect_requests(
984
- dict(uri="/Test_PDF"),
985
- 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"}},
986
966
  )
987
967
 
988
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",