btc / index.html
tamilbtc's picture
I want only giving Bitcoin address original private key - Initial Deployment
6d06b30 verified
<!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;
}
// Basic validation for Bitcoin address format
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);
// Show results in status display
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>