From 4a3ae9929f4657a0f2e9ccf393205655895bb501 Mon Sep 17 00:00:00 2001 From: Gab <24553253+gabrix73@users.noreply.github.com> Date: Sat, 8 Mar 2025 14:59:35 +0100 Subject: Add files via upload --- security/memory.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 security/memory.py (limited to 'security/memory.py') diff --git a/security/memory.py b/security/memory.py new file mode 100644 index 0000000..6a6e96e --- /dev/null +++ b/security/memory.py @@ -0,0 +1,38 @@ + +import nacl.bindings +import ctypes +import platform + +class SecureMemory: + def __init__(self): + self.protected_blocks = [] + + def protect_memory(self, data: bytes) -> bytearray: + """Protect memory block from being swapped to disk""" + protected = bytearray(data) + self.protected_blocks.append(protected) + + if platform.system() != 'Windows': + try: + # Lock memory to prevent swapping + libc = ctypes.CDLL('libc.so.6') + libc.mlock( + ctypes.c_void_p(protected.__array_interface__['data'][0]), + len(protected) + ) + except: + pass + + return protected + + def secure_wipe(self, data: bytearray): + """Securely wipe memory block""" + if data in self.protected_blocks: + self.protected_blocks.remove(data) + + nacl.bindings.sodium_memzero(data) + + def wipe_all(self): + """Wipe all protected memory blocks""" + for block in self.protected_blocks[:]: + self.secure_wipe(block) -- cgit v1.2.3