Criptografia
A chave do calendário
Depois da placa, o Tiago trocou o ECB pelo CBC, com IV aleatório, e passou a cifrar a planilha do rebanho. Ele não quer decorar chave nenhuma, então o programa tira a chave da data do dia. O trecho que importa:
import datetime, hashlib, os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
hoje = datetime.date.today().isoformat() # por exemplo '2026-03-14'
chave = hashlib.sha256(hoje.encode()).digest()[:16] # 16 bytes: AES-128
iv = os.urandom(16)
dados = open('rebanho.csv', 'rb').read()
cifrado = AES.new(chave, AES.MODE_CBC, iv).encrypt(pad(dados, 16))
open('rebanho.cifrado', 'wb').write(iv + cifrado)
"Chave de 128 bits", diz ele, "tem mais combinações que grãos de areia na Terra." O anexo rebanho.cifrado saiu desse programa num dia qualquer de 2026. A planilha é um CSV que começa com a coluna brinco, e a última linha guarda uma senha.
Decifre a planilha. A senha da última linha é a flag. Exemplo de forma (não é a resposta): tocaia{senha_da_planilha}.
Arquivos do desafio
- Baixar
rebanho.cifrado
496 B · SHA-256 501c52bf97f0bf5e…
Tudo se resolve com ferramentas gratuitas.
Entre para ver o assunto deste desafio.
A solução comentada aparece depois que você resolve.