Ekspor kata sandi dari manajer kata sandi `pass`

9

Saya telah menggunakan pass pengelola kata sandi selama kurang lebih satu tahun sekarang, dan itu luar biasa, tetapi kadang-kadang saya ingin menguji pengelola kata sandi lainnya dan kemudian saya perlu kata sandi saya kembali.

Sejauh ini saya baru saja menambahkannya secara manual sesuai kebutuhan, tetapi jika saya ingin bermigrasi ke pengelola kata sandi yang lain, saya memerlukan skrip, karena saya tidak punya kesabaran untuk melakukannya satu per satu, mengingat saya sudah dekat dengan seratus (jika tidak lebih).

Apa itu mungkin? Apakah sudah ada solusinya?

Saya telah mencari solusi dan mematikan selama beberapa bulan terakhir dan belum dapat menemukan satu di mana itu "jalankan skrip ini dan boom diekspor".

Apakah ada skrip seperti itu? Jika tidak, apa atau di mana saya harus mencari untuk membuatnya?

greduan
sumber
@ josten Ya saya pikir ada sesuatu di mana ia hanya melewati setiap file dan itu mendapat kata sandi dan menyimpannya di suatu tempat. Itu salah satu cara untuk melakukannya. Tapi tidak yakin bagaimana ...
greduan

Jawaban:

10

Anda dapat melakukan ini jika Anda menjalankan gpg-agent (dan frasa sandi Anda dimuat), dengan perulangan melalui file di penyimpanan kata sandi Anda dan menulisnya ke file yang terpisah.

Anda harus menghapus direktori utama dari path ( $PASSWORD_STORE_DIR) dan .gpgekstensi dari masing-masing file di subdirektori, tetapi jika tidak cukup mudah:

#!/usr/bin/env bash
# export passwords to external file

shopt -s nullglob globstar
prefix=${PASSWORD_STORE_DIR:-$HOME/.password-store}

for file in "$prefix"/**/*.gpg; do                           
    file="${file/$prefix//}"
    printf "%s\n" "Name: ${file%.*}" >> exported_passes
    pass "${file%.*}" >> exported_passes
    printf "\n\n" >> exported_passes
done
jasonwryan
sumber
Itu tentu sangat sederhana, sesuai dengan apa yang saya pikirkan. :) Cepat sekali, bagaimana Anda menambahkan nama file sebelum konten masing-masing file dan kemudian dua baris antara setiap file (untuk pemisahan)? Saya tidak terlalu terbiasa dengan skrip shell.
greduan
BTW alasan saya menginginkannya adalah karena beberapa kata sandi (yaitu kata sandi yang tidak diimpor dari LastPass) tidak memiliki informasi tentangnya selain kata sandi itu sendiri, jadi ketika ada banyak kata sandi itu saya tidak tahu untuk apa kata sandinya.
greduan
@Greduan Diperbarui untuk mencetak dalam format yang Anda tanyakan.
jasonwryan