summaryrefslogtreecommitdiff
path: root/passwort-tresor.in
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2021-05-19 10:00:17 +0200
committerErich Eckner <git@eckner.net>2021-05-19 10:00:17 +0200
commit5e8932cef2e9d2f71c36e4539114add3d3d03937 (patch)
treed528e990e532038ab3c4f2b283b010223aab7016 /passwort-tresor.in
parent1abab84c3f1563fb3933f48e1e7c74fe643ffb26 (diff)
downloadpasswort-tresor-5e8932cef2e9d2f71c36e4539114add3d3d03937.tar.xz
verwendet jetzt passv0.7
Diffstat (limited to 'passwort-tresor.in')
-rw-r--r--passwort-tresor.in263
1 files changed, 0 insertions, 263 deletions
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