stockholm/swat.py
2025-07-08 14:24:10 +02:00

45 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
from pathlib import Path
from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA
from base64 import b64encode, b64decode
import argparse
def decrypt_symmetric_key(encrypted_key, private_key_path="id_rsa"):
"""
Decrypts the symmetric key using the provided private key.
:param encrypted_key_path: Path to the file containing the encrypted symmetric key.
:param private_key_path: Path to the private RSA key file.
:return: Decrypted symmetric key or None if decryption fails.
"""
try:
with open(private_key_path, "rb") as private_key_file:
private_key = RSA.import_key(private_key_file.read())
cipher_rsa = PKCS1_OAEP.new(private_key)
encrypted_symmetric_key = encrypted_key.encode('utf-8') if isinstance(encrypted_key, str) else encrypted_key
symmetric_key = cipher_rsa.decrypt(b64decode(encrypted_symmetric_key))
return symmetric_key
except Exception as e:
print(f"Error decrypting symmetric key: {e}")
return None
def main():
parser = argparse.ArgumentParser(description="Decrypt a symmetric key using a private RSA key.")
parser.add_argument("encrypted_key", type=str, help="Encrypted symmetric key")
parser.add_argument("--private_key", type=str, default="id_rsa", help="Path to the private RSA key file (default: id_rsa)")
args = parser.parse_args()
symmetric_key = decrypt_symmetric_key(args.encrypted_key, args.private_key)
if symmetric_key:
print(symmetric_key.decode('utf-8') if isinstance(symmetric_key, bytes) else symmetric_key)
else:
print("Failed to decrypt the symmetric key.")
if __name__ == "__main__":
main()