- #!/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