Stampa (decodifica) un file crittografato vim


10

Uso l' -xopzione in vim per crittografare un file. Ho letto questi file molto più volte di quanto scrivo su di esso, quindi uso sempre cat e poi ricordo che è crittografato a causa di ciò che mostra .. Quindi devo usare vim, inserire la password e uscire usando :q..

C'è un modo per usare cat (o un altro comando, ovviamente passando la mia password da qualche parte) e semplicemente stampare / ottenere il contenuto? O forse c'è solo un'opzione vim che stampa solo i contenuti senza entrare nell'editor?


C'è uno script di shell in bundle con Vim che lo imposta per comportarsi in modo simile al cercapersone meno. Si trova in "$ VIMRUNTIME / macros / less.sh" e utilizza lo script "$ VIMRUNTIME / macros / less.vim". Vedere :help less. Sfortunatamente richiede ancora la pressione q(non :necessaria) per uscire.
8bittree,

2
Prova il vimdecrypt open-source .
harrymc,

Risposte:


5

Dai un'occhiata al vimdecrypt open-source :

Strumento da riga di comando per decrittografare file crittografati con vim-blowfish.

A partire dalla versione 7.3, vim offre una crittografia / decrittografia Blowfish integrata, che per alcuni scopi è più conveniente del filtraggio tramite gnupg. Sfortunatamente i file risultanti possono essere riletti solo da vim, il che rende difficile usarli nell'elaborazione batch o negli script. Anche la longevità dei dati crittografati è una preoccupazione se è necessario un programma con le dipendenze e le dimensioni di VIM per sbloccarlo.

Vimdecrypt solleva due file rilevanti dalla fonte vim, blowfish.c e sha256.c, e li interfaccia in un semplice strumento da riga di comando. I dati vengono letti da un file, i dati decrittografati vengono scritti su stdout.

vimdecrypt path_to_data

La password viene ottenuta tramite getpass GNU che non interferisce con il reindirizzamento stdin / stdout.

Il sistema di configurazione di Vim è completamente rimosso, il che potrebbe avere un supporto non funzionante per piattaforme diverse dal Linux i386 a 32 bit su cui è stato sviluppato. Dato che i due file rilevanti sono presi dal progetto vim non modificato, dovrebbe essere banale ripristinare il supporto su altre piattaforme fissando l'intestazione vim.h.


L'ho provato ma mi lancia "l'input dovrebbe essere un file crittografato con VIM". Penso che forse non supporta le versioni più recenti o vim o forse è un problema del metodo di crittografia utilizzato nel mio file?
Pablo Matias Gomez,

Vedo che le magie dichiarate in quella sceneggiatura sono magics = None, b'VimCrypt~02!', b'VimCrypt~03!'e ho controllato il mio file e inizia con VimCrypt~01!:(
Pablo Matias Gomez,

VimCrypt 01 è la cripta PZKIP piuttosto che blowfish / blowfish2. Potrebbe creare qualcosa di simile afferrando crypt_zip.c da vim distro e aggiungendo supporto in vimdecrypt.c per chiamare crypt_zip_init e crypt_zip_encode invece delle varianti blowfish. Sono quasi tentato di farlo da solo.
ssnobody,

2
Stai usando la vecchia crittografia basata su pkzip (che è rotta, ma ancora quella predefinita per motivi di compatibilità) e non il nuovo sistema (a partire da Vim 7.3) basato su blowfish. So che Blowfish è VimCrypt ~ 02 e suppongo che Blowfish2 sia VimCrypt ~ 03. Potresti convertire la tua crittografia in blowfish o blowfish2 più forti, come descritto qui , e quindi vimdecrypt probabilmente funzionerà per te.
harrymc,

@harrymc Grazie! ha funzionato perfettamente. Ecco la tua generosità.
Pablo Matias Gomez,

5

Questa non è una soluzione elegante --- è veloce e sporca --- ma funziona su singoli file e puoi usarla come script di shell.

È una sequenza di tre comandi che eseguono quanto segue:

  1. Apri file in vim (modalità sola lettura): vim -R
  2. Salvare il file in testo semplice ed uscire: -c ":set key= | sav ${filename}.plain | q
  3. Cat il file in chiaro: cat ${filename}.plain
  4. (Opzionalmente) elimina il file in chiaro: rm ${filename}.plain

Alla fine puoi avere uno script che passa anche la password al comando vim. Come semplice script sarebbe:

filename=$1
password=$2

vim -R -c ":set key= | sav ${filename}.plain | q" -- ${filename} <<< $password && cat ${filename}.plain && rm ${filename}.plain

dove il primo argomento è il nome file e il secondo è la password.

Naturalmente, ci sono diverse cose che dovresti tenere a mente:

  • Assicurati di non sovrascrivere i file esistenti che hanno il nome ${filename}.plain.
  • La password apparirà sulla riga di comando e sarà salvata nella cronologia. Se si desidera ricevere una password ogni volta, rimuovere la <<< $passwordparte.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.