diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2026-08-02 14:48:29 +0200 |
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2026-08-02 14:48:29 +0200 |
| commit | e43eb1177872f52e949fb5f0f93396ed94b0d093 (patch) | |
| tree | 78b73af6a989fa2996d71b112e161b70d35081ef /home/dot_local/share/pass-extensions/executable_duplicates.bash | |
| parent | 2f14a896e4b897bd747c24d7ad8e9e7bb3237d03 (diff) | |
move to chezmoi
Diffstat (limited to 'home/dot_local/share/pass-extensions/executable_duplicates.bash')
| -rw-r--r-- | home/dot_local/share/pass-extensions/executable_duplicates.bash | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/home/dot_local/share/pass-extensions/executable_duplicates.bash b/home/dot_local/share/pass-extensions/executable_duplicates.bash new file mode 100644 index 0000000..3ba47aa --- /dev/null +++ b/home/dot_local/share/pass-extensions/executable_duplicates.bash @@ -0,0 +1,45 @@ +#!/bin/bash +declare -A dupe_tally dupe_map + +pass_names="$(pass names -l)" +[ $? -ne 0 ] && exit 1 + +pass_count="$(echo "$pass_names" | wc -l)" +pass_index=1 + +while read pass_name ; do + hash="$(pass show "$pass_name" | head -n1 | sha1sum | cut -c1-40)" + + dupe_map["$pass_name"]="$hash" + dupe_tally["$hash"]=$(( ${dupe_tally["$hash"]} + 1 )) + + printf '\rhashing... (%d/%d)' "$pass_index" "$pass_count" >&2 + pass_index=$(( $pass_index + 1 )) +done < <(echo "$pass_names") +printf '\r\e[2K' >&2 + +unique_duplicates=0 +total_shared=0 + +for talley_key in "${!dupe_tally[@]}" ; do + [ "${dupe_tally["$talley_key"]}" -le 1 ] && continue; + unique_duplicates=$(( $unique_duplicates + 1 )) + + echo "same password:" + for pass_name in "${!dupe_map[@]}" ; do + [ "${dupe_map["$pass_name"]}" != "$talley_key" ] && continue; + echo "- $pass_name" + total_shared=$(( $total_shared + 1 )) + done + echo +done + +echo "summary:" +if [ $unique_duplicates -eq 0 ] ; then + echo "- no duplicates" +else + cat << EOF +- found $unique_duplicates password(s) that were used more than once +- you should change all $total_shared passwords listed above +EOF +fi |