In this challenge there is a encrypted file called flag.txt which contains the scrambled flag.
The encryption process works as follows
The encryption process works as follows
1 2 3 4 5 6 7 8 | def encord(msg, perm, l): for _ in xrange (l): msg = encrypt(msg, perm) return msg W, l = 7 , random.randint( 0 , 1337 ) perm = range (W) random.shuffle(perm) |
l contains a random number - the number of times the function will be applied to the message and a shuffled perm array.
To solve this challenge first we need to construct a decrypt function
and then bruteforce the two random variables.
For bruteforce the fastest strategy I could come up with was to first iterate over perm and then for that perm apply the decrypt function 1337 times.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import random import itertools def decrypt(enc,perm): W = len (perm) msg = "-" * len (enc) for j in xrange ( 0 , len (enc),W): for k in xrange (W): try : m = enc[k + j] except : #unknown bug pass msg = msg[:j + perm[k]] + m + msg[j + perm[k] + 1 :] msg = msg[:: - 1 ][ 0 ] + msg[: len (msg) - 1 ] m = "" w = len (msg) / 2 for i in range ( len (msg) / 2 ): m + = msg[i] + msg[w + i] msg = m msg = msg[:: - 1 ][ 0 ] + msg[: len (msg) - 1 ] return msg.strip( "." ) f = open ( "flag.enc" , "r" ) enc_c = f.read() print ( "Decrypting" ,enc_c) W = 7 l = 1337 for perm in itertools.permutations( range (W)): enc = str (enc_c) for _ in xrange (l): enc = decrypt(enc,perm) if enc.startswith( "ASIS" ): print (enc) |
Bruteforce time ~ 2 mins
Is 1xbet korean sports legal? Sportsbook in Korea - Legalbet
ReplyDeleteIs 1xbet korean sports legal? Is 1xbet korean sports legal? Is 1xbet korean sports legal? Is 1xbet korean sports legal? Is 1xbet korean sports 1xbet in legal?