LIT CTF 2023 - incredible
Description
Category: Cryptography
https://docs.google.com/spreadsheets/d/1_YWRWjIUTPfbJ5ZWeYyiAi69PkI-F-GGKa6stQlNtEA/edit?usp=sharing.
Wrap flag with LITCTF{}.
incredible!! - Sheet1.csv (backup)
Resolution
When I saw the spreadsheet it immediately reminds me an array of pixels (because of Image Processing courses I had).
I downloaded it as csv so I can import it easilly with numpy:
1
2
3
import numpy as np
A = np.loadtxt("incredible!! - Sheet1.csv", delimiter=",", dtype=float)
Next we need to convert it to an actual image, i.e pixels values need to be integers between 0 and 255.
1
2
3
4
5
# Value normalization then multiply by max pixel value (255)
A = 256 * A / np.max(A)
# Convert to 8-bit integers (0-255)
A = A.astype(np.uint8)
Now we can save the image using pillow:
1
2
3
from PIL import Image
Image.fromarray(A).save("image.png")
The image is very small but when we zoom enough we can recognize some characters:
CONDITIONAL_FORMATTING11!
I submitted it with the flag format and it was indeed the flag: LIT{CONDITIONAL_FORMATTING11!}
Note
After reading the flag, I find out the intented way to solve the challenge.
We needed to use conditional formatting.
I highlighted all cell with value higher than 1 and I found the flag too: