From d0c42b17f931a0333d957b6f65a7c3669c85d1c8 Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 14:27:46 -0400 Subject: [PATCH 1/7] feat(network-ops): provision wordlists for password cracking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Install script now downloads: - rockyou.txt (14M passwords) — default wordlist for hashcat/john - SecLists top-1M password list — fast credential spraying - SecLists xato-net usernames — user enumeration Handles existing rockyou.txt.gz (Kali default) by decompressing. Adds rockyou readiness check. Bump to 2.1.7. Co-Authored-By: Claude Opus 4.6 (1M context) --- capabilities/network-ops/capability.yaml | 4 ++- .../scripts/install_coercion_tools.sh | 34 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/capabilities/network-ops/capability.yaml b/capabilities/network-ops/capability.yaml index a3904cc..d7f682a 100644 --- a/capabilities/network-ops/capability.yaml +++ b/capabilities/network-ops/capability.yaml @@ -1,6 +1,6 @@ schema: 1 name: network-ops -version: "2.1.6" +version: "2.1.7" description: > Network operations and Active Directory exploitation. Multi-agent pipeline for autonomous red teaming with Nmap scanning, Netexec @@ -43,6 +43,8 @@ checks: command: "test -f /opt/DFSCoerce/dfscoerce.py" - name: shadowcoerce command: "test -f /opt/ShadowCoerce/shadowcoerce.py" + - name: rockyou-wordlist + command: "test -f /usr/share/wordlists/rockyou.txt" keywords: - network-ops diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index 5e65ab0..20d99ba 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -14,6 +14,40 @@ else echo "[*] impacket already importable, skipping" fi +# -- Wordlists for password cracking ----------------------------------------- +WORDLIST_DIR="/usr/share/wordlists" +mkdir -p "$WORDLIST_DIR" + +# rockyou — the standard first-pass wordlist (14M passwords) +if [ -f "$WORDLIST_DIR/rockyou.txt" ]; then + echo "[*] rockyou.txt already exists, skipping" +elif [ -f "$WORDLIST_DIR/rockyou.txt.gz" ]; then + echo "[+] Decompressing rockyou.txt.gz" + gunzip -k "$WORDLIST_DIR/rockyou.txt.gz" +else + echo "[+] Downloading rockyou.txt" + curl -fsSL "https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt" \ + -o "$WORDLIST_DIR/rockyou.txt" +fi + +# SecLists common passwords (top 1M, good for spraying/fast cracks) +if [ -f "$WORDLIST_DIR/10-million-password-list-top-1000000.txt" ]; then + echo "[*] SecLists top-1M already exists, skipping" +else + echo "[+] Downloading SecLists top-1M password list" + curl -fsSL "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt" \ + -o "$WORDLIST_DIR/10-million-password-list-top-1000000.txt" +fi + +# SecLists common usernames (for user enumeration / spraying) +if [ -f "$WORDLIST_DIR/xato-net-10-million-usernames.txt" ]; then + echo "[*] SecLists usernames already exists, skipping" +else + echo "[+] Downloading SecLists username list" + curl -fsSL "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Usernames/xato-net-10-million-usernames.txt" \ + -o "$WORDLIST_DIR/xato-net-10-million-usernames.txt" +fi + # -- Coercion scripts ------------------------------------------------------- REPOS=( "https://github.com/topotam/PetitPotam /opt/PetitPotam" From 5f09ddec20df20e45e18956d59696f257b04a340 Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 15:03:51 -0400 Subject: [PATCH 2/7] refactor(network-ops): replace wordlists with more useful selection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rockyou.txt — standard 14M password list (unchanged) - 10k-most-common.txt — fast first-pass for spraying (replaces 1M list) - OneRuleToRuleThemAll.rule — hashcat rules that multiply any wordlist's effectiveness (replaces username list) Co-Authored-By: Claude Opus 4.6 (1M context) --- .../scripts/install_coercion_tools.sh | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index 20d99ba..9ca832c 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -18,7 +18,7 @@ fi WORDLIST_DIR="/usr/share/wordlists" mkdir -p "$WORDLIST_DIR" -# rockyou — the standard first-pass wordlist (14M passwords) +# rockyou — the standard wordlist for cracking (14M passwords) if [ -f "$WORDLIST_DIR/rockyou.txt" ]; then echo "[*] rockyou.txt already exists, skipping" elif [ -f "$WORDLIST_DIR/rockyou.txt.gz" ]; then @@ -30,22 +30,26 @@ else -o "$WORDLIST_DIR/rockyou.txt" fi -# SecLists common passwords (top 1M, good for spraying/fast cracks) -if [ -f "$WORDLIST_DIR/10-million-password-list-top-1000000.txt" ]; then - echo "[*] SecLists top-1M already exists, skipping" +# Top 10k most common passwords — fast first-pass for spraying +if [ -f "$WORDLIST_DIR/10k-most-common.txt" ]; then + echo "[*] 10k-most-common.txt already exists, skipping" else - echo "[+] Downloading SecLists top-1M password list" - curl -fsSL "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10-million-password-list-top-1000000.txt" \ - -o "$WORDLIST_DIR/10-million-password-list-top-1000000.txt" + echo "[+] Downloading SecLists 10k most common passwords" + curl -fsSL "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt" \ + -o "$WORDLIST_DIR/10k-most-common.txt" fi -# SecLists common usernames (for user enumeration / spraying) -if [ -f "$WORDLIST_DIR/xato-net-10-million-usernames.txt" ]; then - echo "[*] SecLists usernames already exists, skipping" -else - echo "[+] Downloading SecLists username list" - curl -fsSL "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Usernames/xato-net-10-million-usernames.txt" \ - -o "$WORDLIST_DIR/xato-net-10-million-usernames.txt" +# OneRuleToRuleThemAll — hashcat rules that multiply wordlist effectiveness +# Combines rules from Hob0Rules, KoreLogic, NSA, and hashcat generated rules +RULES_DIR="/usr/share/hashcat/rules" +if [ -d "$RULES_DIR" ] || mkdir -p "$RULES_DIR" 2>/dev/null; then + if [ -f "$RULES_DIR/OneRuleToRuleThemAll.rule" ]; then + echo "[*] OneRuleToRuleThemAll.rule already exists, skipping" + else + echo "[+] Downloading OneRuleToRuleThemAll hashcat rules" + curl -fsSL "https://raw.githubusercontent.com/NotSoSecure/password_cracking_rules/master/OneRuleToRuleThemAll.rule" \ + -o "$RULES_DIR/OneRuleToRuleThemAll.rule" + fi fi # -- Coercion scripts ------------------------------------------------------- From b2166839fbb9ee655190b39e8ad8850504eab9b1 Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 15:21:48 -0400 Subject: [PATCH 3/7] fix(network-ops): add curl retries, fix readiness check, remove stderr suppression Co-Authored-By: Claude Opus 4.6 (1M context) --- capabilities/network-ops/capability.yaml | 2 +- .../network-ops/scripts/install_coercion_tools.sh | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/capabilities/network-ops/capability.yaml b/capabilities/network-ops/capability.yaml index d7f682a..d50cf2a 100644 --- a/capabilities/network-ops/capability.yaml +++ b/capabilities/network-ops/capability.yaml @@ -44,7 +44,7 @@ checks: - name: shadowcoerce command: "test -f /opt/ShadowCoerce/shadowcoerce.py" - name: rockyou-wordlist - command: "test -f /usr/share/wordlists/rockyou.txt" + command: "test -s /usr/share/wordlists/rockyou.txt" keywords: - network-ops diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index 9ca832c..c08c74b 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -26,7 +26,7 @@ elif [ -f "$WORDLIST_DIR/rockyou.txt.gz" ]; then gunzip -k "$WORDLIST_DIR/rockyou.txt.gz" else echo "[+] Downloading rockyou.txt" - curl -fsSL "https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt" \ + curl -fsSL --retry 3 "https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt" \ -o "$WORDLIST_DIR/rockyou.txt" fi @@ -35,19 +35,19 @@ if [ -f "$WORDLIST_DIR/10k-most-common.txt" ]; then echo "[*] 10k-most-common.txt already exists, skipping" else echo "[+] Downloading SecLists 10k most common passwords" - curl -fsSL "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt" \ + curl -fsSL --retry 3 "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt" \ -o "$WORDLIST_DIR/10k-most-common.txt" fi # OneRuleToRuleThemAll — hashcat rules that multiply wordlist effectiveness # Combines rules from Hob0Rules, KoreLogic, NSA, and hashcat generated rules RULES_DIR="/usr/share/hashcat/rules" -if [ -d "$RULES_DIR" ] || mkdir -p "$RULES_DIR" 2>/dev/null; then +if [ -d "$RULES_DIR" ] || mkdir -p "$RULES_DIR"; then if [ -f "$RULES_DIR/OneRuleToRuleThemAll.rule" ]; then echo "[*] OneRuleToRuleThemAll.rule already exists, skipping" else echo "[+] Downloading OneRuleToRuleThemAll hashcat rules" - curl -fsSL "https://raw.githubusercontent.com/NotSoSecure/password_cracking_rules/master/OneRuleToRuleThemAll.rule" \ + curl -fsSL --retry 3 "https://raw.githubusercontent.com/NotSoSecure/password_cracking_rules/master/OneRuleToRuleThemAll.rule" \ -o "$RULES_DIR/OneRuleToRuleThemAll.rule" fi fi From 15edd7d1ce6bc783b9174234e33378acad6a5a5e Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 15:39:23 -0400 Subject: [PATCH 4/7] fix(network-ops): use -s checks for wordlists, add curl connect timeout Co-Authored-By: Claude Opus 4.6 (1M context) --- .../network-ops/scripts/install_coercion_tools.sh | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index c08c74b..1711386 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -19,23 +19,23 @@ WORDLIST_DIR="/usr/share/wordlists" mkdir -p "$WORDLIST_DIR" # rockyou — the standard wordlist for cracking (14M passwords) -if [ -f "$WORDLIST_DIR/rockyou.txt" ]; then +if [ -s "$WORDLIST_DIR/rockyou.txt" ]; then echo "[*] rockyou.txt already exists, skipping" elif [ -f "$WORDLIST_DIR/rockyou.txt.gz" ]; then echo "[+] Decompressing rockyou.txt.gz" gunzip -k "$WORDLIST_DIR/rockyou.txt.gz" else echo "[+] Downloading rockyou.txt" - curl -fsSL --retry 3 "https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt" \ + curl -fsSL --retry 3 --connect-timeout 10 "https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt" \ -o "$WORDLIST_DIR/rockyou.txt" fi # Top 10k most common passwords — fast first-pass for spraying -if [ -f "$WORDLIST_DIR/10k-most-common.txt" ]; then +if [ -s "$WORDLIST_DIR/10k-most-common.txt" ]; then echo "[*] 10k-most-common.txt already exists, skipping" else echo "[+] Downloading SecLists 10k most common passwords" - curl -fsSL --retry 3 "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt" \ + curl -fsSL --retry 3 --connect-timeout 10 "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt" \ -o "$WORDLIST_DIR/10k-most-common.txt" fi @@ -43,11 +43,11 @@ fi # Combines rules from Hob0Rules, KoreLogic, NSA, and hashcat generated rules RULES_DIR="/usr/share/hashcat/rules" if [ -d "$RULES_DIR" ] || mkdir -p "$RULES_DIR"; then - if [ -f "$RULES_DIR/OneRuleToRuleThemAll.rule" ]; then + if [ -s "$RULES_DIR/OneRuleToRuleThemAll.rule" ]; then echo "[*] OneRuleToRuleThemAll.rule already exists, skipping" else echo "[+] Downloading OneRuleToRuleThemAll hashcat rules" - curl -fsSL --retry 3 "https://raw.githubusercontent.com/NotSoSecure/password_cracking_rules/master/OneRuleToRuleThemAll.rule" \ + curl -fsSL --retry 3 --connect-timeout 10 "https://raw.githubusercontent.com/NotSoSecure/password_cracking_rules/master/OneRuleToRuleThemAll.rule" \ -o "$RULES_DIR/OneRuleToRuleThemAll.rule" fi fi From 1a17e50f267c2a7d9834ca7c1a1ff3ed1720fd82 Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 15:49:51 -0400 Subject: [PATCH 5/7] fix(network-ops): remove stale rockyou.txt before gunzip Co-Authored-By: Claude Opus 4.6 (1M context) --- capabilities/network-ops/scripts/install_coercion_tools.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index 1711386..5180fa4 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -23,6 +23,7 @@ if [ -s "$WORDLIST_DIR/rockyou.txt" ]; then echo "[*] rockyou.txt already exists, skipping" elif [ -f "$WORDLIST_DIR/rockyou.txt.gz" ]; then echo "[+] Decompressing rockyou.txt.gz" + rm -f "$WORDLIST_DIR/rockyou.txt" gunzip -k "$WORDLIST_DIR/rockyou.txt.gz" else echo "[+] Downloading rockyou.txt" From f0e9c39c75d219e4c98ab4b04e5f9cf48e098f12 Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 15:51:50 -0400 Subject: [PATCH 6/7] fix(network-ops): make all wordlist/rules downloads non-fatal Wordlist and rules download failures should not abort the script and prevent coercion script cloning. Added || echo fallbacks to all curl and gunzip calls. Fixed mkdir for hashcat rules dir to fail gracefully with a clear message instead of falling through to a broken curl. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../scripts/install_coercion_tools.sh | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index 5180fa4..1b82b5a 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -24,33 +24,41 @@ if [ -s "$WORDLIST_DIR/rockyou.txt" ]; then elif [ -f "$WORDLIST_DIR/rockyou.txt.gz" ]; then echo "[+] Decompressing rockyou.txt.gz" rm -f "$WORDLIST_DIR/rockyou.txt" - gunzip -k "$WORDLIST_DIR/rockyou.txt.gz" + gunzip -k "$WORDLIST_DIR/rockyou.txt.gz" \ + || echo "[!] Failed to decompress rockyou.txt.gz (non-fatal)" else echo "[+] Downloading rockyou.txt" curl -fsSL --retry 3 --connect-timeout 10 "https://github.com/brannondorsey/naive-hashcat/releases/download/data/rockyou.txt" \ - -o "$WORDLIST_DIR/rockyou.txt" + -o "$WORDLIST_DIR/rockyou.txt" \ + || echo "[!] Failed to download rockyou.txt (non-fatal)" fi # Top 10k most common passwords — fast first-pass for spraying +# Non-fatal: wordlist download failures shouldn't block coercion script setup if [ -s "$WORDLIST_DIR/10k-most-common.txt" ]; then echo "[*] 10k-most-common.txt already exists, skipping" else echo "[+] Downloading SecLists 10k most common passwords" curl -fsSL --retry 3 --connect-timeout 10 "https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Common-Credentials/10k-most-common.txt" \ - -o "$WORDLIST_DIR/10k-most-common.txt" + -o "$WORDLIST_DIR/10k-most-common.txt" \ + || echo "[!] Failed to download 10k-most-common.txt (non-fatal)" fi # OneRuleToRuleThemAll — hashcat rules that multiply wordlist effectiveness # Combines rules from Hob0Rules, KoreLogic, NSA, and hashcat generated rules +# Non-fatal: rules dir may not be writable and that's OK RULES_DIR="/usr/share/hashcat/rules" -if [ -d "$RULES_DIR" ] || mkdir -p "$RULES_DIR"; then +if mkdir -p "$RULES_DIR" 2>/dev/null; then if [ -s "$RULES_DIR/OneRuleToRuleThemAll.rule" ]; then echo "[*] OneRuleToRuleThemAll.rule already exists, skipping" else echo "[+] Downloading OneRuleToRuleThemAll hashcat rules" curl -fsSL --retry 3 --connect-timeout 10 "https://raw.githubusercontent.com/NotSoSecure/password_cracking_rules/master/OneRuleToRuleThemAll.rule" \ - -o "$RULES_DIR/OneRuleToRuleThemAll.rule" + -o "$RULES_DIR/OneRuleToRuleThemAll.rule" \ + || echo "[!] Failed to download OneRuleToRuleThemAll.rule (non-fatal)" fi +else + echo "[!] Cannot create $RULES_DIR (non-fatal, skipping hashcat rules)" fi # -- Coercion scripts ------------------------------------------------------- From 4a35d08071b7f2d53ce510aeaf045db643f0afcd Mon Sep 17 00:00:00 2001 From: mkultraWasHere Date: Wed, 15 Jul 2026 15:58:42 -0400 Subject: [PATCH 7/7] fix(network-ops): show mkdir errors for hashcat rules dir Co-Authored-By: Claude Opus 4.6 (1M context) --- capabilities/network-ops/scripts/install_coercion_tools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/capabilities/network-ops/scripts/install_coercion_tools.sh b/capabilities/network-ops/scripts/install_coercion_tools.sh index 1b82b5a..f0d6fc8 100755 --- a/capabilities/network-ops/scripts/install_coercion_tools.sh +++ b/capabilities/network-ops/scripts/install_coercion_tools.sh @@ -48,7 +48,7 @@ fi # Combines rules from Hob0Rules, KoreLogic, NSA, and hashcat generated rules # Non-fatal: rules dir may not be writable and that's OK RULES_DIR="/usr/share/hashcat/rules" -if mkdir -p "$RULES_DIR" 2>/dev/null; then +if mkdir -p "$RULES_DIR" 2>&1; then if [ -s "$RULES_DIR/OneRuleToRuleThemAll.rule" ]; then echo "[*] OneRuleToRuleThemAll.rule already exists, skipping" else