Vim şifreli bir dosyayı yazdırma (şifresini çözme)


10

-xBir dosyayı şifrelemek için vim'de seçeneği kullanıyorum . Bu dosyaları yazdığımdan çok daha fazla okudum, bu yüzden her zaman kedi kullanıyorum ve daha sonra gösterdiği için şifreli olduğunu hatırlıyorum. Bu yüzden vim kullanmak zorundayım, parolayı girip sonra çıkıyorum :q..

Cat (veya başka bir komut, elbette şifremi bir yere geçirerek) kullanmanın ve sadece içeriği yazdırmanın / almanın herhangi bir yolu var mı? Ya da sadece içeriği editöre girmeden yazdıran bir vim seçeneği var mı?


Vim ile birlikte daha az çağrı cihazına benzer şekilde davranacak şekilde ayarlanmış bir kabuk komut dosyası var. "$ VIMRUNTIME / macros / less.sh" içinde bulunur ve "$ VIMRUNTIME / macros / less.vim" komut dosyasını kullanır. Bkz :help less. Ne yazık ki hala çıkmak için q( :gerekli) tuşuna basmayı gerektirmez .
8bittree

2
Açık kaynaklı vimdecrypt'i deneyin .
harrymc

Yanıtlar:


5

Açık kaynaklı vimdecrypt'e bir göz atın :

Vim-blowfish şifreli dosyaların şifresini çözmek için komut satırı aracı.

7.3 sürümünden itibaren vim, belirli amaçlar için gnupg yoluyla filtrelemekten daha uygun olan güçlü yerleşik blowfish şifreleme / şifre çözme sunar. Ne yazık ki ortaya çıkan dosyalar sadece toplu işlem veya komut dosyalarında kullanılmasını zorlaştıran vim tarafından okunabilir. Şifreli verilerin uzun ömürlülüğü, vim bağımlılıkları ve boyutu olan bir programın kilidini açmak için gerekli olması durumunda endişe vericidir.

Vimdecrypt, vim kaynağından blowfish.c ve sha256.c'den iki ilgili dosyayı kaldırır ve bunları basit bir komut satırı aracında arayüzler. Veriler bir dosyadan okunur, şifresi çözülmüş veriler stdout'a yazılır.

vimdecrypt path_to_data

Parola, stdin / stdout yönlendirmesine müdahale etmeyen GNU getpass aracılığıyla elde edilir.

Vim'in yapılandırma sistemi tamamen geliştirildi ve geliştirildiği 32 bit i386 linux dışındaki platformlar için desteği bozmuş olabilir. İlgili iki dosya değiştirilmemiş vim projesinden alındığından, vim.h üstbilgisini düzelterek diğer platformlarda desteği geri yüklemek önemsiz olmalıdır.


Denedim ama bana "girdi bir vim şifreli dosya olmalıdır" atar. Ben belki daha yeni sürümleri veya vim desteklemiyor ya da belki benim dosyada kullanılan şifreleme yöntemi bir sorun olduğunu düşünüyorum?
Pablo Matias Gomez

Bu senaryoda bildirilen büyülerin olduğunu magics = None, b'VimCrypt~02!', b'VimCrypt~03!'ve dosyamı kontrol ettiğimi görüyorum ve şöyle başlıyor VimCrypt~01!:(
Pablo Matias Gomez

VimCrypt 01, blowfish / blowfish2 yerine PZKIP crypt'tir2. Vim dağıtımından crypt_zip.c'yi alıp balon balığı varyantları yerine crypt_zip_init ve crypt_zip_encode'u çağırmak için vimdecrypt.c'ye destek ekleyerek benzer bir şey oluşturabilir. ALMOST bunu kendim yapmaya ayarlıyorum.
ssnobody

2
Yeni (Vim 7.3 itibariyle) balon balığı tabanlı sistemi değil, eski pkzip tabanlı şifrelemeyi (kırık, ancak uyumluluk nedeniyle hala varsayılan) kullanıyorsunuz. Blowfish VimCrypt ~ 02 olduğunu biliyorum ve blowfish2 VimCrypt ~ 03 olduğunu varsayalım. Şifrelemenizi burada açıklandığı gibi daha güçlü balon balığı veya balon balığı2'ye dönüştürebilirsiniz ve daha sonra vimdecrypt muhtemelen sizin için çalışacaktır.
harrymc

@harrymc Teşekkürler! mükemmel çalıştı. İşte ödülün.
Pablo Matias Gomez

5

Bu zarif bir çözüm değil - hızlı ve kirli --- ama tek dosyalar üzerinde çalışır ve bir kabuk komut dosyası olarak kullanabilirsiniz.

Aşağıdakileri gerçekleştiren üç komut dizisidir:

  1. Dosyayı vim'de aç (salt okunur mod): vim -R
  2. Dosyayı düz metin olarak kaydedin ve çıkın: -c ":set key= | sav ${filename}.plain | q
  3. Düz metin dosyasına gidin: cat ${filename}.plain
  4. (İsteğe bağlı) düz metin dosyasını silin: rm ${filename}.plain

Sonunda parolayı vim komutuna geçiren bir komut dosyanız olabilir. Basit bir komut dosyası olarak:

filename=$1
password=$2

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

burada ilk argüman dosya adı ve ikincisi paroladır.

Elbette aklınızda bulundurmanız gereken birkaç şey var:

  • Bu ada sahip mevcut dosyaların üzerine yazmadığınızdan emin olun ${filename}.plain.
  • Parola komut satırında görünür ve geçmişe kaydedilir. Her seferinde bir parola istenmesini istiyorsanız, <<< $passwordparçayı kaldırın .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.