The "encoded.txt" file contains just 0s and 1s; one per line.
```pythonwith open("encoded.txt", "r") as f:    data = f.read()    info = data.replace("\n", "")```
this script prints the content of the file stripping the newline char. Moving around your teminal emulator you can eventually get:
![](https://i.imgur.com/YbPI0ly.png)
This two QRcode are equals but shifted by just a line. With PIL it's easy to get the QRcode into a png.
```pythonfrom PIL import Imageimport sys
with open("encoded.txt", "r") as f:    data = f.read()    info = data.replace("\n", "")
# Split the lines by 200 and then in halfqr1 = ""qr2 = ""for i in range(0, 10000000, 200):    qr1 += info[i : i + 100]    qr2 += info[i + 100 : i + 200]
# Create the matrixesqrm1 = [qr1[i : i + 100] for i in range(0, 5000, 100)]qrm2 = [qr2[i + 100 : i + 200] for i in range(0, 5000, 100)]qrcode1 = Image.new("RGB", (100, 100), "white")qrcode2 = Image.new("RGB", (100, 100), "white")qrcode1_pixels = qrcode1.load()qrcode2_pixels = qrcode2.load()
# Fill and save the PNGstry:    for x in range(100):        for y in range(100):            if qrm1[x][y] == "1":                qrcode1_pixels[x, y] = (0, 0, 0)except Exception as e:    print(e)qrcode1.save("qrcode1.png")
try:    for x in range(100):        for y in range(100):            if qrm1[x][y] == "1":                qrcode2_pixels[x, y] = (0, 0, 0)except:    passqrcode2.save("qrcode2.png")```
Eventually the QRcode in output return a string:
> 160f15011d1b095339595138535f135613595e1a
![](https://i.imgur.com/0y05kM1.jpg)
The strings could be a cipher text XORed with some unknown key...but! Since we know part of the plain text we can check if the ciphertext leaks some infos.
From [CyberChef](https://gchq.github.io/CyberChef/#recipe=From_Hex('Auto')XOR(%7B'option':'UTF8','string':'pctf%7B'%7D,'Standard',false)&input=MTYwZjE1MDExZDFiMDk1MzM5NTk1MTM4NTM1ZjEzNTYxMzU5NWUxYQ) we can see that the first part of the key is `flag`.
Just using `flag` as [key we got the flag](https://gchq.github.io/CyberChef/#recipe=From_Hex('Auto')XOR(%7B'option':'UTF8','string':'flag'%7D,'Standard',false)&input=MTYwZjE1MDExZDFiMDk1MzM5NTk1MTM4NTM1ZjEzNTYxMzU5NWUxYQ):
> `pctf{wh4_50_53r1u5?}`