From 5e8932cef2e9d2f71c36e4539114add3d3d03937 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Wed, 19 May 2021 10:00:17 +0200 Subject: verwendet jetzt pass --- passwort-tresor.in | 263 ----------------------------------------------------- 1 file changed, 263 deletions(-) delete mode 100644 passwort-tresor.in (limited to 'passwort-tresor.in') diff --git a/passwort-tresor.in b/passwort-tresor.in deleted file mode 100644 index 7980a48..0000000 --- a/passwort-tresor.in +++ /dev/null @@ -1,263 +0,0 @@ -#!/bin/bash - -beenden () { - [ -n "${tmpDir}" ] && rm -rf --one-file-system "${tmpDir}" - [ -n "$1" ] && [ "$1" -ne 0 ] && >&2 echo 'Ich beende.' - exit $1 -} - -beiFehlerBeenden () { - err=$? - if [ ${err} -ne 0 ] && [ ${blind} -lt $1 ] - then - if [ -e "${tmpDir}/fehlermeldungen" ] - then - less "${tmpDir}/fehlermeldungen" - fi - beenden ${err} - fi -} - -verwendung() -{ - >&2 echo '' - >&2 echo 'Skript zum verschlüsselten Speichern von Passwörtern und anderem.' - >&2 echo 'Wenn weder -g noch -n als Argumente gegeben sind, wird die Datei zum editieren geöffnet.' - >&2 echo '' - >&2 echo 'Usage: '"$(basename "$0") [OPTIONS]" - >&2 echo '' - >&2 echo ' -b,--blind=blindheit Schwere der Fehler, die ignoriert werden (0,1,2,3)' - >&2 echo ' -d,--datei=datei verschlüsselte Datei' - >&2 echo ' -g,--grep nach etwas greppen und in die Zwischenablage übernehmen; nicht zusammen mit -n verwendbar' - >&2 echo ' -n,--neu neues Passwort abspeichern; nicht zusammen mit -g verwendbar' - >&2 echo ' -s,--summe=datei Prüfsummendatei der verschlüsselten Datei' - >&2 echo ' -z,--zufaellig[=Laenge] neues Passwort der Länge Laenge (Standard = 8) zufällig generieren; impliziert -n' - >&2 echo \ -'#HELPTEXT# #' - >&2 echo '' - [ -z "$1" ] && beenden 1 - beenden $1 -} - -eval set -- "$( - getopt -o b:d:gns:z:: \ - --long blind: \ - --long datei: \ - --long grep \ - --long help \ - --long neu \ - --long summe: \ - --long version \ - --long zufaellig:: \ - -n "$(basename "$0")" \ - -- "$@" \ - || echo "verwendung" -)" -args=("$@") - -greppw=false -neu=false -blind=0 -pwLen=-1 - -[ -r "#ETCDIR#/passwort-tresor.konf" ] && \ - . "#ETCDIR#/passwort-tresor.konf" - -while true -do - case $1 in - -b|--blind) - [ "${blind}" -ne 0 ] && verwendung - shift - blind="$1" - ;; - -d|--datei) - [ -n "${datei}" ] && verwendung - shift - datei="$1" - ;; - -g|--grep) - greppw=true - ;; - --help) - verwendung 0 - ;; - -n|--neu) - neu=true - ;; - -s|--summe) - [ -n "${summe}" ] && verwendung - shift - summe="$1" - ;; - -z|--zufaellig) - shift - neu=true - [ -z "$1" ] && pwLen=8 || pwLen=$1 - [ ${pwLen} -lt 0 ] && verwendung - ;; - --version) - >&2 echo '#VERSION#' - exit 0 - ;; - --) - shift - break - ;; - *) - >&2 echo "FEHLER: Verstehe Option \"$1\" doch nicht!" - beenden 1 - esac - shift -done - -if [ $# -ne 0 ] -then - >&2 echo 'FEHLER: Zu viele ('$#') Argumente:' - for ((i=1; i<=$#; i++)) - do - >&2 echo "'${!i}'" - done - verwendung -fi - -${greppw} && ${neu} && verwendung - -if [ -n "${summe}" ] && [ -z "${datei}" ] -then - >&2 echo 'Keine Datei zur Prüfsumme angegeben!' - verwendung -fi - -if [ -z "${datei}" ] -then - datei=$(dialog --stdout --fselect "${standardDatei}" 14 70) - [ -z "${datei}" ] && beenden 1 -fi - -if [ -z "${summe}" ] -then - summe="${summenVerzeichnis}$(basename "${datei}" ".gpg").512" -fi - -if [[ ! "${datei}" = *".gpg" ]] -then - >&2 echo 'Datei endet nicht auf ".gpg"!' - beenden 1 -fi - -${greppw} && read -p 'suche nach: ' suche -if ${neu} -then - read -p 'Dienst: ' dienst - read -p 'Benutzer: ' benutzer - if [ ${pwLen} -lt 0 ] - then - read -sp 'Passwort: ' pw1 - echo '' - read -sp 'noch Mal: ' pw2 - echo '' - if [ ! "${pw1}" == "${pw2}" ] - then - >&2 echo 'Die Passwörter unterscheiden sich!' - beenden 1 - fi - else - pw1=$( - printf '%s\n' {0..1}{0..7}{0..7} \ - | sed ' - 1,33d - $d - ' \ - | while read -r s; do - printf '\'"$s"'\n' - done \ - | shuf -n ${pwLen} --random-source=/dev/urandom -r \ - | tr -d '\n' - ) - fi -fi - -tmpDir="$(mktemp -d)" - -rsync "${datei}" "${tmpDir}/original" -beiFehlerBeenden 0 -rsync "${summe}" "${tmpDir}/summe" -beiFehlerBeenden 2 - -cat "${tmpDir}/summe" \ - | awk "{print \$1\" ${tmpDir}/original\"}" \ - | sha512sum -c \ - > "${tmpDir}/fehlermeldungen" - -beiFehlerBeenden 1 - -gpg --status-fd 1 -o "${tmpDir}/output" -d "${tmpDir}/original" \ - 2> "${tmpDir}/fehlermeldungen" \ - > "${tmpDir}/status" - -beiFehlerBeenden 3 - -grep -q "VALIDSIG ${schluessel} \(.* \)\?${schluessel}\$" "${tmpDir}/status" - -beiFehlerBeenden 1 - -if ${greppw} -then - count=0 - for subst in 's/[.[]/\\\0/g' ''; do - sucheSubst=$( - echo "${suche}" | \ - sed "${subst}" - ) - for suchStr in "${sucheSubst}" "${sucheSubst}.*:\$" "^${sucheSubst}.*:\$" "^${sucheSubst}:\$" - do - count=$(grep -c "${suchStr}" "${tmpDir}/output") - [ "${count}" -eq 1 ] && break - >&2 printf '"%s": %s\n' "${suchStr}" "${count}" - done - [ "${count}" -eq 1 ] && break - done - if [ "${count}" -ne 1 ] - then - >&2 printf '"%s" ist nicht genau ein Mal vorhanden!\n' "${suche}" - read -s - beenden 1 - fi - output="$(grep -2 "${suchStr}" "${tmpDir}/output" | tail -n2)" - shred -zu "${tmpDir}/output" - rm -rf --one-file-system "${tmpDir}" - - echo "${output}" | head -n1 | xclip -i - echo -n "." - read suche - echo "${output}" | tail -n1 | xclip -i - echo -n "." - read suche - echo '' | xclip -i -else - if ${neu} - then - echo '' >> "${tmpDir}/output" - echo "${dienst}:" >> "${tmpDir}/output" - echo "${benutzer}" >> "${tmpDir}/output" - echo "${pw1}" >> "${tmpDir}/output" - else - sha512sum "${tmpDir}/output" > "${tmpDir}/alteSumme" - ${EDITOR:-nano} "${tmpDir}/output" || beenden $? - sha512sum -c "${tmpDir}/alteSumme" &> /dev/null && beenden 0 - fi - gpg -o "${tmpDir}/neu" -r "0x${schluessel}" -e -s "${tmpDir}/output" \ - 2> "${tmpDir}/fehlermeldungen" - beiFehlerBeenden 3 - sed "s|^\S\+ |$( - sha512sum "${tmpDir}/neu" | \ - awk '{print $1}' - ) |" -i "${tmpDir}/summe" - rsync "${tmpDir}/neu" "${datei}" - beiFehlerBeenden 3 - rsync "${tmpDir}/summe" "${summe}" - beiFehlerBeenden 1 -fi - -beenden 0 -- cgit v1.2.3-54-g00ecf