我需要檢查文件是否是有效的pgp加密文件。我們得到的一些pgp文件有pgp的擴展名,有些不。我需要檢查哪些文件是pgp加密文件,哪些不是。請讓我知道是否有辦法說明。檢查文件是否是有效的pgp加密文件
2
A
回答
2
唯一確定的方法是嘗試解密文件(例如使用gpg)並解釋錯誤輸出。除非你將輸入限制爲ascii-armored文件,在這種情況下,你可以檢查裝甲。
1
python-gpgme library是GPGME的Pythonic包裝,該庫允許編程式GnuPG訪問。
如果您有可能會或可能不會GnuPG的加密某些文件:
$ head --bytes=1024k </dev/urandom> lorem
$ head --bytes=1024k < /dev/urandom | gpg --encrypt --recipient DEADBEEF > ipsum
隨着gpgme
模塊,你可以嘗試解密文件:
import gpgme
import io
for infile_path in ['lorem', 'ipsum']:
with open(infile_path, 'rb') as infile:
outfile = io.BytesIO()
try:
context.decrypt(infile, outfile)
except gpgme.GpgmeError as exc:
if exc.code == gpgme.ERR_NO_DATA:
print(
"Not a GnuPG-encrypted file: ‘{path}’ ({error})".format(
path=infile.name, error=exc.strerror))
else:
print(
"Error decrypting file: ‘{path}’ ({error})".format(
path=infile.name, error=exc.strerror))
else:
print("Successfully decrypted: ‘{path}’".format(
path=infile.name))
也就是說,您可以處理三個條件:
gpgme.Context.decrypt
方法失敗,錯誤代碼是gpgme.ERR_NO_DATA
。這意味着數據流不被識別爲GnuPG加密的數據。由於其他原因,
gpgme.Context.decrypt
方法失敗。你需要決定你在這裏關心的其他錯誤。gpgme.Context.decrypt
方法成功。顯然,該文件是一個正確加密的文件。
+0
使用Python 2.7.13運行給定的腳本我得到'NameError:name'context'未定義。 –
相關問題
- 1. 檢查GPG/PGP公鑰是否有效
- 2. 檢查Localizable.strings文件是否有效
- 3. 檢查文件名是否有效
- 4. 使用SQLCipher加密檢查文件是否是有效的SQLite數據庫
- 5. 識別PGP加密文件
- 6. DIDISOFT PGP文件加密
- 7. PGP文件解密
- 8. 需要檢查文件是否是有效的APK
- 9. 檢查文件是否是有效的圖像
- 10. 檢查文件是否是有效的jpg
- 11. config.json文件是否加密?
- 12. 如何檢查給定文件是否是C++中的有效視頻文件?
- 13. PGP加密文件或文本?
- 14. 是否有效文件名
- 15. 檢查文件是否
- 16. 有沒有辦法檢查(文件)句柄是否有效?
- 17. 檢查javascript文件是否被加載
- 18. ios - 檢查文件是否已加載
- 19. 檢查是否加載了.txt文件
- 20. 檢查是否加載了jar文件?
- 21. 訪問Ruby中的pgp加密文件
- 22. 如何檢查Java源文件是否有效(沒有錯誤)?
- 23. 檢查TXT文件是否有重合
- 24. 檢查HttpContext.Current.Request.Files [「filex」]是否有文件
- 25. 檢查文件是否有視頻流
- 26. 檢查多個文件的完整路徑是否有效
- 27. 檢查啓動時文件是否存在的有效方法
- 28. 檢查是否有效的蒸汽配置文件url
- 29. 檢查Android文件系統是否加密
- 30. 如何檢查文件是否使用AES加密(Rijndael)
查看使用它的'libmagic'和'file'命令。 –