mirror of
https://github.com/damp11113/IDRB.git
synced 2025-04-27 06:28:09 +00:00
86 lines
2.6 KiB
Python
86 lines
2.6 KiB
Python
"""
|
|
This file is part of IDRB Project.
|
|
|
|
IDRB Project is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
IDRB Project is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with IDRB Project. If not, see <https://www.gnu.org/licenses/>.
|
|
"""
|
|
|
|
from Crypto.Cipher import AES
|
|
from Crypto.Protocol.KDF import scrypt
|
|
import numpy as np
|
|
|
|
def CV22DPG(cv2_array):
|
|
try:
|
|
if cv2_array is None or len(cv2_array.shape) < 3:
|
|
print("Invalid or empty array received.")
|
|
return None
|
|
|
|
if len(cv2_array.shape) == 2:
|
|
cv2_array = cv2_array[:, :, np.newaxis]
|
|
|
|
data = np.flip(cv2_array, 2)
|
|
data = data.ravel()
|
|
data = np.asfarray(data, dtype='f')
|
|
return np.true_divide(data, 255.0)
|
|
except Exception as e:
|
|
print("Error in CV22DPG:", e)
|
|
return None
|
|
|
|
def calculate_speed(start_time, end_time, data_size):
|
|
elapsed_time = end_time - start_time
|
|
speed_kbps = (data_size / elapsed_time) / 1024 # Convert bytes to kilobytes
|
|
return speed_kbps
|
|
|
|
def calculate_throughput(start_time, end_time, total_bytes):
|
|
duration = end_time - start_time
|
|
throughput_kbps = (total_bytes * 8) / (duration * 1000)
|
|
return throughput_kbps
|
|
|
|
def limit_string_in_line(text, limit):
|
|
lines = text.split('\n')
|
|
new_lines = []
|
|
|
|
for line in lines:
|
|
words = line.split()
|
|
new_line = ''
|
|
|
|
for word in words:
|
|
if len(new_line) + len(word) <= limit:
|
|
new_line += word + ' '
|
|
else:
|
|
new_lines.append(new_line.strip())
|
|
new_line = word + ' '
|
|
|
|
if new_line:
|
|
new_lines.append(new_line.strip())
|
|
|
|
return '\n'.join(new_lines)
|
|
|
|
def unpad_message(padded_message):
|
|
padding_length = padded_message[-1]
|
|
return padded_message[:-padding_length]
|
|
|
|
def decrypt_data(encrypted_message, password, salt, iv):
|
|
# Derive the key from the password and salt
|
|
key = scrypt(password, salt, key_len=32, N=2 ** 14, r=8, p=1)
|
|
|
|
# Initialize AES cipher in CBC mode
|
|
cipher = AES.new(key, AES.MODE_CBC, iv)
|
|
|
|
# Decrypt the message
|
|
decrypted_message = cipher.decrypt(encrypted_message)
|
|
|
|
# Unpad the decrypted message
|
|
unpadded_message = unpad_message(decrypted_message)
|
|
|
|
return unpadded_message |