ファイルが有効なPGM暗号化ファイルであるかどうかを確認する必要があります。私たちが取得するいくつかのpgpファイルには、pgpの拡張子といくつかありません。どのファイルがpgp暗号化されたファイルで、どのファイルが暗号化されていないか確認する必要があります。私に知らせる方法があれば教えてください。ファイルが有効なPGM暗号化ファイルであることを確認してください
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))
次の3つの条件を処理することができます:
gpgme.Context.decrypt
メソッドが失敗し、エラーコードはgpgme.ERR_NO_DATA
です。これは、データストリームがGnuPGで暗号化されたデータとして認識されなかったことを意味します。gpgme.Context.decrypt
メソッドが何らかの理由で失敗します。あなたがここで気になる他のエラーを決める必要があります。gpgme.Context.decrypt
メソッドは成功します。明らかに、ファイルは正しく暗号化されたファイルです。
+0
Python 2.7.13でスクリプトを実行すると、 'NameError:name 'コンテキスト'が定義されていません。 'というメッセージが表示されます。 –
関連する問題
- 1. ファイルがSQLCipher暗号化付きの有効なSQLiteデータベースであることを確認してください
- 2. 有効なファイル拡張子を確認してください
- 3. Android:ファイルが有効なSQLiteデータベースであることを確認してください
- 4. WooCommerce:クーポンが有効であることを確認してください
- 5. BitmapDataが有効であることを確認してください
- 6. 画像が有効であることを確認してください
- 7. Ionic Configファイルの解析エラー。それが有効であることを確認してくださいJSON
- 8. 複数のファイルへのフルパスが有効であることを確認してください
- 9. zipまたはgzipがパスワードで暗号化されていることを確認してください(Node.JS)
- 10. シェルスクリプト:ファイルがディレクトリではなくファイルであることを確認してください。
- 11. ファイルがOfficeアドインマニフェストであることを確認してください
- 12. .txtファイルが最新であることを確認してください
- 13. ANT:ファイルが空であることを確認してください
- 14. ファイルが疎であることを確認してください
- 15. dirのファイルが同じであることを確認してください
- 16. 入力ファイルが空でない場合は、.pdfファイルであることを確認してください。
- 17. HttpContext.Current.Request.Files ["filex"]にファイルがあることを確認してください
- 18. Moment.jsで有効なhh:mmフォーマットを確認してください
- 19. URLが郵便番号であることを確認してください
- 20. 番号が777であることを確認してください。
- 21. デフォルトのadmin $共有がServerNameで有効になっていることを確認してください
- 22. NSToolbarItem: "このツールバーアイテムに有効なフレーム/最小/最大サイズがあることを確認してください"?
- 23. Ouathトークンが無効であることを確認してください。
- 24. 文字の値が有効なRオブジェクト名であることを確認してください
- 25. sdcard固有のフォルダにあるファイルを確認してください
- 26. Angular2:http.getでファイルが存在することを確認してください
- 27. CredSSPがPowershellでリモートで有効になっていることを確認してください
- 28. フレームキャッシュにあるファイルを確認してください
- 29. surfaceViewまたは関連SurfaceHolderに有効なSurfaceがあることを確認してください
- 30. Bashスクリプト:共有ファイルが別のサーバで開かれていることを確認してください
'libmagic'とそれを使用する' file'コマンドを調べてください。 –