<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Preston P</title>
    <description>The latest articles on DEV Community by Preston P (@cyber_preston).</description>
    <link>https://dev.to/cyber_preston</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4018570%2F48d061af-73d7-41d9-ab47-a8a93530fee5.png</url>
      <title>DEV Community: Preston P</title>
      <link>https://dev.to/cyber_preston</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/cyber_preston"/>
    <language>en</language>
    <item>
      <title>subdomain enumerator</title>
      <dc:creator>Preston P</dc:creator>
      <pubDate>Mon, 17 Aug 2026 02:39:01 +0000</pubDate>
      <link>https://dev.to/cyber_preston/subdomain-enumerator-4ic6</link>
      <guid>https://dev.to/cyber_preston/subdomain-enumerator-4ic6</guid>
      <description>&lt;h1&gt;
  
  
  Finding Hidden Subdomains: Building a Subdomain Enumerator in Python
&lt;/h1&gt;

&lt;p&gt;I recently built my third cybersecurity tool — a subdomain enumerator that finds hidden subdomains of a target domain. Here's how I built it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is a Subdomain Enumerator?
&lt;/h2&gt;

&lt;p&gt;A subdomain enumerator finds all the subdomains of a domain. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.example.com" rel="noopener noreferrer"&gt;www.example.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;mail.example.com&lt;/li&gt;
&lt;li&gt;admin.example.com&lt;/li&gt;
&lt;li&gt;dev.example.com&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Loads a wordlist of common subdomain names&lt;/li&gt;
&lt;li&gt;Tries to resolve each one using DNS&lt;/li&gt;
&lt;li&gt;Prints the ones that exist&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Code
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Get a list of common subdomains (from a wordlist file)&lt;/li&gt;
&lt;li&gt;For each subdomain, combine it with the target domain&lt;/li&gt;
&lt;li&gt;Try to resolve it to an IP address using DNS&lt;/li&gt;
&lt;li&gt;If it resolves → the subdomain exists!&lt;/li&gt;
&lt;li&gt;Print it and save it&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;I learned that subdomains are important in the field of cybersecurity since it relates to ethical hacking. Defenders use this to find weak points and find out what to protect. In this project I also learned how the internet works with this code. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Full Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/notserp55" rel="noopener noreferrer"&gt;
        notserp55
      &lt;/a&gt; / &lt;a href="https://github.com/notserp55/subdomain-enumerator" rel="noopener noreferrer"&gt;
        subdomain-enumerator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A tool that finds all subdomains of a target domain.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🔍 Subdomain Enumerator&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://python.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fd2fc75b00b01b0a9fe1c9b3f5c00dd0ec4e98a0fb646f05a0f45537fbe23f17/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f707974686f6e2d332e362b2d626c75652e737667" alt="Python Version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/notserp55/subdomain-enumerator/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8bb50fd2278f18fc326bf71f6e88ca8f884f72f179d3e555e20ed30157190d0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e2e737667" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A powerful, multi-threaded subdomain enumeration tool written in Python. Find all subdomains of a target domain using DNS resolution and HTTP checks.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🎯 What It Does&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;A &lt;strong&gt;subdomain enumerator&lt;/strong&gt; finds all the subdomains associated with a target domain.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Why This Matters&lt;/h3&gt;
&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Use Case&lt;/th&gt;
&lt;th&gt;Explanation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🔐 Security Research&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Discover attack surfaces and hidden services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🔎 OSINT&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gather public information about a target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🐛 Bug Bounty&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Find subdomains for vulnerability testing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🛡️ Defensive Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Identify unauthorized or forgotten services&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;📊 Asset Discovery&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Know what you own and need to protect&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🚀 Multi-threaded&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Fast scanning using concurrent threads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🌐 DNS Resolution&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Checks if subdomains actually exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🌍 HTTP/HTTPS Detection&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Identifies if subdomains have websites&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;📝 Custom Wordlist Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Use your own subdomain list&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;💻 Command-Line Interface&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Professional tool design&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;💾 Results Saving&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automatically saves findings to a file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;🛡️ Error Handling&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Graceful handling of DNS failures&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/notserp55/subdomain-enumerator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>cybersecurity</category>
      <category>python</category>
      <category>beginners</category>
      <category>coding</category>
    </item>
    <item>
      <title>Password Checker</title>
      <dc:creator>Preston P</dc:creator>
      <pubDate>Wed, 15 Jul 2026 21:50:43 +0000</pubDate>
      <link>https://dev.to/cyber_preston/password-checker-547f</link>
      <guid>https://dev.to/cyber_preston/password-checker-547f</guid>
      <description>&lt;h1&gt;
  
  
  Building a Password Checker: Strength + Breach Detection in Python
&lt;/h1&gt;

&lt;p&gt;I recently built my second cybersecurity tool — a password checker that does two things: analyzes password strength AND checks if it's been leaked in a data breach. Here's how I built it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Inspiration
&lt;/h2&gt;

&lt;p&gt;After building my first tool (a multi-threaded port scanner), I wanted to tackle something directly related to everyday security. Passwords are everywhere, and most people don't know if their passwords are strong or if they've been exposed in a breach.&lt;/p&gt;

&lt;p&gt;I wanted to build a tool that would answer two questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Is this password strong?&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Has this password been leaked?&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🔐 1. Strength Analysis
&lt;/h3&gt;

&lt;p&gt;The tool checks five criteria and gives a score from 0-6:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criteria&lt;/th&gt;
&lt;th&gt;Points&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Length (12+ characters)&lt;/td&gt;
&lt;td&gt;+2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Length (8-11 characters)&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uppercase letters&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lowercase letters&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Numbers&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Symbols (!@#$%^&amp;amp;*)&lt;/td&gt;
&lt;td&gt;+1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Score Interpretation:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;5-6&lt;/td&gt;
&lt;td&gt;🟢 GREAT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;🟢 GOOD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;🟡 DECENT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0-2&lt;/td&gt;
&lt;td&gt;🔴 WEAK&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  🛡️ 2. Breach Detection
&lt;/h3&gt;

&lt;p&gt;The tool checks the HaveIBeenPwned API to see if your password appears in any known data breaches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it stays secure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your password is never sent over the internet&lt;/li&gt;
&lt;li&gt;Only the first 5 characters of the SHA-1 hash are sent&lt;/li&gt;
&lt;li&gt;This is called &lt;strong&gt;k-anonymity&lt;/strong&gt; — the API never sees your full password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Building this password checker taught me a lot about:&lt;/p&gt;

&lt;p&gt;Working with APIs&lt;/p&gt;

&lt;p&gt;Cryptographic hashing&lt;/p&gt;

&lt;p&gt;Privacy-first design&lt;/p&gt;

&lt;p&gt;Creating useful, user-friendly tools&lt;/p&gt;

&lt;p&gt;If you're learning cybersecurity or Python, I highly recommend building tools like this. You learn far more than you would from following tutorials alone.&lt;/p&gt;

&lt;p&gt;This is my second cybersecurity project. If I can build it, so can you. 🚀&lt;/p&gt;

</description>
      <category>python</category>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Port scanner Project</title>
      <dc:creator>Preston P</dc:creator>
      <pubDate>Thu, 09 Jul 2026 04:26:20 +0000</pubDate>
      <link>https://dev.to/cyber_preston/port-scanner-project-m38</link>
      <guid>https://dev.to/cyber_preston/port-scanner-project-m38</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Building My First Cybersecurity Tool:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A Multi-Threaded Port Scanner in Python&lt;/p&gt;

&lt;p&gt;A few weeks ago, I didn't know what a port was. Today, I built a tool that can scan 1,000 ports in under 10 seconds. Here's how I did it.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The Backstory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm a high school student interested in cybersecurity, and I wanted to build something real. Not just follow a tutorial, but actually create a tool from scratch.&lt;/p&gt;

&lt;p&gt;I decided to build a port scanner because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's a fundamental cybersecurity tool&lt;/li&gt;
&lt;li&gt;It would teach me networking basics&lt;/li&gt;
&lt;li&gt;I could use what I learned in Python class (AP CSP)&lt;/li&gt;
&lt;li&gt;I wanted something to put on my GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what I built:&lt;/p&gt;




&lt;p&gt;** What Is a Port Scanner?**&lt;/p&gt;

&lt;p&gt;Think of a computer like a huge apartment building with 1,000 numbered doors (ports). Each door leads to a different service:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Port&lt;/th&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;Websites (HTTP)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;td&gt;Secure websites (HTTPS)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;td&gt;Remote access (SSH)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3306&lt;/td&gt;
&lt;td&gt;Databases (MySQL)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A port scanner "knocks" on each door to see which ones are open. If a door is open, there might be a service running that could be a security risk (or just something useful!).&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Building this port scanner taught me more than any textbook could. If you're interested in cybersecurity, I highly recommend building your own tools — it's the best way to understand how things actually work.&lt;/p&gt;

&lt;p&gt;Thanks for reading! Feel free to ask questions or suggest improvements.&lt;/p&gt;

</description>
      <category>python</category>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
