finished ctf decryptor
This commit is contained in:
50
transpose.py
50
transpose.py
@@ -2,13 +2,10 @@ import pprint
|
|||||||
import math
|
import math
|
||||||
|
|
||||||
secret="OUHRSTHFSOENOFETURFELIRFTSNEMOEEMELNTARETOKCAETBFIHFTTTNMEELEEOHYBAERORCRSEDNCEUUTHITOYRSTEDSBEIEOTNLRMOEFPOHHAYLAGXYISNIARAUABGBURILFERPEEHTECDINNDITHFFIEHTKESYTDHEREOALGNABSMWEHVEFSOAMETAOCRFTAHEOFSINAMEOTRNGRINTHFFIEHTIEGMELNTSTEOMCOHEOWTEWREAIDANHTRARARTEHEETVFIYREAHVSAONDPROSTRAEUOYCTTTHWISANMUHETENTIISEDHETSUSENTEITNG OOLEEB L"
|
secret="OUHRSTHFSOENOFETURFELIRFTSNEMOEEMELNTARETOKCAETBFIHFTTTNMEELEEOHYBAERORCRSEDNCEUUTHITOYRSTEDSBEIEOTNLRMOEFPOHHAYLAGXYISNIARAUABGBURILFERPEEHTECDINNDITHFFIEHTKESYTDHEREOALGNABSMWEHVEFSOAMETAOCRFTAHEOFSINAMEOTRNGRINTHFFIEHTIEGMELNTSTEOMCOHEOWTEWREAIDANHTRARARTEHEETVFIYREAHVSAONDPROSTRAEUOYCTTTHWISANMUHETENTIISEDHETSUSENTEITNG OOLEEB L"
|
||||||
col_key="EJALMVWUSTRPOBY_" # (16)missing 1 char
|
col_key="EJALMVWUSTRPOBY" # (16)missing 1 char
|
||||||
row_key="GHPTYPAMTAPQRNDHD____" # (21) missing 4 chars one of which is 'D'
|
row_key="GHPTYPAMTAPQRNDHD" # (21) missing 4 chars one of which is 'D'
|
||||||
# KLINGON_ALPHABET="ABDEHIJLMNOPQRSTUVWY"
|
col_alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
# HIERACH_ALPHABET="ABDFGHIJKMNPQRSTUWYZ"
|
row_alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
# cleartext="ABDEFGHIJKLMOPQRSTUVWXYZ"
|
|
||||||
# my_first_col_key="TEST"
|
|
||||||
# my_row_key="HALLOABBIEGALE"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -78,19 +75,19 @@ def prows(a,header=None):
|
|||||||
|
|
||||||
def encode(text,key):
|
def encode(text,key):
|
||||||
text=text.ljust(math.ceil(len(text)/len(key))*len(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))
|
columnized_text=cols(text,len(key))
|
||||||
pcols(columnized_text)
|
# pcols(columnized_text)
|
||||||
shuffled_colums=mosh(columnized_text,key)
|
shuffled_colums=mosh(columnized_text,key)
|
||||||
pcols(shuffled_colums)
|
# pcols(shuffled_colums)
|
||||||
return rows_to_str(shuffled_colums)
|
return rows_to_str(shuffled_colums)
|
||||||
|
|
||||||
def decode(text,key):
|
def decode(text,key):
|
||||||
print("decoding <%s>"%text)
|
# print("decoding <%s>"%text)
|
||||||
row_data=rows(text,cell_length(len(text), len(key)))
|
row_data=rows(text,cell_length(len(text), len(key)))
|
||||||
prows(row_data)
|
# prows(row_data)
|
||||||
reorderd=mosh(row_data,revert_key(key))
|
reorderd=mosh(row_data,revert_key(key))
|
||||||
prows(reorderd)
|
# prows(reorderd)
|
||||||
return cols_to_str(reorderd)
|
return cols_to_str(reorderd)
|
||||||
|
|
||||||
|
|
||||||
@@ -104,4 +101,29 @@ def decross(text,key_rows,key_cols):
|
|||||||
matrix=rows(text,len(key_cols))
|
matrix=rows(text,len(key_cols))
|
||||||
prows(matrix,key_rows)
|
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')
|
||||||
|
|||||||
Reference in New Issue
Block a user