Files
VulturiCracked/Panel/core/modules/encryption.py
T
2026-08-27 11:02:04 -06:00

76 lines
2.0 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Coded by [email protected]
# Import modules
from base64 import b64encode, b64decode
# Import packages
from core.models.accounts import clients_db
# Get encryption key
def GetEncryptionKey(owner: str) -> str:
response = clients_db.execute(
sql="SELECT key FROM encryption WHERE owner = ?",
values=[owner],
commit_changes=False
)
# Skip if empty
if len(response) == 0:
return ""
# Return values
else:
return response[0][0]
# Change encryption key
def SetEncryptionKey(owner: str, key: str):
clients_db.execute(
sql="UPDATE encryption SET key = ? WHERE owner = ?",
values=[key, owner],
commit_changes=True
)
class RC4Cipher:
""" RC4 encrypt/decrypt """
def __init__(self, key):
assert(isinstance(key, (bytes, bytearray)))
# key scheduling
S = list(range(0x100))
j = 0
for i in range(0x100):
j = (S[i] + key[i % len(key)] + j) & 0xff
S[i], S[j] = S[j], S[i]
self.S = S
def CryptBytes(self, data):
"""
Encrypts/decrypts data (It's the same thing!)
"""
assert(isinstance(data, (bytes, bytearray)))
return bytes([a ^ b for a, b in zip(data, self._keystream_generator())])
def Encrypt(self, string):
"""
Encrypts string
"""
return b64encode(self.CryptBytes(string.encode('utf8'))).decode('utf8')
def Decrypt(self, string):
"""
Decrypts string
"""
return self.CryptBytes(b64decode(string)).decode('utf8')
def _keystream_generator(self):
"""
Generator that returns the bytes of keystream
"""
S = self.S.copy()
x = y = 0
while True:
x = (x + 1) & 0xff
y = (S[x] + y) & 0xff
S[x], S[y] = S[y], S[x]
i = (S[x] + S[y]) & 0xff
yield S[i]