Merci pour la correction !
Un point d'ombre persiste cependant au niveau du CTF3, voici mon code pour resoudre le probleme :
1
2
3
4
5
6
7
8
9
10
11
12
13 | import sys
from functools import reduce
from itertools import takewhile,count
#Le message chiffré (valeurs ASCII de chaque caractères)
b = [181, 245, 231, 164, 119, 65, 99, 32, 141, 188, 188, 732, 105, 120, 42, 105, 227, 196, 164, 8224, 182]
for j in range(len(b)):
for i in range(256):
#Brute force
if (((lambda tr: ((tr(sum(list((((i) >> n & 1) << a for a, n in enumerate([int(c) for c in [4, 3, 5, 7, 2, 1, 0, 6]]))))) ),)) (lambda x: x ^ (j * 33 % 256))) == (b[j],)):
print(i,bytes(chr(i).encode('utf-8')),b[j])
# Flag : very_crypto_such_wow
# Sha1 : 10b60a6e366d8de2e98ce077820ec55b39ef60be
|
Mon problème vient du 2eme underscore et du dernier w, le numéro qu'est censé sortir le programme pour ces deux caractères est respectivement 732 et 8224 ce qui est impossible à première vue. Du coup bah j'ai été obligé de brute forcer pour trouver ces deux caractères (et ça me plaît pas tant que ça figurez-vous !) Donc si quelqu'un a une explication je suis preneur !
Merci !
Edit : Je pense que ca vient du fait que ce caractère -> ˜ n'est pas dans la table ASCII seulement dans unicode et du coup bah ca marche pas bien, idem pour -> †