<?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: MrEchoFi</title>
    <description>The latest articles on DEV Community by MrEchoFi (@tanjib_isham_f10d7c4a7eb4).</description>
    <link>https://dev.to/tanjib_isham_f10d7c4a7eb4</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%2F3060433%2Fa49d2a1c-ae22-4b7d-9aab-0bda3613922d.jpg</url>
      <title>DEV Community: MrEchoFi</title>
      <link>https://dev.to/tanjib_isham_f10d7c4a7eb4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tanjib_isham_f10d7c4a7eb4"/>
    <language>en</language>
    <item>
      <title>BannerGrapV2 — The Open-Source Network Recon Tool Built in Go That Security Professionals Actually Need</title>
      <dc:creator>MrEchoFi</dc:creator>
      <pubDate>Fri, 26 Jun 2026 19:33:53 +0000</pubDate>
      <link>https://dev.to/tanjib_isham_f10d7c4a7eb4/bannergrapv2-the-open-source-network-recon-tool-built-in-go-that-security-professionals-actually-3j55</link>
      <guid>https://dev.to/tanjib_isham_f10d7c4a7eb4/bannergrapv2-the-open-source-network-recon-tool-built-in-go-that-security-professionals-actually-3j55</guid>
      <description>&lt;h2&gt;
  
  
  BannerGrapV2 — The Open-Source Network Recon Tool Built in Go That Security Professionals Actually Need
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — BannerGrapV2 is a production-grade, multi-protocol network reconnaissance and vulnerability discovery tool written in Go. It replaces a fragmented toolchain of Nmap, custom scripts, and manual banner grabbers with a single binary capable of scanning 10,000 hosts concurrently across HTTP, HTTPS, SSH, FTP, SMTP, Telnet, and custom TCP protocols — all with structured JSON, CSV, or HTML output.&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/MrEchoFi/BannerGrapV2" rel="noopener noreferrer"&gt;github.com/MrEchoFi/BannerGrapV2&lt;/a&gt;&lt;br&gt;
⭐ &lt;strong&gt;If this saves you time, a star on GitHub keeps the project alive.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  The Problem With Your Current Recon Workflow
&lt;/h2&gt;

&lt;p&gt;If you work in penetration testing, red team ops, bug bounty hunting, or security engineering, you already know what a typical recon session looks like. You fire up Nmap for port discovery, run a separate Python script for banner grabbing, manually check SSL certificate details, then spend twenty minutes stitching three different output formats together before you can actually do anything useful.&lt;/p&gt;

&lt;p&gt;This is the workflow that BannerGrapV2 was built to collapse into a single, reliable, fast tool.&lt;/p&gt;

&lt;p&gt;Built in &lt;strong&gt;Go&lt;/strong&gt; — specifically for its native goroutine concurrency model — BannerGrapV2 handles the full recon-through-reporting pipeline without the performance ceiling you hit with Python-based tools or the dependency hell of multi-tool chains.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who Should Keep Reading
&lt;/h2&gt;

&lt;p&gt;This tool is relevant to you if you are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;penetration tester or red teamer&lt;/strong&gt; who needs fast, structured reconnaissance output before moving to exploitation&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;bug bounty hunter&lt;/strong&gt; working large scope targets with hundreds or thousands of in-scope hosts&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;SOC analyst or blue teamer&lt;/strong&gt; running asset inventory or exposure monitoring on internal infrastructure&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;DevSecOps engineer&lt;/strong&gt; looking to integrate automated service fingerprinting into a CI/CD pipeline&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;network or sysadmin&lt;/strong&gt; who needs periodic LAN audits with exportable reports&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If none of that applies, this post probably isn't for you.&lt;/p&gt;




&lt;h2&gt;
  
  
  What BannerGrapV2 Does — Feature Breakdown
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core Reconnaissance Engine
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-threaded banner grabbing&lt;/strong&gt; — up to 10,000 concurrent hosts via Go goroutines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-protocol support&lt;/strong&gt; — HTTP, HTTPS, FTP, SMTP, SSH, Telnet, raw TCP, and fully custom payloads&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service fingerprinting&lt;/strong&gt; across 1,000+ protocol signatures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSL/TLS certificate analysis&lt;/strong&gt; — issuer, expiry, version, cipher grade&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP header enumeration&lt;/strong&gt; — server version, security headers, redirects&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DNS resolution and information gathering&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nmap integration&lt;/strong&gt; for deeper port-level data&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security Analysis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Vulnerability detection engine with CVE cross-referencing&lt;/li&gt;
&lt;li&gt;Weak credential detection (brute force via SecLists-compatible wordlists)&lt;/li&gt;
&lt;li&gt;Misconfiguration identification&lt;/li&gt;
&lt;li&gt;Exploit suggestion framework based on fingerprinted service versions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Performance Design
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concurrent scanning&lt;/strong&gt; up to 10,000 hosts&lt;/li&gt;
&lt;li&gt;Adaptive rate limiting to respect scope and avoid unintentional DoS&lt;/li&gt;
&lt;li&gt;Smart timeout handling per-protocol&lt;/li&gt;
&lt;li&gt;Memory-efficient design — no swap abuse on large host lists&lt;/li&gt;
&lt;li&gt;Ability to resume failed or interrupted scans&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reporting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JSON, CSV, XML, HTML&lt;/strong&gt; output — ready for SIEM ingestion, Excel analysis, or client reports&lt;/li&gt;
&lt;li&gt;Color-coded, readable terminal output&lt;/li&gt;
&lt;li&gt;Executive summary mode for client-facing reports&lt;/li&gt;
&lt;li&gt;Integration-ready API output format&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Installation — Pick Your Method
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Option 1: Pre-built Binary (Fastest)
&lt;/h3&gt;

&lt;p&gt;No Go installation required.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Linux / macOS&lt;/span&gt;
curl &lt;span class="nt"&gt;-L&lt;/span&gt; https://github.com/MrEchoFi/BannerGrapV2/releases/latest/download/bannergrapv2-linux-amd64 &lt;span class="nt"&gt;-o&lt;/span&gt; bannergrapv2
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x bannergrapv2
&lt;span class="nb"&gt;sudo mv &lt;/span&gt;bannergrapv2 /usr/local/bin/

&lt;span class="c"&gt;# Verify&lt;/span&gt;
bannergrapv2 &lt;span class="nt"&gt;-h&lt;/span&gt;
bannergrapv2 &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Windows (PowerShell — run as Administrator)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;Invoke-WebRequest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;-Uri&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://github.com/MrEchoFi/BannerGrapV2/releases/latest/download/bannergrapv2-windows-amd64.exe"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="se"&gt;`
&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;-OutFile&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bannergrapv2.exe"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option 2: Build from Source (Go 1.21+)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/MrEchoFi/BannerGrapV2.git
&lt;span class="nb"&gt;cd &lt;/span&gt;BannerGrapV2
go build &lt;span class="nt"&gt;-o&lt;/span&gt; bannergrapv2 &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="nb"&gt;sudo mv &lt;/span&gt;bannergrapv2 /usr/local/bin/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option 3: Docker (Isolated Lab Environment)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/MrEchoFi/BannerGrapV2.git
&lt;span class="nb"&gt;cd &lt;/span&gt;BannerGrapV2
docker build &lt;span class="nt"&gt;-t&lt;/span&gt; bannerv2 &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# Run&lt;/span&gt;
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; bannerv2

&lt;span class="c"&gt;# Or with volume mount for output files&lt;/span&gt;
docker run &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/output:/output bannerv2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Option 4: Kubernetes (Scale-Out Deployment)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Spin up a local cluster with Minikube&lt;/span&gt;
minikube start &lt;span class="nt"&gt;--driver&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;docker
minikube addons &lt;span class="nb"&gt;enable &lt;/span&gt;default-storageclass

&lt;span class="c"&gt;# Deploy using the included manifests&lt;/span&gt;
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x start_banner.sh
./start_banner.sh

&lt;span class="c"&gt;# Or deploy manually&lt;/span&gt;
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; bannerv2-deploy.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; bannerv2-service.yaml
kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; bannerv2-job.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Command Reference — Real-World Scenarios
&lt;/h2&gt;

&lt;p&gt;This is the part most documentation misses. Here are commands mapped to actual situations you encounter in the field.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔹 Scenario 1: Pentest Engagement — Initial Recon on a /24 Network
&lt;/h3&gt;

&lt;p&gt;You just received scope. Your first job is to understand what's listening on the network before you start probing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Generate your target list:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Generate all IPs in a /24 subnet&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;seq &lt;/span&gt;1 254&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"192.168.1.&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; targets.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — Sweep the subnet across all major protocols with 50 threads:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;proto &lt;span class="k"&gt;in &lt;/span&gt;http https ftp ssh smtp&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; &lt;span class="nv"&gt;$proto&lt;/span&gt; &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 2 &lt;span class="nt"&gt;-o&lt;/span&gt; scan_&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;proto&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;.json
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# Merge all protocol results into one file (requires jq)&lt;/span&gt;
jq &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;'add'&lt;/span&gt; scan_&lt;span class="k"&gt;*&lt;/span&gt;.json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; full_recon_combined.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3 — Generate an HTML report for the team:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; http &lt;span class="nt"&gt;--report-html&lt;/span&gt; recon_report.html &lt;span class="nt"&gt;-threads&lt;/span&gt; 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 2: Bug Bounty — Mass HTTPS Scan on 10,000 In-Scope Domains
&lt;/h3&gt;

&lt;p&gt;You're working a large program with thousands of in-scope subdomains. You need service fingerprints and banner data fast.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;10,000-host HTTPS scan, 500 threads, 2s timeout, CSV output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; ten_thousand_domains.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; https &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 443 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-payload&lt;/span&gt; &lt;span class="s2"&gt;"GET / HTTP/1.1&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;Host: %s&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;User-Agent: BannerGrapV2/2.0&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;Accept: */*&lt;/span&gt;&lt;span class="se"&gt;\r\n\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 500 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; bug_bounty_https_results.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Same scan, JSON output (for programmatic processing):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; ten_thousand_domains.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; https &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 443 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-payload&lt;/span&gt; &lt;span class="s2"&gt;"GET / HTTP/1.1&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;Host: %s&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;User-Agent: BannerGrapV2/2.0&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;Accept: */*&lt;/span&gt;&lt;span class="se"&gt;\r\n\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 500 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; bug_bounty_https_results.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Then grep for CVEs directly from the JSON output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"CVE-"&lt;/span&gt; bug_bounty_https_results.json | &lt;span class="nb"&gt;tee &lt;/span&gt;critical_findings.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 3: Red Team — Nmap + Masscan + BannerGrapV2 Combined Pipeline
&lt;/h3&gt;

&lt;p&gt;Use Masscan for raw port discovery at speed, then hand off to BannerGrapV2 for deep fingerprinting.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Step 1 — Fast port discovery with Masscan&lt;/span&gt;
masscan 192.168.1.0/24 &lt;span class="nt"&gt;-p1-65535&lt;/span&gt; &lt;span class="nt"&gt;--rate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;10000 &lt;span class="nt"&gt;-oG&lt;/span&gt; masscan.gnmap

&lt;span class="c"&gt;# Step 2 — Parse Masscan output to host:port format&lt;/span&gt;
&lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'/Ports:/{
  split($0,a,"Ports: ");
  split(a[2],b,",");
  for(i in b) {
    split(b[i],c,"/");
    print $2":"c[1]
  }
}'&lt;/span&gt; masscan.gnmap &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; masscan_targets.txt

&lt;span class="c"&gt;# Step 3 — Deep banner grab with BannerGrapV2&lt;/span&gt;
go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; masscan_targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; masscan_bannergrap_results.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, feed Nmap's live-host output directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-p-&lt;/span&gt; &lt;span class="nt"&gt;--open&lt;/span&gt; &lt;span class="nt"&gt;-oG&lt;/span&gt; - 192.168.1.0/24 &lt;span class="se"&gt;\&lt;/span&gt;
  | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'/Up$/{ip=$2} /Ports:/{
      split($0,a,"Ports: ");
      split(a[2],b,",");
      for(i in b) {split(b[i],c,"/"); print ip":"c[1]}
    }'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; all_open_targets.txt

go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; all_open_targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; full_aggressive_scan.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 4: SSH Brute Force with SecLists Wordlists
&lt;/h3&gt;

&lt;p&gt;Once you have a list of SSH targets, check for weak credentials against a proper wordlist.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Using SecLists (recommended)&lt;/span&gt;
&lt;span class="c"&gt;# usernames: SecLists/Usernames/top-usernames-shortlist.txt&lt;/span&gt;
&lt;span class="c"&gt;# passwords: SecLists/Passwords/Common-Credentials/10k-most-common.txt&lt;/span&gt;
&lt;span class="c"&gt;# or rockyou.txt for maximum coverage&lt;/span&gt;

go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; ssh_targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; ssh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--brute-userlist&lt;/span&gt; /path/to/SecLists/Usernames/top-usernames-shortlist.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--brute-passlist&lt;/span&gt; /path/to/SecLists/Passwords/Common-Credentials/10k-most-common.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; ssh_brute_results.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Single-target SSH brute force for targeted testing:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--brute-userlist&lt;/span&gt; usernames.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--brute-passlist&lt;/span&gt; passwords.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; ssh &lt;span class="se"&gt;\&lt;/span&gt;
  192.168.1.100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 5: Blue Team — Internal LAN Asset Inventory Audit
&lt;/h3&gt;

&lt;p&gt;You need a regular audit of what's actually exposed on your internal network. Run this weekly or drop it into a cron job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LAN HTTP sweep with 254 threads (one per host), 1s timeout:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; &amp;lt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;seq &lt;/span&gt;1 254&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"192.168.1.&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; http &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 80 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 254 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; lan_http_audit.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Full multi-protocol internal audit:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; internal_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; http  &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; internal_http.json
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; internal_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; https &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; internal_https.json
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; internal_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; ssh   &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; internal_ssh.json
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; internal_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; ftp   &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; internal_ftp.json
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; internal_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; smtp  &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; internal_smtp.json

&lt;span class="c"&gt;# Merge everything&lt;/span&gt;
jq &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;'add'&lt;/span&gt; internal_&lt;span class="k"&gt;*&lt;/span&gt;.json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; full_internal_audit.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Schedule it as a daily cron job at 2:00 AM:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add to crontab: crontab -e&lt;/span&gt;
0 2 &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt; /usr/bin/go run /opt/bannergrapv2/bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; /opt/scan/targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; https &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 20 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; /opt/scan/reports/daily_&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +&lt;span class="se"&gt;\%&lt;/span&gt;Y-&lt;span class="se"&gt;\%&lt;/span&gt;m-&lt;span class="se"&gt;\%&lt;/span&gt;d&lt;span class="si"&gt;)&lt;/span&gt;.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Pipe CVE alerts directly to email:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; http &lt;span class="nt"&gt;-threads&lt;/span&gt; 30 &lt;span class="nt"&gt;-o&lt;/span&gt; temp_scan.json
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"CVE-"&lt;/span&gt; temp_scan.json | mail &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"[ALERT] Critical Vulnerabilities Detected"&lt;/span&gt; security-team@yourorg.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 6: DevSecOps — CI/CD Pipeline Integration (GitHub Actions)
&lt;/h3&gt;

&lt;p&gt;Scan your staging or production environment after every deployment.&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="c1"&gt;# .github/workflows/security-scan.yml&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;BannerGrapV2 Security Scan&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;main&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;staging&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;schedule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;cron&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;0&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;2&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;*'&lt;/span&gt;  &lt;span class="c1"&gt;# Daily at 2 AM UTC&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;recon-scan&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/checkout@v3&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Download BannerGrapV2&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;curl -L https://github.com/MrEchoFi/BannerGrapV2/releases/latest/download/bannergrapv2-linux-amd64 -o bannergrapv2&lt;/span&gt;
          &lt;span class="s"&gt;chmod +x bannergrapv2&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Run Security Scan&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;./bannergrapv2 \&lt;/span&gt;
            &lt;span class="s"&gt;-f production_hosts.txt \&lt;/span&gt;
            &lt;span class="s"&gt;-proto https \&lt;/span&gt;
            &lt;span class="s"&gt;-threads 100 \&lt;/span&gt;
            &lt;span class="s"&gt;-timeout 5 \&lt;/span&gt;
            &lt;span class="s"&gt;-o scan_results.json&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Check for Critical CVEs&lt;/span&gt;
        &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
          &lt;span class="s"&gt;if grep -qi "CVE-" scan_results.json; then&lt;/span&gt;
            &lt;span class="s"&gt;echo "::error::Critical vulnerabilities detected!"&lt;/span&gt;
            &lt;span class="s"&gt;grep -i "CVE-" scan_results.json&lt;/span&gt;
            &lt;span class="s"&gt;exit 1&lt;/span&gt;
          &lt;span class="s"&gt;fi&lt;/span&gt;

      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Upload Scan Results&lt;/span&gt;
        &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/upload-artifact@v3&lt;/span&gt;
        &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;security-scan-results&lt;/span&gt;
          &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;scan_results.json&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 7: Protocol-Specific Fingerprinting
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;SMTP banner harvesting (check for old, vulnerable mail server versions):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; mail_servers.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; smtp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 25 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 5 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; smtp_banners.json

&lt;span class="c"&gt;# Also probe with VRFY and EXPN commands for user enumeration&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-proto&lt;/span&gt; smtp &lt;span class="nt"&gt;-payload&lt;/span&gt; &lt;span class="s2"&gt;"VRFY postmaster&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; mail.target.com
go run bannerGrap.go &lt;span class="nt"&gt;-proto&lt;/span&gt; smtp &lt;span class="nt"&gt;-payload&lt;/span&gt; &lt;span class="s2"&gt;"EXPN postmaster&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; mail.target.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;FTP anonymous access check across a server fleet:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; ftp_servers.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; ftp &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 21 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 150 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 4 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; ftp_anon_check.csv

&lt;span class="c"&gt;# Or test anonymous login directly&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-proto&lt;/span&gt; ftp &lt;span class="nt"&gt;-payload&lt;/span&gt; &lt;span class="s2"&gt;"USER anonymous&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; ftp.target.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;SSH version fingerprinting at scale:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; ssh_hosts.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; ssh &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 22 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 300 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Telnet service fingerprinting on mixed IPv4/IPv6 targets:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; mixed_ipv4_ipv6_targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; telnet &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 23 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 5 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; telnet_fingerprints.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Custom TCP payload — probe a proprietary daemon or non-standard service:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; custom_daemon_hosts.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; custom &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-port&lt;/span&gt; 9000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-payload&lt;/span&gt; &lt;span class="s2"&gt;"HELLO&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 50 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 6 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; daemon_responses.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Protocol fuzzing — test admin endpoints with custom HTTP headers:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; http &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--payload&lt;/span&gt; &lt;span class="s2"&gt;"GET /admin HTTP/1.1&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;Host: %s&lt;/span&gt;&lt;span class="se"&gt;\r\n&lt;/span&gt;&lt;span class="s2"&gt;User-Agent: Mozilla/5.0&lt;/span&gt;&lt;span class="se"&gt;\r\n\r\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 8: Parallel Execution with GNU Parallel
&lt;/h3&gt;

&lt;p&gt;For maximum throughput when you have a machine with many cores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Run 20 parallel instances, one per host&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;targets.txt | parallel &lt;span class="nt"&gt;-j&lt;/span&gt; 20 &lt;span class="s2"&gt;"go run bannerGrap.go {} -proto http -timeout 2"&lt;/span&gt;

&lt;span class="c"&gt;# Run 50 parallel instances&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;targets.txt | parallel &lt;span class="nt"&gt;-j&lt;/span&gt; 50 &lt;span class="s2"&gt;"go run bannerGrap.go {} -proto http -timeout 2"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 9: All-Ports Scan on a Single Critical Host
&lt;/h3&gt;

&lt;p&gt;When you need a complete picture of every port on a single high-value target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Generate all 65535 ports as targets&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;p &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;1..65535&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"192.168.1.100:&lt;/span&gt;&lt;span class="nv"&gt;$p&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; all_ports.txt

&lt;span class="c"&gt;# Scan everything, 200 threads, 1s timeout&lt;/span&gt;
go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; all_ports.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 200 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-timeout&lt;/span&gt; 1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; all_ports_scan.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 10: The "Nuclear" All-In-One Sweep
&lt;/h3&gt;

&lt;p&gt;Five protocols, 250 threads each, chained with &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt; so they run sequentially and each output goes to its own file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# HTTP&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; vip_targets.txt &lt;span class="nt"&gt;-threads&lt;/span&gt; 250 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; http_sweep.json &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="c"&gt;# HTTPS&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; vip_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; https &lt;span class="nt"&gt;-threads&lt;/span&gt; 250 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; https_sweep.json &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="c"&gt;# SMTP&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; vip_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; smtp  &lt;span class="nt"&gt;-threads&lt;/span&gt; 250 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; smtp_sweep.json &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="c"&gt;# SSH&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; vip_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; ssh   &lt;span class="nt"&gt;-threads&lt;/span&gt; 250 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; ssh_sweep.json &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="c"&gt;# FTP&lt;/span&gt;
go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; vip_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; ftp   &lt;span class="nt"&gt;-threads&lt;/span&gt; 250 &lt;span class="nt"&gt;-timeout&lt;/span&gt; 3 &lt;span class="nt"&gt;-o&lt;/span&gt; ftp_sweep.json

&lt;span class="c"&gt;# Then merge everything&lt;/span&gt;
jq &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;'add'&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;_sweep.json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; FULL_SWEEP_REPORT.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And generate the final HTML report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;go run bannerGrap.go &lt;span class="nt"&gt;-f&lt;/span&gt; vip_targets.txt &lt;span class="nt"&gt;-proto&lt;/span&gt; http &lt;span class="nt"&gt;--report-html&lt;/span&gt; FULL_SWEEP_REPORT.html &lt;span class="nt"&gt;-threads&lt;/span&gt; 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🔹 Scenario 11: Export for SIEM Integration
&lt;/h3&gt;

&lt;p&gt;BannerGrapV2's JSON output is structured and SIEM-ready. Pipe it straight into your log aggregator:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Output structured JSON for Splunk / Elastic / Sentinel ingestion&lt;/span&gt;
go run bannerGrap.go &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-f&lt;/span&gt; targets.txt &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-proto&lt;/span&gt; http &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-threads&lt;/span&gt; 100 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; siem_feed_&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%Y%m%d_%H%M%S&lt;span class="si"&gt;)&lt;/span&gt;.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Configuration File — For Persistent Scan Profiles
&lt;/h2&gt;

&lt;p&gt;Instead of typing flags every time, save your scan profile in &lt;code&gt;config.yaml&lt;/code&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="c1"&gt;# BannerGrapV2 Configuration — config.yaml&lt;/span&gt;

&lt;span class="na"&gt;general&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;threads&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100&lt;/span&gt;
  &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;
  &lt;span class="na"&gt;retries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
  &lt;span class="na"&gt;verbose&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;scan&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;common_ports&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;port_range&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1-10000"&lt;/span&gt;
  &lt;span class="na"&gt;service_detection&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;ssl_analysis&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;vulnerability&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;cve_database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;online"&lt;/span&gt;
  &lt;span class="na"&gt;min_severity&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;medium"&lt;/span&gt;

&lt;span class="na"&gt;output&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;json"&lt;/span&gt;
  &lt;span class="na"&gt;directory&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./reports"&lt;/span&gt;
  &lt;span class="na"&gt;timestamp&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;brute_force&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;false&lt;/span&gt;
  &lt;span class="na"&gt;username_list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;usernames.txt"&lt;/span&gt;
  &lt;span class="na"&gt;password_list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;passwords.txt"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run with config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bannergrapv2 &lt;span class="nt"&gt;-config&lt;/span&gt; config.yaml &lt;span class="nt"&gt;-target&lt;/span&gt; 192.168.1.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Post-Processing Tips — Working With the Output
&lt;/h2&gt;

&lt;p&gt;BannerGrapV2 produces clean, structured output. Here are a few useful commands for working with it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Filter only hosts with open port 443&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;results.json | jq &lt;span class="s1"&gt;'.[] | select(.port == 443)'&lt;/span&gt;

&lt;span class="c"&gt;# Count unique services detected&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;results.json | jq &lt;span class="s1"&gt;'[.[].service] | group_by(.) | map({service: .[0], count: length}) | sort_by(-.count)'&lt;/span&gt;

&lt;span class="c"&gt;# Export CSV to Excel-friendly format&lt;/span&gt;
&lt;span class="nb"&gt;cat &lt;/span&gt;results.csv | column &lt;span class="nt"&gt;-t&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;','&lt;/span&gt;

&lt;span class="c"&gt;# Alert on specific vulnerabilities&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-iE&lt;/span&gt; &lt;span class="s2"&gt;"CVE-[0-9]+-[0-9]+"&lt;/span&gt; results.json | &lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;

&lt;span class="c"&gt;# Combine multiple scan output files&lt;/span&gt;
jq &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s1"&gt;'add'&lt;/span&gt; scan_http.json scan_https.json scan_ssh.json &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; combined.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  How to Contribute
&lt;/h2&gt;

&lt;p&gt;BannerGrapV2 is MIT-licensed and actively looking for contributors. The codebase is Go (91.5%) with Shell scripts — if you've worked with Go networking libraries, goroutines, or security tooling, there's meaningful work here.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Current contribution areas:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adding new protocol handlers and service fingerprints&lt;/li&gt;
&lt;li&gt;Expanding the CVE detection engine and signature database&lt;/li&gt;
&lt;li&gt;Writing tests (unit and integration)&lt;/li&gt;
&lt;li&gt;Improving documentation and usage examples&lt;/li&gt;
&lt;li&gt;Building out the plugin system&lt;/li&gt;
&lt;li&gt;Metasploit and Nmap integration work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to submit a PR:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Fork the repo on GitHub, then:&lt;/span&gt;
git clone https://github.com/YOUR_USERNAME/BannerGrapV2.git
&lt;span class="nb"&gt;cd &lt;/span&gt;BannerGrapV2
git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; feature/your-feature-name

&lt;span class="c"&gt;# Make your changes&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"feat: description of your change"&lt;/span&gt;
git push origin feature/your-feature-name

&lt;span class="c"&gt;# Then open a Pull Request on GitHub&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Full guidelines: &lt;a href="https://github.com/MrEchoFi/BannerGrapV2/blob/master/CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For bug reports and feature requests, open an issue on &lt;a href="https://github.com/MrEchoFi/BannerGrapV2/issues" rel="noopener noreferrer"&gt;GitHub Issues&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Project Roadmap
&lt;/h2&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;Feature&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;Core multi-protocol banner grabbing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;Multi-threaded concurrent scanning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;Vulnerability detection engine&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;JSON / CSV / HTML / XML output&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;Brute force with custom wordlists&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;Docker support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;✅ Done&lt;/td&gt;
&lt;td&gt;Kubernetes deployment manifests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;🔄 In Progress&lt;/td&gt;
&lt;td&gt;Plugin system for custom scanners&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📋 Planned&lt;/td&gt;
&lt;td&gt;Full Metasploit &amp;amp; Nmap integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📋 Planned&lt;/td&gt;
&lt;td&gt;Kubernetes operator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;📋 Planned&lt;/td&gt;
&lt;td&gt;Web dashboard for scan results&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Responsible Use Disclaimer
&lt;/h2&gt;

&lt;p&gt;BannerGrapV2 is built for &lt;strong&gt;authorized security testing only.&lt;/strong&gt; Only use it on systems you own or have explicit, written permission to test. This includes bug bounty programs with defined scope, internal networks you administer, and environments you have contractual authorization to assess.&lt;/p&gt;

&lt;p&gt;Unauthorized network scanning violates computer crime laws in most jurisdictions. The developer and contributors bear no responsibility for misuse.&lt;/p&gt;




&lt;h2&gt;
  
  
  About the Developer
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MrEchoFi&lt;/strong&gt; (Md. Abu Naser Nayeem / Tanjib Isham) is a Cybersecurity Researcher, Certified Red Team CredOps Infiltrator (CRT-COI). His work spans DevSecOps, hardware penetration testing, IoT security, and open-source security tooling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 Portfolio: &lt;a href="https://echo-fi-portfolio-node-js.vercel.app" rel="noopener noreferrer"&gt;echo-fi-portfolio-node-js.vercel.app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;💼 LinkedIn: &lt;a href="https://www.linkedin.com/in/md-abu-naser-nayeem-mrechofi-b29496332" rel="noopener noreferrer"&gt;md-abu-naser-nayeem-mrechofi&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐙 GitHub: &lt;a href="https://github.com/MrEchoFi" rel="noopener noreferrer"&gt;github.com/MrEchoFi&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;The security tooling ecosystem benefits from open, well-documented, actively maintained tools. BannerGrapV2 is built to serve real workflows — not just demos.&lt;/p&gt;

&lt;p&gt;If it helps you work faster, find what you'd otherwise miss, or simplify a step in your process, the best thing you can do is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;⭐ &lt;strong&gt;Star the repo&lt;/strong&gt; — &lt;a href="https://github.com/MrEchoFi/BannerGrapV2" rel="noopener noreferrer"&gt;github.com/MrEchoFi/BannerGrapV2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔀 &lt;strong&gt;Fork it and contribute&lt;/strong&gt; — even documentation PRs matter&lt;/li&gt;
&lt;li&gt;📣 &lt;strong&gt;Share it&lt;/strong&gt; with your team, your bug bounty group, or your security community&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Questions, feedback, or edge cases you want covered? Leave a comment below or open a GitHub Issue.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy HackNight. 🌙&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with Go. Maintained by the community. MIT Licensed.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Tags: #cybersecurity #go #golang #opensource #penetrationtesting #bugbounty #redteam #blueteam #devsecops #networksecurity #bannergrabbing #infosec #ethicalhacking&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>go</category>
      <category>opensourcesecurity</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
