2026-07-12 20:22:15 +01:00

122 lines
2.7 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Presents Vault Seed Leak — Challenge</title>
<style>
body {
margin: 0;
background: #d9f3e1; /* pale Xmas green */
color: #000000;
font-family: Verdana, Arial, sans-serif;
}
.page {
max-width: 800px;
margin: 20px auto;
padding: 12px 16px 18px;
background: #ffffff;
border: 3px solid #c00000; /* Xmas red */
}
.subtitle {
font-size: 11px;
text-transform: uppercase;
letter-spacing: 1px;
color: #006600;
margin-bottom: 4px;
}
h1 {
font-size: 20px;
margin: 6px 0 10px;
color: #900000;
}
h2, h3 {
font-size: 15px;
margin: 10px 0 6px;
color: #006600;
}
p {
font-size: 13px;
line-height: 1.4;
margin: 6px 0;
}
.tokens {
margin: 6px 0 8px;
padding: 8px;
background: #fff8f8;
border: 1px solid #cc9999;
}
.token {
font-family: "Courier New", monospace;
font-size: 12px;
margin: 2px 0;
display: inline-block;
}
.hint {
font-size: 12px;
color: #333366;
margin-top: 4px;
}
.muted {
font-size: 12px;
color: #555555;
}
code {
font-family: "Courier New", monospace;
font-size: 12px;
background: #eef6ee;
padding: 1px 3px;
border: 1px solid #c0d9c0;
}
a {
color: #a00000;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
hr {
border: 0;
border-top: 1px solid #cc9999;
margin: 12px 0 10px;
}
</style>
</head>
<body>
<div class="page">
<div class="subtitle">North Pole Presents Vault</div>
<h1>Presents Vault Seed Leak</h1>
<p>
The token service used for maintenance tasks was seeded with the system time (seconds).
Three one-time tokens were intercepted in sequence. A rough time window is known.
</p>
<h2>Observed tokens</h2>
<p class="hint">{{ note }}</p>
<div class="tokens">
{% for t in observed %}
<div class="token">{{ t }}</div><br/>
{% endfor %}
</div>
<h3>Time window (epoch seconds)</h3>
<div class="tokens">
<span class="token">{{ window_start }}</span> &nbsp;&nbsp;
<span class="token">{{ window_end }}</span>
</div>
<p class="hint">
Find the exact seed (an epoch second in this window) that reproduces the tokens in order,
then compute the next token and request <code>/flag?token=THE_TOKEN</code>.
</p>
<hr>
<h3>Machine-readable data</h3>
<p class="muted">
<a href="/api/observed"><code>/api/observed</code></a>
</p>
</div>
</body>
</html>