From df36047aeec6359eaf8fcc8858a72a807a4c5f19 Mon Sep 17 00:00:00 2001 From: bee-san Date: Thu, 20 May 2021 22:01:14 +0100 Subject: [PATCH 1/3] Nearly done! --- xortool/tool_main.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/xortool/tool_main.py b/xortool/tool_main.py index 56af291..9499a8d 100755 --- a/xortool/tool_main.py +++ b/xortool/tool_main.py @@ -121,7 +121,20 @@ def main(): cleanup() sys.exit(1) +def xortool_api(ciphertext, config): + PARAMETERS.update(parse_parameters(__doc__, __version__)) + PARAMETERS["known_key_length"] = guess_key_length(ciphertext) + try_chars = " " + + (probable_keys, + key_char_used) = guess_probable_keys_for_chars(ciphertext, try_chars) + + out["Printable"] = api_print_keys(probable_keys) + out["Plaintext"] = produce_plaintexts(ciphertext, probable_keys, key_char_used) + + return out + # ----------------------------------------------------------------------------- # LOADING CIPHERTEXT # ----------------------------------------------------------------------------- @@ -313,6 +326,16 @@ def all_keys(key_possible_bytes, key_part=(), offset=0): keys += all_keys(key_possible_bytes, key_part + (c,), offset + 1) return keys +def api_print_keys(keys): + fmt = "{C_COUNT}{:d}{C_RESET} possible key(s) of length {C_COUNT}{:d}{C_RESET}:" + to_print = "" + to_print += fmt.format(len(keys), len(keys[0]), **COLORS) + for key in keys[:5]: + to_print += (C_KEY + repr(key)[2:-1] + C_RESET) + if len(keys) > 10: + to_print += ("...") + return to_print + def print_keys(keys): if not keys: From 5abfadd5ae54f24e529659d73e878933eb3517ba Mon Sep 17 00:00:00 2001 From: bee-san Date: Sat, 22 May 2021 14:36:08 +0100 Subject: [PATCH 2/3] API --- xortool/tool_main.py | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/xortool/tool_main.py b/xortool/tool_main.py index 9499a8d..869c9fe 100755 --- a/xortool/tool_main.py +++ b/xortool/tool_main.py @@ -122,6 +122,7 @@ def main(): sys.exit(1) def xortool_api(ciphertext, config): + out = {} PARAMETERS.update(parse_parameters(__doc__, __version__)) PARAMETERS["known_key_length"] = guess_key_length(ciphertext) @@ -131,7 +132,7 @@ def xortool_api(ciphertext, config): key_char_used) = guess_probable_keys_for_chars(ciphertext, try_chars) out["Printable"] = api_print_keys(probable_keys) - out["Plaintext"] = produce_plaintexts(ciphertext, probable_keys, key_char_used) + out["Plaintext"] = api_produce_plaintexts(ciphertext, probable_keys, key_char_used) return out @@ -366,6 +367,47 @@ def percentage_valid(text): # PRODUCE OUTPUT # ----------------------------------------------------------------------------- +def api_produce_plaintexts(ciphertext, keys, key_char_used): + """ + Produce plaintext variant for each possible key, + returns dicts with keys, percentage of valid + characters and used most frequent character + """ + + # this is split up in two files since the + # key can contain all kinds of characters + + key_mapping = {} + perc_mapping = {} + plaintext = [] + + # Change this for the % threshold. + threshold_valid = 75 + count_valid = 0 + + for index, key in enumerate(keys): + key_index = str(index).rjust(len(str(len(keys) - 1)), "0") + key_repr = repr(key) + + key_mapping[key_index] = {} + # file_name = os.path.join(DIRNAME, key_index + ".out") + + dexored = dexor(ciphertext, key) + # ignore saving file when known plain is provided and output doesn't contain it + if PARAMETERS["known_plain"] and PARAMETERS["known_plain"] not in dexored: + continue + perc = round(100 * percentage_valid(dexored)) + if perc > threshold_valid: + count_valid += 1 + key_mapping[key_index] = key_repr + perc_mapping[file_name] = [repr(key_char_used[key]), perc] + + # fmt = "Found {C_COUNT}{:d}{C_RESET} plaintexts with {C_COUNT}{:d}{C_RESET}%+ valid characters" + if PARAMETERS["known_plain"]: + plaintext.append(PARAMETERS["known_plain"].decode('ascii')) + + return (plaintext, key_mapping, perc_mapping) + def produce_plaintexts(ciphertext, keys, key_char_used): """ Produce plaintext variant for each possible key, From d3430fa4f0f220405adbb8162cf14f8cd284977f Mon Sep 17 00:00:00 2001 From: bee-san Date: Sat, 22 May 2021 18:28:24 +0100 Subject: [PATCH 3/3] idk --- poetry.lock | 17 +++++++++++ xortool/tool_main.py | 27 +++++++++++++----- xortool_out/0.out | Bin 0 -> 96324 bytes xortool_out/filename-char_used-perc_valid.csv | 2 ++ xortool_out/filename-key.csv | 2 ++ 5 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 poetry.lock create mode 100644 xortool_out/0.out create mode 100644 xortool_out/filename-char_used-perc_valid.csv create mode 100644 xortool_out/filename-key.csv diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 0000000..a9b5436 --- /dev/null +++ b/poetry.lock @@ -0,0 +1,17 @@ +[[package]] +name = "docopt" +version = "0.6.2" +description = "Pythonic argument parser, that will make you smile" +category = "main" +optional = false +python-versions = "*" + +[metadata] +lock-version = "1.1" +python-versions = "^3.4" +content-hash = "62aa4369f4dee07a290e30e7a304012bbce1d7cb9e15a3f831016ea7440be818" + +[metadata.files] +docopt = [ + {file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"}, +] diff --git a/xortool/tool_main.py b/xortool/tool_main.py index 869c9fe..7c0bc35 100755 --- a/xortool/tool_main.py +++ b/xortool/tool_main.py @@ -122,18 +122,21 @@ def main(): sys.exit(1) def xortool_api(ciphertext, config): + ciphertext = str.encode(ciphertext) + try_chars = str.encode(" ") out = {} PARAMETERS.update(parse_parameters(__doc__, __version__)) PARAMETERS["known_key_length"] = guess_key_length(ciphertext) - try_chars = " " - + + print("guessing probable keys") (probable_keys, key_char_used) = guess_probable_keys_for_chars(ciphertext, try_chars) - + print("ok no keys") out["Printable"] = api_print_keys(probable_keys) out["Plaintext"] = api_produce_plaintexts(ciphertext, probable_keys, key_char_used) + print(out) return out # ----------------------------------------------------------------------------- @@ -159,11 +162,14 @@ def guess_key_length(text): Set key_length to the most possible if it's not set by user. """ fitnesses = calculate_fitnesses(text) + print("i am fit as fuck boyyy") if not fitnesses: raise AnalysisError("No candidates for key length found! Too small file?") print_fitnesses(fitnesses) + print("right above divisiors boiii") guess_and_print_divisors(fitnesses) + print("i am returning boyyy") return get_max_fitnessed_key_length(fitnesses) @@ -289,7 +295,9 @@ def guess_probable_keys_for_chars(text, try_chars): key_char_used = {} for c in try_chars: + print("in for loop") keys = guess_keys(text, c) + print("i can guess a key") for key in keys: key_char_used[key] = c if key not in probable_keys: @@ -305,14 +313,18 @@ def guess_keys(text, most_char): """ key_length = PARAMETERS["known_key_length"] key_possible_bytes = [[] for _ in range(key_length)] + print("in guess keys") for offset in range(key_length): # each byte of key< + print("i noffset for loop") chars_count = chars_count_at_offset(text, key_length, offset) + print("chars count") max_count = max(chars_count.values()) for char in chars_count: + print("for char") if chars_count[char] >= max_count: key_possible_bytes[offset].append(char ^ most_char) - + print("exitin") return all_keys(key_possible_bytes) @@ -382,7 +394,7 @@ def api_produce_plaintexts(ciphertext, keys, key_char_used): plaintext = [] # Change this for the % threshold. - threshold_valid = 75 + threshold_valid = 95 count_valid = 0 for index, key in enumerate(keys): @@ -400,11 +412,12 @@ def api_produce_plaintexts(ciphertext, keys, key_char_used): if perc > threshold_valid: count_valid += 1 key_mapping[key_index] = key_repr - perc_mapping[file_name] = [repr(key_char_used[key]), perc] + perc_mapping[key_index] = [repr(key_char_used[key]), perc] # fmt = "Found {C_COUNT}{:d}{C_RESET} plaintexts with {C_COUNT}{:d}{C_RESET}%+ valid characters" if PARAMETERS["known_plain"]: - plaintext.append(PARAMETERS["known_plain"].decode('ascii')) + print(PARAMETERS["known_plain"].decode('ascii')) + plaintext.append("Plaintext is: ", PARAMETERS["known_plain"].decode('ascii')) return (plaintext, key_mapping, perc_mapping) diff --git a/xortool_out/0.out b/xortool_out/0.out new file mode 100644 index 0000000000000000000000000000000000000000..c28173b2e802f6a2d15eabca293ffb8fa02bad28 GIT binary patch literal 96324 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

qUvCOVFAP=}+OL($A;p=hzPgw3@-{ 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