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:
parent
5c0ec720af
commit
4cf86f2e53
6 changed files with 409 additions and 0 deletions
28
users/wpcarro/scratch/cryptopals/set1/c3.py
Normal file
28
users/wpcarro/scratch/cryptopals/set1/c3.py
Normal 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"))
|
||||
Loading…
Add table
Add a link
Reference in a new issue