From 06810108f76fa60606dddedc7d19dcde8aeaa8db Mon Sep 17 00:00:00 2001 From: Uttarayan Mondal Date: Sun, 13 Dec 2020 14:17:56 +0530 Subject: [PATCH] Initial commit --- decrypt.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100755 decrypt.py diff --git a/decrypt.py b/decrypt.py new file mode 100755 index 0000000..ffeb799 --- /dev/null +++ b/decrypt.py @@ -0,0 +1,65 @@ +#!/usr/bin/env python3 +import lzstring +import json +import argparse +import os +import errno +import sys + +sys.tracebacklimit = 0 + + +def decode_rpgsave(save): + lz = lzstring.LZString() + decoded = lz.decompressFromBase64(save) + parsed = json.loads(decoded) + decoded = json.dumps(parsed, indent=4, sort_keys=True) + return decoded + + +def encode_rpgsave(save): + lz = lzstring.LZString() + encoded = lz.compressToBase64(save) + return encoded + + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-e", + "--encode", + help="Encode the decoded savefile", + action="store_true") + parser.add_argument( + "-o", + "--output", + help="Specify the output file instead of printing to stdout") + parser.add_argument( + "file", help="The rpgsave file which is either encoded / decoded") + + if len(sys.argv) == 1: + parser.print_help(sys.stderr) + sys.exit(0) + + args = parser.parse_args() + + if os.path.isfile(args.file) == False: + parser.print_usage() + raise FileNotFoundError(errno.ENOENT, os.strerror(errno.ENOENT), + args.file) + sys.exit(1) + else: + f = open(args.file, "r") + if args.encode == True: + output = encode_rpgsave(f.read()) + else: + output = decode_rpgsave(f.read()) + + if args.output: + with open(args.output, "w") as f: + f.write(output) + else: + print(output) + + +if __name__ == '__main__': + main()