| |
| const dorks = [ |
| |
| { |
| id: 1, |
| category: 'sensitive-files', |
| title: 'SQL Database Files', |
| query: 'site:{target} ext:sql | ext:db | ext:sqlite | ext:sqlite3 | ext:mdb | ext:dbf', |
| description: 'Find exposed database files', |
| icon: 'database' |
| }, |
| { |
| id: 2, |
| category: 'sensitive-files', |
| title: 'Configuration Files', |
| query: 'site:{target} ext:xml | ext:conf | ext:cnf | ext:reg | ext:inf | ext:rdp | ext:cfg | ext:ini | ext:env', |
| description: 'Exposed configuration and settings files', |
| icon: 'file-cog' |
| }, |
| { |
| id: 3, |
| category: 'sensitive-files', |
| title: 'Log Files', |
| query: 'site:{target} ext:log', |
| description: 'Find log files with sensitive data', |
| icon: 'file-text' |
| }, |
| { |
| id: 4, |
| category: 'sensitive-files', |
| title: 'Backup & Old Files', |
| query: 'site:{target} ext:bkf | ext:bkp | ext:bak | ext:old | ext:backup | ext:save', |
| description: 'Backup and old file versions', |
| icon: 'archive' |
| }, |
| { |
| id: 5, |
| category: 'sensitive-files', |
| title: 'Password Files', |
| query: 'site:{target} intitle:index.of "password.txt" | "passwd" | "credentials"', |
| description: 'Search for password files in directory listings', |
| icon: 'key' |
| }, |
| { |
| id: 6, |
| category: 'sensitive-files', |
| title: 'Git Repositories', |
| query: 'inurl:.git site:{target} "index of" | intitle:"Index of /.git"', |
| description: 'Exposed Git repositories', |
| icon: 'git-branch' |
| }, |
| |
| |
| { |
| id: 7, |
| category: 'vulnerabilities', |
| title: 'SQL Injection Parameters', |
| query: 'site:{target} inurl:".php?id=" | inurl:".asp?id=" | inurl:"/index.php?id=" | inurl:"/product.php?id="', |
| description: 'Potential SQL injection points', |
| icon: 'alert-triangle' |
| }, |
| { |
| id: 8, |
| category: 'vulnerabilities', |
| title: 'XSS Parameters', |
| query: 'site:{target} inurl:"?q=" | inurl:"?search=" | inurl:"?query=" | inurl:"?s=" | inurl:"?keyword="', |
| description: 'Parameters that might be vulnerable to XSS', |
| icon: 'crosshair' |
| }, |
| { |
| id: 9, |
| category: 'vulnerabilities', |
| title: 'LFI/RFI Parameters', |
| query: 'site:{target} inurl:"?file=" | inurl:"?page=" | inurl:"?path=" | inurl:"?folder=" | inurl:"?include="', |
| description: 'File inclusion vulnerability parameters', |
| icon: 'file-input' |
| }, |
| { |
| id: 10, |
| category: 'vulnerabilities', |
| title: 'Open Redirects', |
| query: 'site:{target} inurl:"?url=" | inurl:"?redirect=" | inurl:"?return=" | inurl:"?next=" | inurl:"?redirect_uri="', |
| description: 'Potential open redirect parameters', |
| icon: 'link' |
| }, |
| { |
| id: 11, |
| category: 'vulnerabilities', |
| title: 'phpinfo() Pages', |
| query: 'site:{target} "PHP Version" "phpinfo()" "Zend Scripting Language Engine"', |
| description: 'Exposed PHP configuration pages', |
| icon: 'info' |
| }, |
| { |
| id: 12, |
| category: 'vulnerabilities', |
| title: 'API Keys & Tokens', |
| query: 'site:{target} "api_key" | "apikey" | "api_secret" | "access_token" | "auth_token" | "client_secret"', |
| description: 'Hardcoded API keys and tokens', |
| icon: 'key-round' |
| }, |
|
|
| |
| { |
| id: 13, |
| category: 'directories', |
| title: 'Directory Listings', |
| query: 'site:{target} intitle:"Index of" "Parent Directory" "Directory Listing"', |
| description: 'Open directory indexes', |
| icon: 'folder-open' |
| }, |
| { |
| id: 14, |
| category: 'directories', |
| title: 'Admin Panels', |
| query: 'site:{target} inurl:"/admin" | inurl:"/administrator" | inurl:"/adminpanel" | inurl:"/controlpanel" | inurl:"/dashboard"', |
| description: 'Potential administrative interfaces', |
| icon: 'shield' |
| }, |
| { |
| id: 15, |
| category: 'directories', |
| title: 'Upload Folders', |
| query: 'site:{target} inurl:"/upload" | inurl:"/uploads" | inurl:"/file" | inurl:"/files" intitle:"index of"', |
| description: 'Exposed upload directories', |
| icon: 'upload-cloud' |
| }, |
| { |
| id: 16, |
| category: 'directories', |
| title: 'Backup Directories', |
| query: 'site:{target} inurl:"/backup" | inurl:"/backups" | inurl:"/dump" | inurl:"/dumps" | inurl:"/archive"', |
| description: 'Backup and dump directories', |
| icon: 'archive-restore' |
| }, |
| { |
| id: 17, |
| category: 'directories', |
| title: 'Source Code', |
| query: 'site:{target} ext:zip | ext:tar | ext:gz | ext:rar | ext:7z "source" | "backup" | "code"', |
| description: 'Compressed source code archives', |
| icon: 'code-2' |
| }, |
|
|
| |
| { |
| id: 18, |
| category: 'cameras', |
| title: 'Live Cameras', |
| query: 'inurl:"view.shtml" | inurl:"viewerframe?mode=" | inurl:"view/index.shtml" | inurl:"camera"', |
| description: 'Potentially exposed live cameras', |
| icon: 'video' |
| }, |
| { |
| id: 19, |
| category: 'cameras', |
| title: 'Webcam Interfaces', |
| query: 'intitle:"webcam" | inurl:"webcam" | intitle:"live view" | inurl:"lvappl" | inurl:"live_view"', |
| description: 'Webcam control interfaces', |
| icon: 'webcam' |
| }, |
| { |
| id: 20, |
| category: 'cameras', |
| title: 'CCTV Systems', |
| query: 'intitle:"CCTV" | inurl:"cctv" | intitle:"DVR" | inurl:"dvr" | intitle:"NVR" | inurl:"nvr"', |
| description: 'CCTV and DVR systems', |
| icon: 'scan-eye' |
| }, |
| { |
| id: 21, |
| category: 'cameras', |
| title: 'Network Printers', |
| query: 'inurl:"printer" | intitle:"printer" | inurl:"ipp" | inurl:"print" | intitle:"HP Printer" | intitle:"Epson"', |
| description: 'Exposed network printers', |
| icon: 'printer' |
| }, |
| { |
| id: 22, |
| category: 'cameras', |
| title: 'Routers/Modems', |
| query: 'intitle:"router" | inurl:"router" | intitle:"modem" | inurl:"modem" | intitle:"gateway" | inurl:"gateway"', |
| description: 'Router and modem admin pages', |
| icon: 'wifi' |
| }, |
|
|
| |
| { |
| id: 23, |
| category: 'login', |
| title: 'Login Portals', |
| query: 'site:{target} inurl:"login" | inurl:"signin" | inurl:"auth" | inurl:"account" | intitle:"login"', |
| description: 'Login and authentication pages', |
| icon: 'log-in' |
| }, |
| { |
| id: 24, |
| category: 'login', |
| title: 'WordPress Admin', |
| query: 'site:{target} inurl:"wp-login" | inurl:"wp-admin" | inurl:"wp-config"', |
| description: 'WordPress administration pages', |
| icon: 'type' |
| }, |
| { |
| id: 25, |
| category: 'login', |
| title: 'cPanel/WebHost', |
| query: 'site:{target} inurl:"cpanel" | inurl:"webmail" | inurl:"whm" | inurl:"webhost" | intitle:"cPanel"', |
| description: 'Hosting control panels', |
| icon: 'server' |
| }, |
| { |
| id: 26, |
| category: 'login', |
| title: 'Joomla Admin', |
| query: 'site:{target} inurl:"/administrator" "Joomla" | inurl:"joomla"', |
| description: 'Joomla administration panels', |
| icon: 'layout-template' |
| }, |
| { |
| id: 27, |
| category: 'login', |
| title: 'phpMyAdmin', |
| query: 'site:{target} inurl:"phpmyadmin" | inurl:"phpMyAdmin" | intitle:"phpMyAdmin"', |
| description: 'Database management interfaces', |
| icon: 'table' |
| } |
| ]; |
|
|
| let currentCategory = 'all'; |
| let searchTerm = ''; |
|
|
| |
| document.addEventListener('DOMContentLoaded', () => { |
| lucide.createIcons(); |
| renderDorks(); |
| }); |
|
|
| function renderDorks() { |
| const grid = document.getElementById('dorksGrid'); |
| const emptyState = document.getElementById('emptyState'); |
| |
| let filtered = dorks; |
| |
| if (currentCategory !== 'all') { |
| filtered = filtered.filter(d => d.category === currentCategory); |
| } |
| |
| if (searchTerm) { |
| const term = searchTerm.toLowerCase(); |
| filtered = filtered.filter(d => |
| d.title.toLowerCase().includes(term) || |
| d.description.toLowerCase().includes(term) || |
| d.query.toLowerCase().includes(term) |
| ); |
| } |
| |
| if (filtered.length === 0) { |
| grid.innerHTML = ''; |
| emptyState.classList.remove('hidden'); |
| return; |
| } |
| |
| emptyState.classList.add('hidden'); |
| |
| grid.innerHTML = filtered.map(dork => { |
| const categoryLabels = { |
| 'sensitive-files': 'Sensitive Files', |
| 'vulnerabilities': 'Vulnerabilities', |
| 'directories': 'Directories', |
| 'cameras': 'Cameras/IoT', |
| 'login': 'Login Pages' |
| }; |
| |
| const categoryBadgeClass = `badge-${dork.category}`; |
| |
| return ` |
| <div class="dork-card group relative bg-slate-900/50 border border-slate-800/80 rounded-xl p-5 hover:border-slate-700 hover:bg-slate-900/80"> |
| <div class="flex items-start justify-between mb-3"> |
| <div class="flex items-center gap-3"> |
| <div class="w-10 h-10 rounded-lg bg-slate-800/80 flex items-center justify-center group-hover:bg-slate-800 transition-colors"> |
| <i data-lucide="${dork.icon}" class="w-5 h-5 text-slate-400 group-hover:text-blue-400 transition-colors"></i> |
| </div> |
| <div> |
| <h3 class="font-semibold text-slate-100 text-sm leading-tight">${dork.title}</h3> |
| <span class="inline-block mt-1 px-2 py-0.5 rounded text-xs font-medium border ${categoryBadgeClass}">${categoryLabels[dork.category]}</span> |
| </div> |
| </div> |
| </div> |
| |
| <p class="text-slate-500 text-xs mb-3 leading-relaxed">${dork.description}</p> |
| |
| <div class="relative"> |
| <div class="bg-slate-950 rounded-lg border border-slate-800/80 p-3 font-mono text-xs text-slate-400 break-all leading-relaxed group-hover:border-slate-700 transition-colors"> |
| ${highlightQuery(dork.query)} |
| </div> |
| </div> |
| |
| <div class="flex gap-2 mt-3"> |
| <button onclick="copyDork('${dork.id}')" class="flex-1 flex items-center justify-center gap-2 bg-slate-800/50 hover:bg-slate-800 border border-slate-700/50 hover:border-slate-600 rounded-lg py-2 text-xs font-medium text-slate-300 hover:text-white transition-all"> |
| <i data-lucide="copy" class="w-3.5 h-3.5"></i> |
| Copy |
| </button> |
| <button onclick="searchDork('${dork.id}')" class="flex-1 flex items-center justify-center gap-2 bg-blue-600/10 hover:bg-blue-600/20 border border-blue-500/20 hover:border-blue-500/30 rounded-lg py-2 text-xs font-medium text-blue-400 hover:text-blue-300 transition-all"> |
| <i data-lucide="external-link" class="w-3.5 h-3.5"></i> |
| Search |
| </button> |
| </div> |
| </div> |
| `; |
| }).join(''); |
| |
| lucide.createIcons(); |
| } |
|
|
| function highlightQuery(query) { |
| return query.replace(/\{target\}/g, '<span class="text-blue-400 font-semibold">{target}</span>'); |
| } |
|
|
| function getQueryById(id) { |
| return dorks.find(d => d.id == id)?.query; |
| } |
|
|
| function getDorkById(id) { |
| return dorks.find(d => d.id == id); |
| } |
|
|
| function copyDork(id) { |
| const dork = getDorkById(id); |
| const target = document.getElementById('targetInput').value.trim() || 'example.com'; |
| const query = dork.query.replace(/\{target\}/g, target); |
| |
| navigator.clipboard.writeText(query).then(() => { |
| showToast(); |
| }); |
| } |
|
|
| function searchDork(id) { |
| const dork = getDorkById(id); |
| const target = document.getElementById('targetInput').value.trim() || 'example.com'; |
| const query = dork.query.replace(/\{target\}/g, target); |
| |
| const url = `https://www.google.com/search?q=${encodeURIComponent(query)}`; |
| window.open(url, '_blank'); |
| } |
|
|
| function filterByCategory(category) { |
| currentCategory = category; |
| |
| |
| document.querySelectorAll('.category-btn').forEach(btn => { |
| btn.classList.remove('active'); |
| }); |
| event.target.classList.add('active'); |
| |
| renderDorks(); |
| } |
|
|
| function filterDorks() { |
| searchTerm = document.getElementById('searchInput').value; |
| renderDorks(); |
| } |
|
|
| function buildCustomDork() { |
| const target = document.getElementById('targetInput').value.trim(); |
| const keywords = document.getElementById('keywordInput').value.trim(); |
| |
| if (!target) { |
| alert('Please enter a target domain'); |
| return; |
| } |
| |
| let query = `site:${target}`; |
| if (keywords) { |
| query += ` ${keywords}`; |
| } |
| |
| const resultDiv = document.getElementById('customResult'); |
| const queryText = document.getElementById('customQueryText'); |
| |
| queryText.textContent = query; |
| resultDiv.classList.remove('hidden'); |
| } |
|
|
| function copyCustomDork() { |
| const query = document.getElementById('customQueryText').textContent; |
| navigator.clipboard.writeText(query).then(() => { |
| showToast(); |
| }); |
| } |
|
|
| function searchCustomDork() { |
| const query = document.getElementById('customQueryText').textContent; |
| const url = `https://www.google.com/search?q=${encodeURIComponent(query)}`; |
| window.open(url, '_blank'); |
| } |
|
|
| function showToast() { |
| const toast = document.getElementById('toast'); |
| toast.classList.add('show'); |
| |
| setTimeout(() => { |
| toast.classList.remove('show'); |
| }, 2000); |
| } |
|
|
| |
| lucide.createIcons(); |