From 98cc1758104a772670288d2fc5ded4f610a16658 Mon Sep 17 00:00:00 2001 From: Fierelier Date: Wed, 1 Nov 2023 02:16:32 +0100 Subject: [PATCH] Add AES encryption util --- client/fstream-util-aes_to_pipe.py | 38 ++++++++++++++++++++++++++++++ client/fstream-util-pipe_to_aes.py | 37 +++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100755 client/fstream-util-aes_to_pipe.py create mode 100755 client/fstream-util-pipe_to_aes.py diff --git a/client/fstream-util-aes_to_pipe.py b/client/fstream-util-aes_to_pipe.py new file mode 100755 index 0000000..0a596ab --- /dev/null +++ b/client/fstream-util-aes_to_pipe.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 +import sys + +oldexcepthook = sys.excepthook +def newexcepthook(type,value,traceback): + oldexcepthook(type,value,traceback) + #input("Press ENTER to quit.") +sys.excepthook = newexcepthook + +import os +p = os.path.join +pUp = os.path.dirname +s = False +if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'): + s = os.path.realpath(sys.executable) +else: + s = os.path.realpath(__file__) +sp = pUp(s) + +# script start +try: + from Cryptodome.Cipher import AES +except: + from Crypto.Cipher import AES +import hashlib +bufferSize = 128 +unbufferedStdout = os.fdopen(sys.stdout.fileno(),"wb",0) # Make unbuffered stdout + +salt = b'\x85a`8\xa1n \xb6\x9aRU/\x0e\xdc*\xa3' +pw = hashlib.pbkdf2_hmac("sha256",os.environ["fstream_aespass"].encode("utf-8"), salt, 100000, 32) + +while True: + iv = sys.stdin.buffer.read(AES.block_size) + if len(iv) != AES.block_size: sys.exit(0) + data = sys.stdin.buffer.read(bufferSize) + if len(data) != bufferSize: sys.exit(0) + cipher = AES.new(pw, AES.MODE_CBC, iv = iv) + unbufferedStdout.write(cipher.decrypt(data)) diff --git a/client/fstream-util-pipe_to_aes.py b/client/fstream-util-pipe_to_aes.py new file mode 100755 index 0000000..03c18d5 --- /dev/null +++ b/client/fstream-util-pipe_to_aes.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +import sys + +oldexcepthook = sys.excepthook +def newexcepthook(type,value,traceback): + oldexcepthook(type,value,traceback) + #input("Press ENTER to quit.") +sys.excepthook = newexcepthook + +import os +p = os.path.join +pUp = os.path.dirname +s = False +if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'): + s = os.path.realpath(sys.executable) +else: + s = os.path.realpath(__file__) +sp = pUp(s) + +# script start +try: + from Cryptodome.Cipher import AES +except: + from Crypto.Cipher import AES +import hashlib +bufferSize = 128 +unbufferedStdout = os.fdopen(sys.stdout.fileno(),"wb",0) # Make unbuffered stdout + +salt = b'\x85a`8\xa1n \xb6\x9aRU/\x0e\xdc*\xa3' +pw = hashlib.pbkdf2_hmac("sha256",os.environ["fstream_aespass"].encode("utf-8"), salt, 100000, 32) + +while True: + data = sys.stdin.buffer.read(bufferSize) + if len(data) != bufferSize: sys.exit(0) + cipher = AES.new(pw, AES.MODE_CBC) + unbufferedStdout.write(cipher.iv) + unbufferedStdout.write(cipher.encrypt(data))