feat(wpcarro/scratch): Upload my solutions to cryptopals

More beginner problems/solutions for CTF-style challenges.

Change-Id: Ide229e99e3ccc1ede5a5ca1c2ad039498e49ea4c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4740
Reviewed-by: wpcarro <wpcarro@gmail.com>
Autosubmit: wpcarro <wpcarro@gmail.com>
Tested-by: BuildkiteCI
This commit is contained in:
William Carroll 2021-12-29 12:11:42 -04:00 committed by clbot
parent 5c0ec720af
commit 4cf86f2e53
6 changed files with 409 additions and 0 deletions

View file

@ -0,0 +1,28 @@
from c2 import fixed_xor
from collections import Counter
import string
alphabet = string.ascii_lowercase + string.ascii_uppercase
def score(bs):
chars = [b for b in bs if b in alphabet]
return sum(Counter(chars).values())
def decode_cipher(x):
x = bytearray.fromhex(x)
num_bytes = len(x)
mx, result, key = 0, None, None
for c in alphabet:
mask = bytearray(bytes(c, 'ascii') * num_bytes)
y = fixed_xor(x, mask, decode_hex=False, encode_hex=False).decode('ascii')
test = score(y)
if test > mx:
result = y
mx = test
key = mask.decode('ascii')
return result
run_tests = False
if run_tests:
print(decode_cipher("1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"))