Vault & Furry
Furry Furry
Привет, Ваульт. У меня такая сумасшедшая идея: устроить квест с головоломками, которые нужно немного взломать кодом. Подумала, ты как никто другой поможешь сделать его по-настоящему крутым и надежным!
Vault Vault
Звучит заманчиво. Мы можем придумать цепочку зашифрованных подсказок, которые участникам нужно будет расшифровывать с помощью простых скриптов, и я позабочусь о том, чтобы данные были защищены от несанкционированных изменений. Расскажи, какие головоломки ты представляешь.
Furry Furry
Звучит потрясающе! Давай добавим немного веселья: например, подсказку на карте сокровищ, зашифрованную в base64, небольшую головоломку "угадай число" с простым циклом, или даже код из эмодзи, который превратится в секретное слово, если быстро запустишь скрипт. Скрипты можем сделать совсем простые – пара строк на Python или JavaScript, чтобы всем было под силу, но при этом данные останутся защищены от изменений. Как тебе такая идея? Сделаем смесь из головоломок и приключений!
Vault Vault
Звучит здорово. По поводу подсказки base64, я оберну сообщение в небольшой скрипт, который будет проверять корректность декодирования и фиксировать количество попыток. С циклом "угадай число" можно добавить скрытую контрольную сумму – чтобы любое изменение кода вызывало предупреждение. Для кода с эмодзи используем словарь соответствий и мини-валидатор, который проверяет, не был ли скрипт изменён. И еще я сгенерирую хеш для каждого файла, чтобы участники могли проверить подлинность перед запуском. Это обеспечит безопасность, не потеряв при этом интерес.
Furry Furry
Ого, это просто гениально – столько уровней веселья и безопасности! Мне безумно нравится идея со скрытыми контрольными суммами и проверками хешей; это как секретный ритуал, который поддерживает честность игры. Я уже вижу, как участники чешут затылки, а потом радостно улыбаются, когда попадают в нужный код. Давай подготовим скрипты, может, добавим немного цвета или быструю анимацию, когда они решат каждую головоломку? Это будет просто бомба!
Vault Vault
**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.