utage: encryption/decryption tool
This commit is contained in:
parent
9a8bb4f89e
commit
71e8c9d257
4 changed files with 242 additions and 0 deletions
46
utage/utage.py
Normal file
46
utage/utage.py
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
import glob
|
||||
import io
|
||||
import traceback
|
||||
|
||||
from functools import partial
|
||||
from multiprocessing.pool import Pool
|
||||
from os import path
|
||||
|
||||
from . import crypt
|
||||
|
||||
def crypt_dir(dir_in, key, encrypt=False, no_compress=False):
|
||||
if not encrypt:
|
||||
files = glob.glob(path.join(dir_in, "**/*.utage"), recursive=True)
|
||||
else:
|
||||
files = glob.glob(path.join(dir_in, "**/*.tsv"), recursive=True)
|
||||
|
||||
if len(files) == 0:
|
||||
raise FileNotFoundError("No valid files found in directory: " + dir_in)
|
||||
|
||||
pcrypt = partial(crypt_file, key=key, encrypt=encrypt, no_compress=no_compress)
|
||||
with Pool() as p:
|
||||
p.map(pcrypt, files)
|
||||
|
||||
def crypt_file(file_in, key, encrypt=False, no_compress=False):
|
||||
with open(file_in, "rb") as inf:
|
||||
in_data = inf.read()
|
||||
try:
|
||||
if encrypt:
|
||||
if not file_in.endswith(".png") and not file_in.endswith(".tsv"):
|
||||
raise ValueError("Invalid File Type for {}".format(file_in))
|
||||
if not file_in.endswith(".png") and not no_compress:
|
||||
enc_data = crypt.compress(in_data)
|
||||
enc_data = crypt.xor_crypt(enc_data, key)
|
||||
with io.open(file_in + ".utage", "wb") as output:
|
||||
output.write(enc_data)
|
||||
else:
|
||||
if not file_in.endswith(".utage"):
|
||||
raise ValueError("Invalid File Type for {}".format(file_in))
|
||||
dec_data = crypt.xor_crypt(in_data, key)
|
||||
if not file_in.endswith(".png.utage") and not no_compress:
|
||||
dec_data = crypt.decompress(dec_data)
|
||||
with io.open(file_in.replace(".utage", ""), "wb") as output:
|
||||
output.write(dec_data)
|
||||
except Exception as e:
|
||||
traceback.print_exc()
|
||||
print("Error processing file: " + file_in)
|
||||
Loading…
Add table
Add a link
Reference in a new issue