во время резервного копирования мне приходится зашифровать (из соображений безопасности binance) свой кошелек с помощью пароля.
Проблема
Я создал свой пароль, используя разные слова, теперь я забыл порядок слов, который использовал при создании пароля. у меня есть 16 слов, которые я мог бы использовать при создании пароля, и я уверен, что я использовал не более 8 слов (не символов), поэтому длина пароля может составлять от 25 до 30 символов, а слова можно использовать только один раз.
Итак, возможная комбинация = 16 * 15 * 14 * 13 * 12 * 11 * 10 * 9 = 518918400
Список слов, например (это не настоящие слова, а просто примеры слов) = ['стул', 'мальчик', '123456789', '987654321, '@', '!', «привет», «это», «есть», «все», «слова»]
предсказанные пароли
- chairboy@hello!thisareall
- chairboy@hello!thisarewords
- chairboy@hello!thisarehello
и т. д.< /li>
поэтому я думаю, смогу ли я использовать Python для расшифровки этого на моем локальном компьютере, чтобы найти правильный пароль для входа в систему в моей учетной записи Web3.
это данные qr-кода, я не знаю, как я могу использовать свой пароль для расшифровки этого?
данные реального кошелька
Код: Выделить всё
{"iv":"m9y8EQlmxfswQoMC","salt":"J2h/DDfFLmWv6Ec0fb3jC6aFQ2tLShYnJUOGmIsiodE=","secrets":"AbDfnru4Z72tdZqizS1TeGqpXiucrm6nZzfJ9FmNMrxmqAM7YVHR8aaz3xy+9Y/TDaU6C1OMi4nEnwycJOGts3rxNl/id0nwMElxctFvUxlAhaL2fb3BCseDUVTU1ap2kF2etq5jkXmtcfcR6JHuZpiiPWHWGK/aCxSc7yHVdZzDm5jTAOGKM7XpZjwafz4cupY31Frrso6xF/VgrMSaXQ==","version":2}
Код: Выделить всё
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend
import hashlib
from base64 import b64decode
from cryptography.hazmat.primitives import padding
# Base64 decode function
def safe_b64decode(b64_string):
return b64decode(b64_string)
# Your wallet JSON data (Base64 encoded values)
iv = safe_b64decode("m9y8EQlmxfswQoMC") # 16 bytes (128 bits)
salt = safe_b64decode("J2h/DDfFLmWv6Ec0fb3jC6aFQ2tLShYnJUOGmIsiodE=") # 32 bytes (256 bits)
secrets = safe_b64decode("AbDfnru4Z72tdZqizS1TeGqpXiucrm6nZzfJ9FmNMrxmqAM7YVHR8aaz3xy+9Y/TDaU6C1OMi4nEnwycJOGts3rxNl/id0nwMElxctFvUxlAhaL2fb3BCseDUVTU1ap2kF2etq5jkXmtcfcR6JHuZpiiPWHWGK/aCxSc7yHVdZzDm5jTAOGKM7XpZjwafz4cupY31Frrso6xF/VgrMSaXQ==") # Encrypted data
# The password used to create the wallet (replace with the actual password)
password = 'mypassword' # Replace this with the actual password
# Step 1: Deriving the key using PBKDF2HMAC (PBKDF2 with HMAC for key derivation)
key_derivation = PBKDF2HMAC(
algorithm="sha256", # Use "sha256" string directly
salt=salt, # Salt provided in the wallet
iterations=100000, # 100,000 iterations (standard in Ethereum wallets)
length=32, # Length for AES-256 key (32 bytes)
backend=default_backend()
)
# Derive the key from the password and salt
encryption_key = key_derivation.derive(password.encode())
# Step 2: AES Decryption (AES-CBC mode)
cipher = Cipher(algorithms.AES(encryption_key), modes.CBC(iv), backend=default_backend())
decryptor = cipher.decryptor()
# Step 3: Decrypt the secrets field (the encrypted data)
decrypted_data = decryptor.update(secrets) + decryptor.finalize()
# Step 4: Unpadding the decrypted data (if it is padded)
unpadder = padding.PKCS7(128).unpadder()
decrypted_data = unpadder.update(decrypted_data) + unpadder.finalize()
# Step 5: Output the decrypted data (it should be the private key or secret)
print("Decrypted Secrets (Private Key):")
print(decrypted_data.decode('utf-8')) # Adjust this if the data format is different
- поэтому я хочу знаете, как подойти к этой проблеме.
- можно ли расшифровать это оффлайн или нет?
Подробнее здесь: https://stackoverflow.com/questions/792 ... rute-force