import React, { useState, useMemo } from 'react'; import { Hash, Key, Lock, Unlock, Binary, Calculator, Eye, FileText } from 'lucide-react'; const BitcoinPuzzleSolver = () => { const [activePhase, setActivePhase] = useState('overview'); const [inputText, setInputText] = useState(''); const [hashResult, setHashResult] = useState(''); const [decryptionKey, setDecryptionKey] = useState(''); const [decryptionText, setDecryptionText] = useState(''); // SHA256 hash function (simplified - in real implementation you'd use crypto library) const sha256Hash = async (text) => { const encoder = new TextEncoder(); const data = encoder.encode(text); const hash = await crypto.subtle.digest('SHA-256', data); return Array.from(new Uint8Array(hash)) .map(b => b.toString(16).padStart(2, '0')) .join(''); }; const handleHash = async () => { if (inputText) { const result = await sha256Hash(inputText); setHashResult(result); } }; // Binary matrix from the puzzle const binaryMatrix = [ [0,0,1,1,0,1,0,0,1,0,1,1,0,0], [1,1,1,1,0,0,1,1,1,0,1,0,1,1], [1,1,0,1,1,1,0,1,0,0,1,0,0,1], [0,1,1,0,1,0,0,0,0,1,1,1,0,1], [0,1,1,0,0,0,1,1,0,0,0,1,1,0], [1,0,0,1,1,0,0,0,1,0,0,0,1,1], [1,0,0,1,1,1,0,0,0,1,0,0,0,0], [1,1,1,0,0,0,0,0,0,0,1,0,0,0], [0,0,0,1,1,1,0,1,1,1,1,1,0,1], [1,1,1,1,1,1,0,0,1,1,0,0,0,1], [1,1,0,1,0,0,0,0,0,1,1,0,1,1], [1,1,1,1,0,0,1,0,1,0,1,1,0,0], [0,1,0,1,1,1,0,1,0,0,0,1,1,0], [0,1,1,0,1,1,0,1,1,0,1,0,1,1] ]; // Read spiral counterclockwise const readSpiral = () => { const bits = []; const visited = Array(14).fill().map(() => Array(14).fill(false)); let row = 0, col = 0; let direction = 0; // 0: right, 1: down, 2: left, 3: up for (let i = 0; i < 196; i++) { bits.push(binaryMatrix[row][col]); visited[row][col] = true; // Try to continue in current direction let nextRow = row, nextCol = col; if (direction === 0) nextCol++; else if (direction === 1) nextRow++; else if (direction === 2) nextCol--; else nextRow--; // Check if we need to turn if (nextRow < 0 || nextRow >= 14 || nextCol < 0 || nextCol >= 14 || visited[nextRow][nextCol]) { direction = (direction + 1) % 4; if (direction === 0) nextCol = col + 1; else if (direction === 1) nextRow = row + 1; else if (direction === 2) nextCol = col - 1; else nextRow = row - 1; } row = nextRow; col = nextCol; } return bits; }; const spiralBits = useMemo(() => readSpiral(), []); const bitsToAscii = (bits) => { let result = ''; for (let i = 0; i < bits.length; i += 8) { const byte = bits.slice(i, i + 8); if (byte.length === 8) { const charCode = parseInt(byte.join(''), 2); result += String.fromCharCode(charCode); } } return result; }; const phases = { overview: { title: "Visão Geral do Puzzle", content: (
Resolver um puzzle criptográfico complexo para obter a chave privada de um endereço Bitcoin com 2.5 BTC (originalmente 5 BTC).
1GSMG1JC9wtdSwfwApgj2xcmJPAwx7prBe
O puzzle está parcialmente resolvido pela comunidade até a Fase 3.2, mas as etapas finais ainda são um mistério.
Requer conhecimentos em: criptografia, matrizes binárias, cifras históricas, referências a filmes (Matrix), xadrez, e muito mais.
{bitsToAscii(spiralBits)}
Isso nos leva para: gsmg.io/theseedisplanted
As imagens se referem à música "The Warning" do Logic:
A página contém um formulário POST oculto que requer a senha:
theflowerblossomsthroughwhatseemstobeaconcretesurface
URL extremamente longa que referencia uma fala do Merovingian.
"Choice is an illusion created between those with power and those without"
Senha: causality
A próxima fase requer uma chave concatenada de 7 partes:
Este é provavelmente o blob final que contém a chave privada!
Baseado nos padrões anteriores:
Resultado SHA256:
{hashResult}
Use para converter sequências binárias
Para dados hexadecimais
Ferramenta colaborativa para resolver o puzzle Bitcoin