พิมพ์ (ถอดรหัส) ไฟล์ที่เข้ารหัสเป็นกลุ่ม


10

ฉันใช้-xตัวเลือกในกลุ่มเพื่อเข้ารหัสไฟล์ ฉันอ่านไฟล์นี้บ่อยกว่าที่เขียนไว้ดังนั้นฉันมักจะใช้ cat แล้วจำไว้ว่ามันถูกเข้ารหัสเพราะสิ่งที่มันแสดง .. ดังนั้นฉันต้องใช้เป็นกลุ่มใส่รหัสผ่านแล้วออกจากการใช้:q..

มีวิธีการใช้ cat (หรือคำสั่งอื่นแน่นอนผ่านรหัสผ่านของฉันที่ไหนสักแห่ง) และเพียงแค่พิมพ์ / รับเนื้อหา? หรืออาจจะมีเพียงตัวเลือกเป็นกลุ่มที่พิมพ์เฉพาะเนื้อหาโดยไม่ต้องเข้าสู่โปรแกรมแก้ไข?


มีเชลล์สคริปต์ที่มาพร้อมกับ 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 และเชื่อมต่อไฟล์เหล่านั้นในเครื่องมือบรรทัดคำสั่งอย่างง่าย ข้อมูลถูกอ่านจากไฟล์ข้อมูลถอดรหัสถูกเขียนไปยัง stdout

vimdecrypt path_to_data

รหัสผ่านได้รับผ่าน GNU getpass ซึ่งไม่รบกวนการเปลี่ยนเส้นทางของ stdin / stdout

ระบบการกำหนดค่าของ Vim ถูกถอดออกทั้งหมดซึ่งอาจมีการสนับสนุนแพลตฟอร์มอื่น ๆ ที่แตกต่างจากลินุกซ์ i386 32 บิตที่พัฒนาขึ้นมา เนื่องจากไฟล์ที่เกี่ยวข้องสองไฟล์ถูกนำมาจากโปรเจ็กต์ vim ที่ไม่ได้แก้ไขดังนั้นจึงควรเรียกคืนการสนับสนุนบนแพลตฟอร์มอื่นโดยแก้ไขส่วนหัว vim.h


ฉันลองแล้ว แต่มันทำให้ฉัน "อินพุตควรเป็นไฟล์ที่เข้ารหัสด้วยเสียงเรียกเข้า" ฉันคิดว่าอาจไม่รองรับเวอร์ชันที่ใหม่กว่าหรือเป็นกลุ่มหรืออาจเป็นปัญหาของวิธีการเข้ารหัสที่ใช้ในไฟล์ของฉัน
Pablo Matias Gomez

ฉันเห็นว่าเวทมนต์ที่ประกาศไว้ในสคริปต์นั้นmagics = None, b'VimCrypt~02!', b'VimCrypt~03!'และฉันตรวจสอบไฟล์ของฉันและเริ่มต้นด้วยVimCrypt~01!:(
Pablo Matias Gomez

VimCrypt 01 เป็น PZKIP ฝังศพใต้ถุนโบสถ์มากกว่าปักเป้า / ปักเป้า 2 สามารถสร้างบางสิ่งที่คล้ายกันได้โดยการคว้า crypt_zip.c จาก vim distro และเพิ่มการสนับสนุนใน vimdecrypt.c สำหรับการโทร crypt_zip_init และ crypt_zip_encode แทนที่จะเป็นตัวแปรปักเป้า ฉันถูกล่อลวงให้ทำสิ่งนี้ด้วยตัวเอง
ssnobody

2
คุณกำลังใช้การเข้ารหัสแบบพื้นฐานของ pkzip (ซึ่งใช้งานไม่ได้ แต่ยังคงเป็นค่าเริ่มต้นด้วยเหตุผลด้านความเข้ากันได้) และไม่ใช่ระบบที่ใช้ปักเป้าแบบใหม่ (เหมือน Vim 7.3) ฉันรู้ว่าปักเป้าเป็น VimCrypt ~ 02 และฉันคิดว่าปักเป้า 2 คือ VimCrypt ~ 03 คุณสามารถแปลงการเข้ารหัสของคุณเป็นปลาปักเป้าหรือปลาปักเป้า 2 ดังที่อธิบายไว้ที่นี่แล้ว vimdecrypt อาจทำงานให้คุณได้
harrymc

@harrymc ขอบคุณ! มันทำงานได้อย่างสมบูรณ์แบบ นี่คือเงินรางวัลของคุณ
Pablo Matias Gomez

5

นี่ไม่ใช่วิธีแก้ปัญหาที่สง่างาม --- มันรวดเร็วและสกปรก --- แต่มันใช้ได้กับไฟล์เดียวและคุณสามารถใช้มันเป็นเชลล์สคริปต์ได้

เป็นลำดับสามคำสั่งที่ทำสิ่งต่อไปนี้:

  1. เปิดไฟล์เป็นกลุ่ม (โหมดอ่านอย่างเดียว): vim -R
  2. บันทึกไฟล์ในธรรมดาและออกจาก: -c ":set key= | sav ${filename}.plain | q
  3. แมวไฟล์ธรรมดา: 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.