Skip to content

Instantly share code, notes, and snippets.

@molangning
Created February 21, 2024 08:02
Show Gist options
  • Save molangning/213147ce4677f15da84d68c24839d710 to your computer and use it in GitHub Desktop.
Save molangning/213147ce4677f15da84d68c24839d710 to your computer and use it in GitHub Desktop.
Sliding window decoder for xor cipher
key_length = 0
partial_text = ""
decoded_text = bytes.fromhex("")
def xor_text(key, text):
enc_array = []
for i in range(len(text)):
enc_array.append(text[i] ^ key[i % len(key)])
return bytes(bytearray(enc_array))
for i in range(len(decoded_text)-len(partial_text)):
shifted_text = decoded_text[i:] + decoded_text[:i]
recovered_key = xor_text(partial_text.encode(), shifted_text[:len(partial_text)])
shift_back_amount = i % key_length
recovered_key = recovered_key[-shift_back_amount:] + recovered_key[:-shift_back_amount]
print(f"trying key: {recovered_key.hex()}")
print(f"plain text: {xor_text(recovered_key, decoded_text)}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment