[Writeup] Asis 2019 Quals - A Delicious Soup

In this challenge there is a encrypted file called flag.txt which contains the scrambled flag.

The encryption process works as follows


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.

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

Comments

  1. Is 1xbet korean sports legal? Sportsbook in Korea - Legalbet
    Is 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?

    ReplyDelete

Post a Comment