From ab45bbacf09a35990133dbce8778a3c502fd77e7 Mon Sep 17 00:00:00 2001 From: Tobias Kessels Date: Fri, 18 Oct 2019 11:23:06 +0200 Subject: [PATCH] finished ctf decryptor --- transpose.py | 50 ++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/transpose.py b/transpose.py index 0a4d7b9..470f7e0 100644 --- a/transpose.py +++ b/transpose.py @@ -2,13 +2,10 @@ import pprint import math secret="OUHRSTHFSOENOFETURFELIRFTSNEMOEEMELNTARETOKCAETBFIHFTTTNMEELEEOHYBAERORCRSEDNCEUUTHITOYRSTEDSBEIEOTNLRMOEFPOHHAYLAGXYISNIARAUABGBURILFERPEEHTECDINNDITHFFIEHTKESYTDHEREOALGNABSMWEHVEFSOAMETAOCRFTAHEOFSINAMEOTRNGRINTHFFIEHTIEGMELNTSTEOMCOHEOWTEWREAIDANHTRARARTEHEETVFIYREAHVSAONDPROSTRAEUOYCTTTHWISANMUHETENTIISEDHETSUSENTEITNG OOLEEB L" -col_key="EJALMVWUSTRPOBY_" # (16)missing 1 char -row_key="GHPTYPAMTAPQRNDHD____" # (21) missing 4 chars one of which is 'D' -# KLINGON_ALPHABET="ABDEHIJLMNOPQRSTUVWY" -# HIERACH_ALPHABET="ABDFGHIJKMNPQRSTUWYZ" -# cleartext="ABDEFGHIJKLMOPQRSTUVWXYZ" -# my_first_col_key="TEST" -# my_row_key="HALLOABBIEGALE" +col_key="EJALMVWUSTRPOBY" # (16)missing 1 char +row_key="GHPTYPAMTAPQRNDHD" # (21) missing 4 chars one of which is 'D' +col_alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ" +row_alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ" @@ -78,19 +75,19 @@ def prows(a,header=None): def encode(text,key): text=text.ljust(math.ceil(len(text)/len(key))*len(key),'_') - print("encoding <%s>"%text) + # print("encoding <%s>"%text) columnized_text=cols(text,len(key)) - pcols(columnized_text) + # pcols(columnized_text) shuffled_colums=mosh(columnized_text,key) - pcols(shuffled_colums) + # pcols(shuffled_colums) return rows_to_str(shuffled_colums) def decode(text,key): - print("decoding <%s>"%text) + # print("decoding <%s>"%text) row_data=rows(text,cell_length(len(text), len(key))) - prows(row_data) + # prows(row_data) reorderd=mosh(row_data,revert_key(key)) - prows(reorderd) + # prows(reorderd) return cols_to_str(reorderd) @@ -104,4 +101,29 @@ def decross(text,key_rows,key_cols): matrix=rows(text,len(key_cols)) prows(matrix,key_rows) -decross(secret,row_key,col_key) +def get_col_keys(): + for x in col_alpha: + yield col_key+x + +def get_row_keys(): + for x in row_alpha: + for y in row_alpha: + for z in row_alpha: + for d in row_alpha: + yield(row_key+d+x+y+z) + + # yield(row_key+"D"+x+y+z) + # yield(row_key+x+"D"+y+z) + # yield(row_key+x+y+"D"+z) + # yield(row_key+x+y+z+"D") + + +def decryptor(): + for col_key in get_col_keys(): + for row_key in get_row_keys(): + text=encode(encode(secret,col_key),row_key) + yield "{};{};{}".format(row_key,col_key,text) + +with open("output3.txt",'w') as f: + for possiblematch in decryptor(): + f.write(possiblematch+'\n')