Vault & Furry
Привет, Ваульт. У меня такая сумасшедшая идея: устроить квест с головоломками, которые нужно немного взломать кодом. Подумала, ты как никто другой поможешь сделать его по-настоящему крутым и надежным!
Звучит заманчиво. Мы можем придумать цепочку зашифрованных подсказок, которые участникам нужно будет расшифровывать с помощью простых скриптов, и я позабочусь о том, чтобы данные были защищены от несанкционированных изменений. Расскажи, какие головоломки ты представляешь.
Звучит потрясающе! Давай добавим немного веселья: например, подсказку на карте сокровищ, зашифрованную в base64, небольшую головоломку "угадай число" с простым циклом, или даже код из эмодзи, который превратится в секретное слово, если быстро запустишь скрипт. Скрипты можем сделать совсем простые – пара строк на Python или JavaScript, чтобы всем было под силу, но при этом данные останутся защищены от изменений. Как тебе такая идея? Сделаем смесь из головоломок и приключений!
Звучит здорово. По поводу подсказки base64, я оберну сообщение в небольшой скрипт, который будет проверять корректность декодирования и фиксировать количество попыток. С циклом "угадай число" можно добавить скрытую контрольную сумму – чтобы любое изменение кода вызывало предупреждение. Для кода с эмодзи используем словарь соответствий и мини-валидатор, который проверяет, не был ли скрипт изменён. И еще я сгенерирую хеш для каждого файла, чтобы участники могли проверить подлинность перед запуском. Это обеспечит безопасность, не потеряв при этом интерес.
Ого, это просто гениально – столько уровней веселья и безопасности! Мне безумно нравится идея со скрытыми контрольными суммами и проверками хешей; это как секретный ритуал, который поддерживает честность игры. Я уже вижу, как участники чешут затылки, а потом радостно улыбаются, когда попадают в нужный код. Давай подготовим скрипты, может, добавим немного цвета или быструю анимацию, когда они решат каждую головоломку? Это будет просто бомба!
**Base64‑Encoded Treasure Map Script (Python)**
```python
import base64
import hashlib
import sys
# Expected hash of the decoded message (pre‑computed)
EXPECTED_HASH = 'd8c3f5e1a2b7...'
def verify_script():
# Simple checksum to detect tampering: MD5 of the script file itself
with open(__file__, 'rb') as f:
content = f.read()
local_checksum = hashlib.md5(content).hexdigest()
if local_checksum != SCRIPT_CHECKSUM:
print('\033[91mScript has been altered!\033[0m')
sys.exit(1)
# Replace this with the actual checksum of your script file
SCRIPT_CHECKSUM = 'e3b0c44298fc...'
def main():
verify_script()
encoded = input('Enter the secret code: ')
try:
decoded_bytes = base64.b64decode(encoded)
except Exception as e:
print('\033[91mInvalid Base64!\033[0m')
return
message = decoded_bytes.decode('utf-8')
if hashlib.sha256(decoded_bytes).hexdigest() != EXPECTED_HASH:
print('\033[91mChecksum mismatch – wrong treasure!\033[0m')
else:
print('\033[92mYou found the map! 🗺️\033[0m')
if __name__ == '__main__':
main()
```
**Guess‑the‑Number Loop (JavaScript)**
```js
// Simple checksum to detect changes: SHA‑256 of this script's text
const EXPECTED_CHECKSUM = '4f3d2e...';
// Verify that the script hasn't been modified
if (!window.crypto.subtle) {
console.error('WebCrypto API not available.');
}
(async () => {
const data = new TextEncoder().encode(document.documentElement.innerText);
const hashBuffer = await crypto.subtle.digest('SHA-256', data);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
if (hashHex !== EXPECTED_CHECKSUM) {
console.warn('%cScript altered!', 'color:red');
return;
}
})();
function play() {
const target = Math.floor(Math.random() * 100) + 1;
let attempts = 0;
while (true) {
const guess = parseInt(prompt('Guess the number (1‑100):'), 10);
if (isNaN(guess)) { alert('Enter a valid integer.'); continue; }
attempts++;
if (guess === target) {
console.log(`%cCorrect! You took ${attempts} tries.`, 'color:green');
// Quick animation: change background color briefly
document.body.style.background = '#e0ffe0';
setTimeout(() => { document.body.style.background = ''; }, 500);
break;
} else if (guess < target) {
alert('Higher!');
} else {
alert('Lower!');
}
}
}
play();
```
**Emoji‑to‑Word Code (Python)**
```python
import hashlib
import sys
# Mapping of emojis to letters
EMOJI_MAP = {
'😀': 'C',
'🐱': 'A',
'🍕': 'T',
'🏠': 'S',
}
EXPECTED_HASH = 'a1b2c3d4e5...'
SCRIPT_CHECKSUM = 'f8e7d6c5b4...'
def verify_script():
with open(__file__, 'rb') as f:
content = f.read()
if hashlib.md5(content).hexdigest() != SCRIPT_CHECKSUM:
print('\033[91mScript tampered!\033[0m')
sys.exit(1)
def decode_emojis(seq):
return ''.join(EMOJI_MAP.get(ch, '?') for ch in seq)
def main():
verify_script()
user_seq = input('Enter the emoji sequence: ')
word = decode_emojis(user_seq)
if hashlib.sha256(word.encode()).hexdigest() != EXPECTED_HASH:
print('\033[91mWrong code!\033[0m')
else:
print('\033[92mCorrect! The secret word is', word, '\033[0m')
if __name__ == '__main__':
main()
```
These snippets keep the logic minimal yet include checksums and hashes so participants can verify authenticity. The color codes give a little visual feedback when puzzles are solved, and the quick background flash in the JavaScript adds a touch of animation. Feel free to adjust the hash values once you finalize the content.