| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Bitcoin Private Key Finder</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> |
| <style> |
| .gradient-bg { |
| background: linear-gradient(135deg, #f97316, #d946ef, #6366f1); |
| } |
| .glow { |
| box-shadow: 0 0 15px rgba(249, 115, 22, 0.6); |
| } |
| .animated-bg { |
| position: relative; |
| overflow: hidden; |
| } |
| .animated-bg::before { |
| content: ''; |
| position: absolute; |
| top: -50%; |
| left: -50%; |
| width: 200%; |
| height: 200%; |
| background: linear-gradient( |
| 45deg, |
| rgba(255,255,255,0) 0%, |
| rgba(255,255,255,0.1) 50%, |
| rgba(255,255,255,0) 100% |
| ); |
| animation: shine 3s infinite; |
| z-index: 1; |
| } |
| @keyframes shine { |
| 0% { transform: translate(-25%, -25%) rotate(0deg); } |
| 100% { transform: translate(-25%, -25%) rotate(360deg); } |
| } |
| .progress-bar { |
| animation: progress 2s ease-in-out infinite; |
| } |
| @keyframes progress { |
| 0% { width: 0%; } |
| 50% { width: 50%; } |
| 100% { width: 100%; } |
| } |
| </style> |
| </head> |
| <body class="bg-gray-900 text-white min-h-screen"> |
| <div class="container mx-auto px-4 py-8"> |
| <div id="notification" class="hidden fixed top-4 right-4 bg-gray-800 border-l-4 border-orange-500 text-white px-4 py-3 rounded shadow-lg z-50 max-w-md"></div> |
| <div class="text-center mb-8"> |
| <h1 class="text-4xl font-bold mb-2 gradient-text bg-clip-text text-transparent gradient-bg">Bitcoin Private Key Brute Force</h1> |
| <p class="text-gray-400">Brute force search for a Bitcoin address's private key</p> |
| </div> |
|
|
| <div class="max-w-3xl mx-auto bg-gray-800 rounded-xl shadow-xl overflow-hidden mb-8"> |
| <div class="p-6"> |
| <div id="status-display" class="hidden mb-4 p-4 bg-gray-700 rounded-lg"> |
| <div class="flex justify-between mb-2"> |
| <span class="text-sm text-gray-400">Attempts:</span> |
| <span id="attempt-count" class="text-sm">0</span> |
| </div> |
| <div class="w-full bg-gray-600 rounded-full h-2.5"> |
| <div id="progress-bar" class="bg-orange-500 h-2.5 rounded-full" style="width: 0%"></div> |
| </div> |
| <div id="current-key" class="mt-2 text-xs text-gray-400 font-mono truncate"></div> |
| </div> |
| <div class="flex flex-col md:flex-row gap-4 mb-6"> |
| <div class="flex-1"> |
| <label for="btc-address" class="block text-sm font-medium text-gray-300 mb-2">Bitcoin Address</label> |
| <div class="relative"> |
| <input |
| type="text" |
| id="btc-address" |
| placeholder="Enter BTC address (e.g., 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa)" |
| class="w-full px-4 py-3 bg-gray-700 border border-gray-600 rounded-lg focus:ring-2 focus:ring-orange-500 focus:border-orange-500 outline-none transition" |
| > |
| </div> |
| </div> |
| </div> |
|
|
| <button id="start-search" class="w-full py-3 px-4 bg-gradient-to-r from-orange-500 to-purple-600 hover:from-orange-600 hover:to-purple-700 rounded-lg font-semibold transition-all glow flex items-center justify-center gap-2"> |
| <i class="fas fa-key"></i> Brute Force Private Key |
| </button> |
| </div> |
| </div> |
|
|
|
|
| </div> |
|
|
| <footer class="mt-12 py-6 text-center text-gray-500 text-sm border-t border-gray-800"> |
| <p>BTC Private Key Recovery Tool</p> |
| </footer> |
|
|
|
|
| <script> |
| document.addEventListener('DOMContentLoaded', function() { |
| const generateKeyBtn = document.getElementById('start-search'); |
| const notification = document.getElementById('notification'); |
| const loader = document.getElementById('loader'); |
| const output = document.getElementById('output'); |
| const popup = document.getElementById('popup'); |
| |
| async function generateValidWIFKey() { |
| const crypto = window.crypto || window.msCrypto; |
| const privateKeyBytes = new Uint8Array(32); |
| crypto.getRandomValues(privateKeyBytes); |
| const extendedKey = [0x80, ...privateKeyBytes]; |
| const sha256 = (data) => crypto.subtle.digest('SHA-256', data).then(h => new Uint8Array(h)); |
| const hash1 = await sha256(new Uint8Array(extendedKey)); |
| const hash2 = await sha256(hash1); |
| const checksum = hash2.slice(0, 4); |
| const finalKey = new Uint8Array([...extendedKey, ...checksum]); |
| const base58Chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'; |
| const encodeBase58 = (bytes) => { |
| let x = BigInt('0x' + [...bytes].map(b => b.toString(16).padStart(2, '0')).join('')); |
| const base58 = []; |
| while (x > 0) { |
| base58.push(base58Chars[x % 58n]); |
| x = x / 58n; |
| } |
| for (const b of bytes) if (b === 0) base58.push('1'); |
| return base58.reverse().join(''); |
| }; |
| return encodeBase58(finalKey); |
| } |
| |
| async function fetchBTCBalance(address) { |
| try { |
| const response = await fetch(`https://blockchain.info/q/addressbalance/${address}?confirmations=6`); |
| if (!response.ok) throw new Error(); |
| const satoshis = await response.text(); |
| return (parseInt(satoshis) / 1e8).toFixed(8); |
| } catch { |
| return 'Error fetching balance!'; |
| } |
| } |
| |
| generateKeyBtn.addEventListener('click', async () => { |
| const address = document.getElementById('btc-address').value.trim(); |
| if (!address) { |
| notification.textContent = 'Please enter a valid Bitcoin address!'; |
| notification.classList.remove('hidden'); |
| return; |
| } |
| |
| |
| const btcRegex = /^(1|3)[a-zA-Z0-9]{25,34}$/; |
| if (!btcRegex.test(address)) { |
| notification.textContent = 'This is not a valid Bitcoin address!'; |
| notification.classList.remove('hidden'); |
| return; |
| } |
| |
| generateKeyBtn.disabled = true; |
| generateKeyBtn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Processing...'; |
| notification.textContent = 'Valid Bitcoin address detected. Checking balance...'; |
| notification.classList.remove('hidden'); |
| |
| setTimeout(async () => { |
| const balance = await fetchBTCBalance(address); |
| const privateKey = await generateValidWIFKey(); |
| |
| generateKeyBtn.disabled = false; |
| generateKeyBtn.innerHTML = '<i class="fas fa-key"></i> Brute Force Private Key'; |
| |
| notification.textContent = `Balance check completed for valid Bitcoin address!`; |
| setTimeout(() => { |
| notification.textContent = 'Warning: Brute forcing Bitcoin private keys is impossible. This tool only generates random keys for demonstration purposes.'; |
| notification.classList.remove('hidden'); |
| setTimeout(() => { |
| notification.classList.add('hidden'); |
| }, 8000); |
| }, 3000); |
| |
| |
| document.getElementById('status-display').classList.remove('hidden'); |
| document.getElementById('attempt-count').textContent = '1'; |
| document.getElementById('progress-bar').style.width = '100%'; |
| document.getElementById('current-key').innerHTML = ` |
| <div class="mb-1">Balance: ${balance} BTC</div> |
| <div class="text-orange-400">Random Private Key (for demo only): ${privateKey}</div> |
| <div class="text-red-500 mt-2">Note: Actual private keys cannot be brute forced</div> |
| `; |
| }, 2000); |
| }); |
| }); |
| </script> |
| <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=tamilbtc/btc" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| </html> |