## The Adventures of Boris Ivanov Part 2 The main idea finding the flag using OpenCV library and Python. #### Step-1: After we download `confetti.zip`, we see that we have 500 photos. Each dimension is 500 $\times$ 1 and according to problem statement, the image size is 500 $\times$ 500. #### Step-2: So basically, we have to concatenate the 500 images in **vertical** fashion. #### Step-3: Make a directory to extract all 500 images and set your `pwd` to that directory containing all images. After that only work is to join all images. #### Step-5: I executed this simple `Concatenate.py` script and it worked. ``` from PIL import Image listimages=[] for i in range(0,500): listimages.append(Image.open(str(i) + ".png")) # Make a list of pointers to the 500 pictures. concatenate=Image.new("RGB",(500,500)) # Size of the concatenate picture Y_offset=0 for i in listimages: concatenate.paste(i,(0,Y_offset)) Y_offset+=1 # Add 1 at a time , Because the height of each picture is 1. concatenate.save("concatenate.png") ``` #### Step-6: We get the output as `concatenate.png` after the above script is run. The image is as follows: We see a hex code in between. #### Step-7: The Hex code is as follows: `66 6c 61 67 7b 74 68 33 5f 4b 47 42 5f 6c 30 76 33 73 5f 43 54 46 7d` I converted it to text online to get the flag. #### Step-7: Finally the flag becomes: `flag{th3_KGB_l0v3s_CTF}`