Example #1
0
def breakRepeatingKeyXor(x, k):
    blocks = [x[i:i + k] for i in range(0, len(x), k)]
    transposedBlocks = list(itertools.zip_longest(*blocks, fillvalue=0))
    key = [
        challenge3.breakSingleByteXOR(bytes(x))[0] for x in transposedBlocks
    ]
    return bytes(key)
Example #2
0
def findSingleByteXOR(lines):
    brokenLines = [challenge3.breakSingleByteXOR(l)[1] for l in lines]

    def scoring(i):
        return challenge3.scoring(brokenLines[i])

    maxI = max(range(len(brokenLines)), key=scoring)
    return (maxI + 1, brokenLines[maxI])
Example #3
0
def breakSameKey(strings):
    transposedStrings = list(zip(*strings))
    key = [
        challenge3.breakSingleByteXOR(bytes(x))[0] for x in transposedStrings
    ]
    return bytes(key)
Example #4
0
def breakRepeatingKeyXor(x, k):
    blocks = [x[i:i+k] for i in range(0, len(x), k)]
    transposedBlocks = list(itertools.zip_longest(*blocks, fillvalue=0))
    key = [challenge3.breakSingleByteXOR(bytes(x))[0] for x in transposedBlocks]
    return bytes(key)
Example #5
0
def findSingleByteXOR(lines):
    brokenLines = [challenge3.breakSingleByteXOR(l)[1] for l in lines]
    def score(i):
        return challenge3.score(brokenLines[i])
    maxI = max(range(len(brokenLines)), key=score)
    return (maxI+1, brokenLines[maxI])
Example #6
0
def breakSameKey(strings):
    transposedStrings = list(zip(*strings))
    key = [challenge3.breakSingleByteXOR(bytes(x))[0] for x in transposedStrings]
    return bytes(key)