<?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: Shlok Shah</title>
    <description>The latest articles on DEV Community by Shlok Shah (@shlokkokk).</description>
    <link>https://dev.to/shlokkokk</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%2F4035042%2Fddc36cb4-5b74-48a6-9680-932c3a866553.jpg</url>
      <title>DEV Community: Shlok Shah</title>
      <link>https://dev.to/shlokkokk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shlokkokk"/>
    <language>en</language>
    <item>
      <title>I kept losing scan chains to timeouts and copy-paste errors, so I built a recon-to-exploitation orchestrator instead of another scanner</title>
      <dc:creator>Shlok Shah</dc:creator>
      <pubDate>Tue, 28 Jul 2026 11:59:00 +0000</pubDate>
      <link>https://dev.to/shlokkokk/i-kept-losing-scan-chains-to-timeouts-and-copy-paste-errors-so-i-built-a-recon-to-exploitation-1jof</link>
      <guid>https://dev.to/shlokkokk/i-kept-losing-scan-chains-to-timeouts-and-copy-paste-errors-so-i-built-a-recon-to-exploitation-1jof</guid>
      <description>&lt;p&gt;Every engagement I ran involved the same 30+ tools, run in roughly the same order — but never actually &lt;em&gt;chained&lt;/em&gt;: subfinder to find subdomains, then dnsx, httpx, naabu, nuclei for the recon side, then a second wave of SQLMap, Dalfox, Jaeles, Nikto once targets were confirmed live, then manually copying output between each so the next tool had the right input file. If step 4 of 30 failed silently, I wouldn't notice until the report came back with a missing section three hours later.&lt;/p&gt;

&lt;p&gt;The tools themselves are excellent. The problem was the wiring between them across the &lt;em&gt;entire&lt;/em&gt; pipeline — not just enumeration, but the vulnerability scanning and exploitation steps after it too.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Oculus&lt;/strong&gt; — a single-file Python orchestrator that chains ~30 industry-standard CLI tools across &lt;strong&gt;five phases — discovery, infrastructure mapping, content discovery, vulnerability analysis, and targeted exploitation&lt;/strong&gt; — with actual orchestration logic on top, not just a bash script gluing stdout to stdin.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Code&lt;/strong&gt;: &lt;a href="https://github.com/shlokkokk/Oculus" rel="noopener noreferrer"&gt;https://github.com/shlokkokk/Oculus&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it in three commands
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/shlokkokk/Oculus.git oculus &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;oculus
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x install.sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; ./install.sh
python3 oculus.py &lt;span class="nt"&gt;-d&lt;/span&gt; example.com &lt;span class="nt"&gt;--full-recon&lt;/span&gt; &lt;span class="nt"&gt;--no-confirm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That runs subdomain enum → resolution → alive hosts → ports → nuclei, then spits out &lt;code&gt;output-example.com/report.html&lt;/code&gt;. Or skip the subset and run everything:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 oculus.py &lt;span class="nt"&gt;-d&lt;/span&gt; example.com &lt;span class="nt"&gt;--full-spectrum&lt;/span&gt; &lt;span class="nt"&gt;--no-confirm&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The four problems actually worth solving
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Silent failures.&lt;/strong&gt; Most recon scripts treat "the tool ran" and "the tool worked" as the same thing. Oculus gives every module an explicit status:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;OK&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Finished with usable output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Skipped&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing tool, missing input, or no API key — step didn't run&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Partial&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Ran but some sub-tools timed out or degraded&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Failed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Critical failure — e.g. every subdomain tool errored out&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That distinction matters: a &lt;code&gt;Partial&lt;/code&gt; on Nikto shouldn't block your report, but a &lt;code&gt;Failed&lt;/code&gt; on subdomain enum means everything downstream is garbage — you need to know that immediately, not after reading a report with an empty findings section.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Fixed timeouts don't scale.&lt;/strong&gt; A 600-second cap makes sense for a 50-host scan and is actively wrong for a 5,000-host one. Oculus scales timeouts to the size of the target list instead of using one constant everywhere, so large scopes don't get killed mid-run just because the number was tuned for a small test case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Losing a scan to a crash.&lt;/strong&gt; Session state gets written to &lt;code&gt;output-&amp;lt;domain&amp;gt;/session.json&lt;/code&gt; after each module completes, so a killed process resumes from where it left off instead of restarting the whole 36-module chain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Babysitting a terminal for hours.&lt;/strong&gt; Full Spectrum runs all 36 modules across 5 concurrent phases, which can run long. Oculus pushes one consolidated push notification per module via &lt;a href="https://ntfy.sh" rel="noopener noreferrer"&gt;ntfy&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;ntfy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://ntfy.sh/your-topic"&lt;/span&gt;
  &lt;span class="na"&gt;send_module_complete&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;   &lt;span class="c1"&gt;# one ping per module, not per finding&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each ping has target, phase, status, per-tool line counts, and merged totals (unique subdomains, alive hosts, vulns) — so you can walk away from the terminal without losing track.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full pipeline — not just recon
&lt;/h2&gt;

&lt;p&gt;Running everything (&lt;code&gt;--full-spectrum&lt;/code&gt;) walks all 36 modules through 5 phases, each with its own concurrency model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PHASE 1 · DISCOVERY
  Subdomain Enum → DNS Bruteforce → DNS Resolution → Alive Hosts → TLS Scan
  + concurrent: ASN mapping, cloud asset probing, OSINT, Shodan, GitHub dorking

PHASE 2 · INFRASTRUCTURE
  Fast port scan + tech fingerprinting + WAF detection + screenshots, concurrently
  + full Nmap port scan and Nikto run in the background

PHASE 3 · CONTENT DISCOVERY
  URL collection → advanced crawl (hakrawler) → parameter mining + JS endpoint extraction
  + subdomain takeover checks, Cariddi crawl in the background

PHASE 4 · VULNERABILITY ANALYSIS
  Nuclei → GF pattern filtering, directory + API fuzzing concurrently
  + Jaeles signature scanning in the background

PHASE 5 · TARGETED EXPLOITATION
  SQLMap + Ghauri (SQLi), Dalfox (XSS), open redirect, CRLF injection,
  SSTI (Tplmap), 403 bypass, CORS misconfig, HTTP smuggling — all concurrent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That fifth phase is the part people miss when they hear "recon tool" — Oculus isn't stopping at "here are your live subdomains." It runs SQLMap/Ghauri, Dalfox, Tplmap, and CRLFuzz against confirmed live targets automatically, with the same status tracking and resumability as every earlier phase.&lt;/p&gt;

&lt;p&gt;If you don't want the full run, there are two lighter presets: &lt;code&gt;--full-recon&lt;/code&gt; (just the core 8-step discovery chain, 15-45 min) and &lt;code&gt;--deep&lt;/code&gt; (a fixed 14-step advanced chain assuming recon's already done). Full Spectrum is the one that goes end to end.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually running under the hood
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discovery&lt;/strong&gt;: subfinder, amass, assetfinder → dnsx → httpx → naabu/nmap, katana/gau/waybackurls, hakrawler&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Infrastructure &amp;amp; content&lt;/strong&gt;: wafw00f, whatweb, gowitness/EyeWitness, ParamSpider/Arjun, LinkFinder, Cariddi, subzy, tlsx&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vulnerability analysis&lt;/strong&gt;: nuclei, gf, ffuf, Kiterunner, Jaeles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Exploitation&lt;/strong&gt;: SQLMap + Ghauri, Dalfox, Tplmap, CRLFuzz, nomore403, custom CORS/redirect/smuggling probes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OSINT &amp;amp; passive intel&lt;/strong&gt;: theHarvester, Shodan + InternetDB, GitHub code search, ASN/cloud bucket probing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orchestrator&lt;/strong&gt;: pure Python 3.8+, no framework — just &lt;code&gt;requests&lt;/code&gt;, &lt;code&gt;dnspython&lt;/code&gt;, &lt;code&gt;tldextract&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reports&lt;/strong&gt;: HTML, JSON, and Markdown generated from the same session data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New in v4.2&lt;/strong&gt;: a full web UI (FastAPI backend, React/Vite frontend) for running scans, watching live output, and browsing reports in-browser — including a screenshot review tab that groups captures by domain&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'd actually want feedback on
&lt;/h2&gt;

&lt;p&gt;The timeout-scaling formula and the four-state module status model are the two design decisions I iterated on the most, and I'm not fully convinced I've got them right yet. If you run recon pipelines regularly — what's your failure mode? Silent tool failures, timeout tuning, or something else entirely?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Only point this at systems you own or have written permission to test&lt;/strong&gt; — it's built for authorized engagements and CTFs, not opportunistic scanning.&lt;/p&gt;

&lt;p&gt;⭐ If you find it useful: &lt;a href="https://github.com/shlokkokk/Oculus" rel="noopener noreferrer"&gt;https://github.com/shlokkokk/Oculus&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>python</category>
      <category>opensource</category>
      <category>infosec</category>
    </item>
    <item>
      <title>Building Watchtower: An Autonomous Portfolio Intelligence System with Real-Time Cross-Platform Telemetry</title>
      <dc:creator>Shlok Shah</dc:creator>
      <pubDate>Tue, 21 Jul 2026 16:23:36 +0000</pubDate>
      <link>https://dev.to/shlokkokk/building-watchtower-an-autonomous-portfolio-intelligence-system-with-real-time-cross-platform-1685</link>
      <guid>https://dev.to/shlokkokk/building-watchtower-an-autonomous-portfolio-intelligence-system-with-real-time-cross-platform-1685</guid>
      <description>&lt;p&gt;When shipping and maintaining open-source projects, monitoring portfolio performance across the web is surprisingly fragmented.&lt;/p&gt;

&lt;p&gt;Developers often manually check GitHub for stars and forks, browse Hacker News or Dev.to to see if recent posts received traction, and guess whether their project documentation has fallen out of sync with active codebase updates.&lt;/p&gt;

&lt;p&gt;To solve this, I built Watchtower—an autonomous, open-source portfolio intelligence command center that monitors repository metrics, auto-discovers cross-platform mentions, predicts star milestone trajectories, and dispatches real-time telemetry alerts directly to mobile devices.&lt;/p&gt;




&lt;h3&gt;
  
  
  Key Architectural &amp;amp; Functional Highlights
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Real-Time Mobile Telemetry (Telegram &amp;amp; Discord)
&lt;/h4&gt;

&lt;p&gt;Watchtower monitors repository changes and cross-platform traction, sending structured notifications to your phone via Telegram Bot API and Discord Webhooks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Star &amp;amp; Fork Alerts:&lt;/strong&gt; Displays exact stargazer and fork growth alongside 14-day top traffic referrers (&lt;code&gt;+1 star (1 -&amp;gt; 2 total)&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reaction &amp;amp; Comment Alerts:&lt;/strong&gt; Detects reader interactions on Dev.to and Hacker News posts with exact deltas (&lt;code&gt;+1 new comment (7 -&amp;gt; 8 total)&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Traffic Spike Alerts:&lt;/strong&gt; Triggers instant momentum warnings when page views surge by +25 or Hacker News points increase by +5.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Cross-Platform Auto-Discovery Engine
&lt;/h4&gt;

&lt;p&gt;Rather than requiring manual log entries for every blog post or forum launch, Watchtower automatically queries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dev.to REST API:&lt;/strong&gt; Inspects published article metadata and body markdown for embedded repository URLs, tracking page views, reactions, and comments.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hacker News Algolia API:&lt;/strong&gt; Discovers Show HN submissions and discussion threads pointing to your GitHub repositories.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Predictive Star Milestone Velocity
&lt;/h4&gt;

&lt;p&gt;Using a rolling 7-day historical log of individual repository star counts, Watchtower calculates daily star growth speed and projects the estimated days remaining to reach upcoming milestone thresholds (10, 25, 50, 100, 250, 500, 1000 stars).&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Automated README Staleness Detection
&lt;/h4&gt;

&lt;p&gt;Documentation often lags behind active development. Watchtower queries commit histories to compare the last modification date of &lt;code&gt;README.md&lt;/code&gt; against general repository push timestamps. If codebase updates are more than 30 days newer than the README, Watchtower flags the project with a staleness warning.&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Actionable Weekly Recommendations
&lt;/h4&gt;

&lt;p&gt;Watchtower evaluates conversion ratios (page views vs. star velocity), inactivity duration, and launch performance to generate rule-based weekly action items (e.g., &lt;em&gt;"Receiving traffic but 0 stars — consider reviewing repository description and Topics to improve conversion"&lt;/em&gt;).&lt;/p&gt;




&lt;h3&gt;
  
  
  Tech Stack &amp;amp; Security Model
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend Command Center:&lt;/strong&gt; React, Vite, Vanilla CSS, Recharts, Lucide Icons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend Automation:&lt;/strong&gt; Node.js, Octokit REST API, Dev.to API, Algolia Search API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Notification Gateways:&lt;/strong&gt; Telegram Bot API and Discord Webhooks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security &amp;amp; Privacy:&lt;/strong&gt; Zero API secrets bundled in the client build; all serverless interactions use authenticated proxy gateways.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Open Source &amp;amp; Community Feedback
&lt;/h3&gt;

&lt;p&gt;Watchtower is completely open source and free to self-host on Vercel or schedule via GitHub Actions cron workflows.&lt;/p&gt;

&lt;p&gt;If you find Watchtower useful or interesting, dropping a star on the GitHub repository means a lot and helps the project grow!&lt;/p&gt;

&lt;p&gt;GitHub Repository:&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/shlokkokk/Watchtower" rel="noopener noreferrer"&gt;https://github.com/shlokkokk/Watchtower&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would love to hear feedback and ideas from the developer community. What metrics or automated workflows do you currently use to manage your open-source portfolio?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>github</category>
    </item>
    <item>
      <title>I was tired of studying security tools from static cheatsheets, so I built ShellStack</title>
      <dc:creator>Shlok Shah</dc:creator>
      <pubDate>Sat, 18 Jul 2026 09:41:35 +0000</pubDate>
      <link>https://dev.to/shlokkokk/i-was-tired-of-studying-security-tools-from-static-cheatsheets-so-i-built-shellstack-46d6</link>
      <guid>https://dev.to/shlokkokk/i-was-tired-of-studying-security-tools-from-static-cheatsheets-so-i-built-shellstack-46d6</guid>
      <description>&lt;h2&gt;
  
  
  I was tired of studying security tools from static cheatsheets, so I built ShellStack
&lt;/h2&gt;

&lt;p&gt;When I started prepping for CEH and doing more CTFs, I ran into the same wall over and over: every resource for learning offensive security tools was either a wall of text in a PDF, a GitHub gist with no context, or a cheatsheet that assumed you already knew what half the flags did.&lt;/p&gt;

&lt;p&gt;I didn't want notes. I wanted something that felt like sitting at an actual terminal — where I could browse tools, see real commands with context, and build the exact command I needed without digging through five tabs.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;ShellStack&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;🔗 Live: &lt;a href="https://shell-stack.vercel.app/" rel="noopener noreferrer"&gt;https://shell-stack.vercel.app/&lt;/a&gt;&lt;br&gt;
💻 Code: &lt;a href="https://github.com/shlokkokk/ShellStack" rel="noopener noreferrer"&gt;https://github.com/shlokkokk/ShellStack&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What it actually does
&lt;/h3&gt;

&lt;p&gt;ShellStack is a cybersecurity study platform built around one idea: learning security tools should feel operational, not passive.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;280+ curated offensive security tools&lt;/strong&gt;, organized into 19 categories, each with deep-dive docs — commands, common flags, when to use it, installation notes, and real examples&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive command builders&lt;/strong&gt; — instead of memorizing flag combos, you fill in a form and get a ready-to-copy command generated live&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;20 CEH-aligned learning modules&lt;/strong&gt;, built for structured study instead of flipping through slides&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;1,000+ command cheat sheet&lt;/strong&gt; with fast search and one-click copy&lt;/li&gt;
&lt;li&gt;A terminal-inspired UI that actually feels like a cyber-ops console instead of another docs site&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The build
&lt;/h3&gt;

&lt;p&gt;Stack: &lt;strong&gt;React 19, TypeScript, Vite, Tailwind CSS, GSAP, React Router, Radix UI primitives&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A few things I focused on:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Search that actually ranks results.&lt;/strong&gt; Early on, tool search was just naive string matching, which meant typing "nmap" could bury the actual Nmap entry under ten unrelated tools that happened to mention it in a description. I rebuilt it to weight exact and prefix matches higher, so the tool you're looking for shows up first, not buried on page 3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command builders that don't feel like a form.&lt;/strong&gt; The tricky part wasn't the UI, it was designing a data model that could represent wildly different tools (a text-flag-heavy tool like Nmap vs. a mostly-positional-args tool) without a special case for every single one. Each tool's builder config lives in its own data file, so adding a new interactive tool doesn't mean touching the builder logic itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content as data, not hardcoded pages.&lt;/strong&gt; All 280+ tools and 20 CEH modules live in structured data files (&lt;code&gt;src/data/tools/&lt;/code&gt;, &lt;code&gt;src/data/modules/&lt;/code&gt;), not scattered across component files. This means the entire tool directory, cheat sheet, and CEH explorer all pull from the same source of truth — adding a new tool is a data entry, not a new component.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's next
&lt;/h3&gt;

&lt;p&gt;I'm still refining the command builder UX — it works, but I'm not 100% sure it's intuitive for someone seeing it cold. If you try it out, I'd genuinely love to know where it trips you up.&lt;/p&gt;

&lt;p&gt;Also planning to expand the CEH module coverage and add a few more interactive builders for tools that currently only have static command references.&lt;/p&gt;

&lt;h3&gt;
  
  
  Try it
&lt;/h3&gt;

&lt;p&gt;If you're studying for CEH, doing CTFs, or just want a faster way to look up a tool's flags without leaving your browser tab, take it for a spin:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://shell-stack.vercel.app/" rel="noopener noreferrer"&gt;https://shell-stack.vercel.app/&lt;/a&gt;&lt;br&gt;
⭐ Star it on GitHub if it's useful: &lt;a href="https://github.com/shlokkokk/ShellStack" rel="noopener noreferrer"&gt;https://github.com/shlokkokk/ShellStack&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feedback, issues, and PRs are all welcome — this is very much a living project.&lt;/p&gt;

</description>
      <category>security</category>
      <category>react</category>
      <category>typescript</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
