gh copilot realness
This commit is contained in:
1 parent
039af0b541
commit
78307d3d59
1 file changed
+67
-21
@@ -1,20 +1,33 @@
|
||||
"""
|
||||
asscryption: Proof-of-concept random key-based text transformer.
|
||||
|
||||
USAGE:
|
||||
Encrypt: python main.py encrypt <filein> <target> [--seed SEED] > keyfile
|
||||
filein: Input text file (plaintext)
|
||||
target: Target text file (what you want to transform to)
|
||||
--seed: (Optional) Random seed for reproducibility
|
||||
keyfile: Output key file (redirect stdout)
|
||||
|
||||
Decrypt: python main.py decrypt <filein> <keyfile>
|
||||
filein: Input text file (should match the target used in encrypt)
|
||||
keyfile: Key file produced during encryption
|
||||
|
||||
EXAMPLES:
|
||||
python main.py encrypt message.txt target.txt --seed 42 > mykey.txt
|
||||
python main.py decrypt target.txt mykey.txt
|
||||
|
||||
NOTES:
|
||||
- This is a proof-of-concept. The "key" is printed to stdout during encryption.
|
||||
- The target file must exist and be the same length as the input.
|
||||
"""
|
||||
|
||||
from itertools import repeat
|
||||
import random
|
||||
import argparse
|
||||
import difflib
|
||||
from typing import Generator, Tuple
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="program that makes random ass keys for transformation of text"
|
||||
)
|
||||
|
||||
|
||||
## there is input file, output file and potentially a list of numbers from -256 to 256.
|
||||
|
||||
|
||||
def index_list(range: range, length: int, seed=None) -> Generator[int, None, None]:
|
||||
"put in a range obj (`range(1, 19, 2)`) for range"
|
||||
if seed is not None:
|
||||
random.seed(seed)
|
||||
return (random.choice(range) for _ in repeat(None, length))
|
||||
@@ -37,17 +50,50 @@ def rebuild(text_in, this: Generator[Tuple[int, int], None, None]):
|
||||
yield chr(ord(val_in) + offset)
|
||||
|
||||
|
||||
str1 = "hello world"
|
||||
# str1 = input("what is the message in: ")
|
||||
str2 = "this shit is ass"
|
||||
# str2 = input("what is the message out: ")
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(
|
||||
description="asscryption: Random key-based text transformer (PoC). See top of file for usage."
|
||||
)
|
||||
subparsers = parser.add_subparsers(dest="command", required=True)
|
||||
|
||||
ahh_key = list(funky_function(str1, str2))
|
||||
enc = subparsers.add_parser("encrypt")
|
||||
enc.add_argument("filein")
|
||||
enc.add_argument("target")
|
||||
enc.add_argument("--seed", type=int, default=None)
|
||||
|
||||
# print("the key:")
|
||||
print(ahh_key)
|
||||
# [(6, -3), (7, -7), (6, -14), (5, 83), (5, 0), (0, 11), (7, -7), (8, -9), (1, 15), (6, -87), (7, -6), (6, -4), (5, 0), (6, -22), (8, 1), (4, 4)]
|
||||
dec = subparsers.add_parser("decrypt")
|
||||
dec.add_argument("filein")
|
||||
dec.add_argument("keyfile")
|
||||
|
||||
# print("the key works:")
|
||||
print("".join(rebuild(str1, (i for i in ahh_key))))
|
||||
# this shit is ass
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.command == "encrypt":
|
||||
# read filein
|
||||
with open(args.filein, "r", encoding="utf-8") as fin:
|
||||
text_in = fin.read()
|
||||
|
||||
# read fileout
|
||||
with open(args.target, "r", encoding="utf-8") as fout:
|
||||
text_out = fout.read()
|
||||
|
||||
# Build key
|
||||
key = list(funky_function(text_in, text_out, args.seed))
|
||||
|
||||
# Print key to stdout
|
||||
print(key)
|
||||
elif args.command == "decrypt":
|
||||
# read filein, read keyfile, print recovered text
|
||||
with open(args.filein, "r", encoding="utf-8") as fin:
|
||||
text_in = fin.read()
|
||||
with open(args.keyfile, "r", encoding="utf-8") as kf:
|
||||
import ast
|
||||
|
||||
key = ast.literal_eval(kf.read())
|
||||
|
||||
# Rebuild original text
|
||||
result = "".join(rebuild(text_in, key))
|
||||
print(result)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in new issue
Block a user