Задание: zippy2.zip

Немного измененное Zippy. В нем немного отличается функция расшифровки

def decrypt(data, key, iv):
    flag = []
    for i in range(len(data)):
        flag.append(sbox[iv ^ key[i]] ^ data[i])
        iv = data[i]
    return ''.join(map(chr, flag))

А также элементы криптотекста и sbox теперь 8 битные, что усложняет процесс уменьшения алфавита. Даже если откинуть VolgaCTF{} получаем немаленький набор

[[32, 37, 39, 58, 72, 83, 107, 110, 119, 122, 126],
 [49, 51, 55, 74, 85, 97, 98, 102],
 [32, 40, 44, 49, 67, 73, 77, 94],
 [40, 41, 42, 45, 57, 64, 85, 86, 91, 94, 96, 100, 118],
 [40, 42, 54, 64, 70, 71, 73, 74, 88, 89, 110, 126],
 [39, 47, 54, 55, 58, 61, 73, 81, 82, 83, 90, 97, 101, 104, 108],
 [39, 60, 61, 65, 71, 91, 95, 115, 124, 126],
 [41, 52, 55, 58, 63, 67, 81, 84, 86, 88, 90, 108, 117, 126],
 [60, 66, 69, 73, 87, 94, 106, 124, 126],
 [44, 57, 58, 64, 88, 89, 105, 110, 118, 124],
 [42, 46, 65, 74, 90, 96, 98, 99, 103, 125],
 [39, 53, 56, 61, 63, 78, 99, 103, 106, 115, 118, 124],
 [39, 60, 77, 79, 85, 97, 101, 110, 118, 122],
 [37, 55, 59, 65, 68, 82, 112, 113, 122],
 [34, 47, 61, 73, 89, 110, 112, 113, 119, 125, 126],
 [39, 42, 54, 59, 71, 77, 78, 79, 86, 118, 119, 122],
 [43, 47, 72, 74, 75, 120, 122],
 [32, 41, 51, 61, 70, 76, 85, 90, 91, 102, 106, 115],
 [35, 39, 60, 69, 73, 85, 87, 100, 106],
 [44, 53, 55, 56, 85, 96, 108, 119, 126],
 [40, 41, 45, 54, 57, 60, 66, 73, 75, 78, 85, 86, 109, 112, 114, 117],
 [47, 52, 70, 89, 91, 92, 96, 105, 114, 118, 121, 125, 126],
 [48, 49, 55, 74, 85, 97, 98, 108],
 [45, 49, 56, 61, 63, 81, 88, 92, 99, 104, 106, 107, 112],
 [34, 38, 46, 52, 53, 60, 72, 78, 82, 86, 119, 122],
 [42, 45, 55, 63, 65, 72, 103, 111, 121],
 [43, 47, 54, 73, 79, 98, 101, 102, 103, 106, 118, 120],
 [43, 67, 69, 71, 117, 118, 119],
 [36, 40, 74, 78, 81, 109, 110, 113],
 [33, 42, 53, 61, 62, 66, 81, 87, 104, 106, 120],
 [60, 92, 101, 105, 119, 126],
 [35, 44, 50, 51, 55, 58, 67, 71, 79, 81, 84, 88, 104, 106, 111, 119, 120],
 [36, 37, 42, 73, 76, 83, 86, 87, 116],
 [32, 40, 45, 54, 57, 65, 79, 83, 91, 92, 94, 95, 102, 118],
 [40, 43, 61, 74, 85, 87, 101, 109, 120, 124],
 [32, 35, 43, 61, 71],
 [48, 60, 61, 74, 89, 92, 98, 104, 123],
 [43, 48, 55, 57, 60, 62, 65, 82, 87, 92, 95, 98, 104],
 [35, 38, 41, 50, 54, 63, 66, 70, 73, 74, 84, 93, 96, 104, 106, 109, 114],
 [39, 72, 74, 77, 85, 90, 97, 101, 109, 115, 118, 122],
 [44, 57, 58, 59, 60, 74, 75, 95, 118],
 [56, 58, 61, 63, 73, 82, 96, 100, 101, 113, 116, 123],
 [59, 60, 61, 62, 76, 88, 90, 99, 100, 120],
 [33, 44, 52, 55, 73, 75, 84, 86, 96, 99, 100, 113, 121],
 [37, 51, 54, 58, 59, 67, 73, 78, 82, 83, 88, 93, 102, 107, 119, 122],
 [35, 46, 60, 72, 88, 111, 112, 113, 118, 124],
 [36, 41, 53, 56, 68, 74, 76, 77, 85, 116, 117, 121, 124],
 [39, 42, 56, 61, 76, 92, 114, 116, 117, 120, 123],
 [33, 41, 48, 49, 59, 60, 79, 84, 87, 99, 110],
 [33, 38, 42, 44, 50, 55, 60, 61, 84, 85, 89, 92, 100, 109, 117],
 [56, 64, 65, 67, 73, 87, 89, 102, 104, 105],
 [36, 50, 62, 114, 118],
 [49, 64, 66, 71, 74, 88, 96, 99, 104, 108, 119, 126],
 [46, 47, 48, 49, 55, 61, 62, 65, 93, 95, 98, 111, 125],
 [33, 34, 35, 38, 46, 50, 60, 75, 79, 80, 93, 94, 107, 111, 114],
 [35, 43, 53, 55, 57, 59, 84, 87, 90, 91, 93, 99, 115],
 [32, 37, 39, 40, 52, 58, 66, 73, 75, 77, 83, 86, 88, 91, 105, 116]]

Потому решил посмотреть какой ключ выдаст на заведомо известной части флага, а именно на VolgaCTF{

[118, 74, 61, 60, 55, 73, 118, 74, 61]

И был приятно удивлен, после 6 символа ключ начал повторятся. Я даже не стал заморачиватся со скриптом, а просто запустил задание с ключом

$ ./zippy2 'vJ=<7I'
VolgaCTF{yep_this__not_needed_silly_bruteforce_to_solve__this_task}