vim 암호화 파일 인쇄 (복호화)


10

-xvim 의 옵션을 사용하여 파일을 암호화합니다. 이 파일을 쓰는 것보다이 파일을 훨씬 더 많이 읽었으므로 항상 cat을 사용하고 표시되는 내용 때문에 암호화되어 있음을 기억하십시오. 따라서 vim을 사용하고 암호를 입력 한 다음을 사용하여 종료해야합니다 :q.

cat (또는 다른 명령, 물론 암호를 어딘가에 전달)을 사용하고 내용을 인쇄 / 가져 오는 방법이 있습니까? 아니면 편집기를 입력하지 않고 내용 만 인쇄하는 vim 옵션이 있습니까?


Vim과 함께 번들로 제공되는 쉘 스크립트가있어 덜 페이저와 비슷하게 동작합니다. "$ VIMRUNTIME / macros / less.sh"에 있으며 "$ VIMRUNTIME / macros / less.vim"스크립트를 사용합니다. 참조하십시오 :help less. 불행하게도 여전히 눌러 없습니다 필요합니까 q(더 :출구에 필요).
8bittree

2
오픈 소스 vimdecrypt를 사용해보십시오 .
harrymc

답변:


5

오픈 소스 vimdecrypt를 살펴보십시오 .

vim-blowfish로 암호화 된 파일을 해독하기위한 명령 줄 도구입니다.

버전 7.3에서 vim은 강력한 내장 복어 암호화 / 복호화를 제공하며, 이는 특정 목적으로 gnupg를 통한 필터링보다 더 편리합니다. 불행히도 결과 파일은 vim 만 읽을 수 있기 때문에 배치 처리 또는 스크립팅에 사용하기가 어렵습니다. 또한 vim 크기의 의존성 및 크기를 가진 프로그램이 잠금을 해제해야하는 경우 암호화 된 데이터의 수명이 중요합니다.

Vimdecrypt는 vim 소스 인 blowfish.c와 sha256.c에서 두 개의 관련 파일을 들어 올려 간단한 명령 줄 도구로 인터페이스합니다. 파일에서 데이터를 읽고 해독 된 데이터를 표준 출력에 씁니다.

vimdecrypt path_to_data

암호는 stdin / stdout 리디렉션을 방해하지 않는 GNU getpass를 통해 얻습니다.

Vim의 configure 시스템은 완전히 제거되어 개발 된 32 비트 i386 리눅스 이외의 다른 플랫폼에 대한 지원을 중단했을 수 있습니다. 두 개의 관련 파일이 수정되지 않은 vim 프로젝트에서 가져 오기 때문에 vim.h 헤더를 수정하여 다른 플랫폼에서 지원을 복원하는 것은 쉽지 않습니다.


나는 그것을 시도했지만 "입력은 vim으로 암호화 된 파일이어야합니다"를 던졌습니다. 아마도 최신 버전이나 vim을 지원하지 않거나 내 파일에서 사용되는 암호화 방법의 문제 일 수 있습니까?
Pablo Matias Gomez

나는 그 스크립트에서 선언 된 마술들이 magics = None, b'VimCrypt~02!', b'VimCrypt~03!'있고 내 파일을 확인했고 다음과 같이 시작 한다는 것을 알았다 VimCrypt~01!:(
Pablo Matias Gomez

VimCrypt 01은 복어 / 복어가 아니라 PZKIP 암호입니다. vim distro에서 crypt_zip.c를 가져 와서 복어 변형 대신 crypt_zip_init 및 crypt_zip_encode를 호출하기 위해 vimdecrypt.c에 지원을 추가하여 비슷한 것을 만들 수 있습니다. 나는 이것을 스스로하고 싶은 유혹을 받고있다.
ssnobody

2
기존 pkzip 기반 암호화 (손상 되었으나 여전히 호환성 이유로 기본값 임)를 사용하고 있으며 새 (Vim 7.3 현재) 복어 기반 시스템은 사용하지 않습니다. 복어는 VimCrypt ~ 02라는 것을 알고 있으며 복어 2는 VimCrypt ~ 03이라고 가정합니다. 여기설명 된대로 암호화를 강력한 복어 또는 복어 2로 변환 하면 vimdecrypt가 작동합니다.
harrymc

감사합니다! 완벽하게 작동했습니다. 바운티입니다.
Pablo Matias Gomez

5

이것은 우아한 해결책은 아니지만 빠르고 빠르지 만 단일 파일에서 작동하며 쉘 스크립트로 사용할 수 있습니다.

다음을 수행하는 세 가지 명령 시퀀스입니다.

  1. vim에서 파일 열기 (읽기 전용 모드) : vim -R
  2. 파일을 일반 텍스트로 저장하고 종료하십시오. -c ":set key= | sav ${filename}.plain | q
  3. 평문 파일을 cat : cat ${filename}.plain
  4. (선택 사항) 일반 텍스트 파일을 삭제하십시오. rm ${filename}.plain

결국 암호를 vim 명령으로 전달하는 스크립트를 가질 수 있습니다. 간단한 스크립트로 다음과 같습니다.

filename=$1
password=$2

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

여기서 첫 번째 인수는 파일 이름이고 두 번째 인수는 비밀번호입니다.

물론 명심해야 할 몇 가지 사항이 있습니다.

  • 이름이 생긴 기존 파일을 덮어 쓰지 않아야합니다 ${filename}.plain.
  • 암호가 명령 행에 나타나고 기록에 저장됩니다. 매번 암호를 묻는 메시지가 표시되면 <<< $password부품을 제거하십시오 .
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.