#!/bin/bash PASSWORD_FILE="passwords.csv" ENCRYPTED_PASSWORD_FILE="passwords.enc" MASTER_PASSWORD="supersecret" # Zmień to na swoje hasło # Funkcja do odszyfrowywania pliku z hasłami decrypt_password_file() { if [[ -f $ENCRYPTED_PASSWORD_FILE ]]; then openssl enc -d -aes-256-cbc -salt -in $ENCRYPTED_PASSWORD_FILE -out $PASSWORD_FILE -pass pass:$MASTER_PASSWORD else touch $PASSWORD_FILE fi } # Funkcja do szyfrowania pliku z hasłami encrypt_password_file() { openssl enc -aes-256-cbc -salt -in $PASSWORD_FILE -out $ENCRYPTED_PASSWORD_FILE -pass pass:$MASTER_PASSWORD rm -f $PASSWORD_FILE } # Funkcja logowania użytkownika login() { password=$(zenity --password --title="Logowanie") if [[ $password != $MASTER_PASSWORD ]]; then zenity --error --text="Niepoprawne hasło!" exit 1 fi } # Funkcja wyświetlania menu display_menu() { option=$(zenity --list --radiolist --title="Menedżer haseł" --column="Wybór" --column="Opcja" TRUE "Wyświetl zapisane hasła" FALSE "Dodaj nowe hasło" FALSE "Usuń hasło" FALSE "Wyjdź") } # Funkcja do wyświetlania zapisanych haseł view_passwords() { if [[ ! -s $PASSWORD_FILE ]]; then zenity --info --text="Brak zapisanych haseł." return fi selection=$(awk -F, '{print NR ". " $1}' $PASSWORD_FILE | zenity --list --title="Zapisane hasła" --column="Hasła" --text="Wybierz stronę, aby wyświetlić dane") if [[ -n $selection ]]; then line_number=$(echo $selection | cut -d. -f1) details=$(sed -n "${line_number}p" $PASSWORD_FILE | awk -F, '{print "Strona: " $1 "\nLogin: " $2 "\nHasło: " $3}') zenity --info --text="$details" fi } # Funkcja do dodawania nowego hasła add_password() { site=$(zenity --entry --title="Dodaj nowe hasło" --text="Podaj nazwę strony:") login=$(zenity --entry --title="Dodaj nowe hasło" --text="Podaj login/email:") password=$(zenity --entry --title="Dodaj nowe hasło" --text="Podaj hasło:") echo "$site,$login,$password" >> $PASSWORD_FILE } # Funkcja do usuwania hasła delete_password() { if [[ ! -s $PASSWORD_FILE ]]; then zenity --info --text="Brak zapisanych haseł." return fi selection=$(awk -F, '{print NR ". " $1}' $PASSWORD_FILE | zenity --list --title="Usuń hasło" --column="Hasła" --text="Wybierz stronę do usunięcia") if [[ -n $selection ]]; then line_number=$(echo $selection | cut -d. -f1) sed -i "${line_number}d" $PASSWORD_FILE zenity --info --text="Usunięto hasło numer $line_number." fi } # Główna pętla programu main() { login decrypt_password_file while true; do display_menu case $option in "Wyświetl zapisane hasła") view_passwords ;; "Dodaj nowe hasło") add_password ;; "Usuń hasło") delete_password ;; "Wyjdź") encrypt_password_file; exit 0 ;; *) zenity --error --text="Niepoprawna opcja." ;; esac done } main