# Hidden Flag (Misc 296 points)
![](HiddenFlag.png)
We are given an [image](chall.png).
Lets see what type of file it is.```vagrant@ubuntu-xenial:~$ file chall.pngchall.png: datavagrant@ubuntu-xenial:~$```
It is named with .png but it's headers don't match png format. Maybe the file is encrypted.
Lets see for any embedded strings in it.
```vagrant@ubuntu-xenial:~$ strings chall.png....key is invisiblevagrant@ubuntu-xenial:~$```It says "key is invisible". Maybe the file is encrypted with the key "invisible".
Lets try XOR first.
```infile = "chall.png"outfile = "dec.png"
key = "invisible"
s = open(infile, "r").read()p = ""for i in range(len(s)):	p += chr(ord(s[i]) ^ ord(key[i%len(key)]))
open(outfile, "w").write(p)``````vagrant@ubuntu-xenial:~$ file dec.pngdec.png: PNG image data, 665 x 268, 8-bit/color RGB, non-interlacedvagrant@ubuntu-xenial:~$```After decrypting the original file, we got a png. Lets open it and check.
![](dec.png)
There is our flag.