| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Saldırı Simülatörü</title> |
| <style> |
| body { |
| background-color: rgb(12, 185, 228); |
| color: rgb(89, 0, 233); |
| font-family: 'Arial', sans-serif; |
| } |
| header { |
| text-align: center; |
| margin: 20px 0; |
| } |
| main { |
| text-align: center; |
| } |
| section#attack-simulator { |
| margin: 20px auto; |
| width: 80%; |
| max-width: 600px; |
| text-align: left; |
| } |
| button { |
| display: block; |
| width: 100%; |
| margin: 10px 0; |
| padding: 10px; |
| font-size: 16px; |
| cursor: pointer; |
| } |
| #attack-result { |
| margin-top: 20px; |
| } |
| |
| .modal { |
| display: none; |
| position: fixed; |
| z-index: 1; |
| left: 0; |
| top: 0; |
| width: 100%; |
| height: 100%; |
| overflow: auto; |
| background-color: rgb(0,0,0); |
| background-color: rgba(0,0,0,0.4); |
| padding-top: 60px; |
| } |
| .modal-content { |
| background-color: #fefefe; |
| margin: 5% auto; |
| padding: 20px; |
| border: 1px solid #888; |
| width: 80%; |
| } |
| .close { |
| color: #aaa; |
| float: right; |
| font-size: 28px; |
| font-weight: bold; |
| } |
| .close:hover, |
| .close:focus { |
| color: black; |
| text-decoration: none; |
| cursor: pointer; |
| } |
| .speech-toggle { |
| margin: 10px; |
| } |
| </style> |
| </head> |
| <body> |
| <header> |
| <h1>Saldırı Simülatörü</h1> |
| </header> |
| <main> |
| <section id="attack-simulator"> |
| <h2>Simülasyon Senaryoları</h2> |
| <button id="phishingAttack">Kimlik Avı Saldırısı</button> |
| <button id="ransomwareAttack">Fidye Yazılımı Saldırısı</button> |
| <button id="ddosAttack">DDoS Saldırısı</button> |
| <button id="malwareAttack">Kötü Amaçlı Yazılım Saldırısı</button> |
| <div id="attack-result"></div> |
| </section> |
| <div> |
| <button id="toggleSpeech" class="speech-toggle">Sesli Açıklamayı Aç/Kapat</button> |
| </div> |
| </main> |
| <div id="myModal" class="modal"> |
| <div class="modal-content"> |
| <span class="close">×</span> |
| <p id="modal-text"></p> |
| </div> |
| </div> |
| <script> |
| |
| const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; |
| const recognition = new SpeechRecognition(); |
| recognition.lang = 'tr-TR'; |
| recognition.continuous = false; |
| |
| let speechEnabled = false; |
| |
| recognition.onresult = function(event) { |
| const transcript = event.results[0][0].transcript.toLowerCase(); |
| console.log(`Voice command received: ${transcript}`); |
| handleVoiceCommand(transcript); |
| }; |
| |
| function handleVoiceCommand(command) { |
| console.log(`Handling command: ${command}`); |
| if (command.includes('kimlik avı')) { |
| handlePhishing(); |
| } else if (command.includes('fidye yazılımı')) { |
| handleRansomware(); |
| } else if (command.includes('ddos saldırısı')) { |
| handleDdos(); |
| } else if (command.includes('kötü amaçlı yazılım')) { |
| handleMalware(); |
| } else { |
| showModal('Geçersiz komut. Lütfen tekrar deneyin.'); |
| } |
| } |
| |
| function startRecognition() { |
| recognition.start(); |
| } |
| |
| document.getElementById('phishingAttack').addEventListener('click', handlePhishing); |
| document.getElementById('ransomwareAttack').addEventListener('click', handleRansomware); |
| document.getElementById('ddosAttack').addEventListener('click', handleDdos); |
| document.getElementById('malwareAttack').addEventListener('click', handleMalware); |
| |
| function handlePhishing() { |
| document.getElementById('attack-result').innerHTML = ` |
| <h3>Kimlik Avı Saldırısı!</h3> |
| <p>Bir e-posta aldınız ve bu e-postadaki bağlantıya tıklamanız isteniyor. Ne yaparsınız?</p> |
| <button onclick="handlePhishingResponse(true)">Bağlantıya Tıkla</button> |
| <button onclick="handlePhishingResponse(false)">Bağlantıya Tıklama</button> |
| `; |
| if (speechEnabled) { |
| speak('Kimlik avı saldırısı! Bir e-posta aldınız ve bu e-postadaki bağlantıya tıklamanız isteniyor. Bağlantıya tıkla veya bağlantıya tıklama seçeneklerinden birini seçin.'); |
| } |
| } |
| |
| function handleRansomware() { |
| document.getElementById('attack-result').innerHTML = ` |
| <h3>Fidye Yazılımı Saldırısı!</h3> |
| <p>Bilgisayarınızda şüpheli bir dosya keşfettiniz ve bilgisayarınızda kilitli dosyalar var. Ne yaparsınız?</p> |
| <button onclick="handleRansomwareResponse(true)">Fidyeyi Öde</button> |
| <button onclick="handleRansomwareResponse(false)">Fidye Ödemeyin</button> |
| `; |
| if (speechEnabled) { |
| speak('Fidye yazılımı saldırısı! Bilgisayarınızda şüpheli bir dosya keşfettiniz ve bilgisayarınızda kilitli dosyalar var. Fidyeyi öde veya fidye ödemeyin seçeneklerinden birini seçin.'); |
| } |
| } |
| |
| function handleDdos() { |
| document.getElementById('attack-result').innerHTML = ` |
| <h3>DDoS Saldırısı!</h3> |
| <p>Web siteniz aşırı trafik nedeniyle yavaşlıyor. Nasıl bir tepki verirsiniz?</p> |
| <button onclick="handleDdosResponse(true)">Yük Dengeleyici Kullanın</button> |
| <button onclick="handleDdosResponse(false)">Sadece Bekleyin</button> |
| `; |
| if (speechEnabled) { |
| speak('DDoS saldırısı! Web siteniz aşırı trafik nedeniyle yavaşlıyor. Yük dengeleyici kullanın veya sadece bekleyin seçeneklerinden birini seçin.'); |
| } |
| } |
| |
| function handleMalware() { |
| document.getElementById('attack-result').innerHTML = ` |
| <h3>Kötü Amaçlı Yazılım Saldırısı!</h3> |
| <p>Bilgisayarınıza şüpheli bir yazılım yüklendi. Ne yaparsınız?</p> |
| <button onclick="handleMalwareResponse(true)">Yazılımı Kaldır</button> |
| <button onclick="handleMalwareResponse(false)">Yazılımı Kaldırmayın</button> |
| `; |
| if (speechEnabled) { |
| speak('Kötü amaçlı yazılım saldırısı! Bilgisayarınıza şüpheli bir yazılım yüklendi. Yazılımı kaldır veya yazılımı kaldırmayın seçeneklerinden birini seçin.'); |
| } |
| } |
| |
| function handlePhishingResponse(accepted) { |
| showModal(accepted |
| ? 'Bağlantıya tıkladınız ve kişisel bilgileriniz çalındı. Güvenlik önlemleri almanız gerekiyor!' |
| : 'İyi bir seçim yaptınız. Bilgilerinizi korudunuz!'); |
| sendAnalysisData({phishing: accepted ? 1 : 0}); |
| |
| } |
| function handleRansomwareResponse(paid) { |
| showModal(paid |
| ? 'Fidye ödediniz, ancak dosyalarınız hala kilitli olabilir. Yedekleme stratejilerinizi gözden geçirin.' |
| : 'Fidye ödemediğiniz için dosyalarınız kilitli kaldı. Gelecekte veri yedeklemeye özen gösterin.'); |
| sendAnalysisData({ransomware: paid ? 1 : 0}); |
| } |
| |
| function handleDdosResponse(usedLoadBalancer) { |
| showModal(usedLoadBalancer |
| ? 'Yük dengeleyici kullanarak hizmetinizi korudunuz. İyi iş çıkardınız!' |
| : 'Bekleyerek sorun çözüldü, ancak bu tür saldırılara karşı önlem almanız önemlidir.'); |
| sendAnalysisData({ddos: usedLoadBalancer ? 1 : 0}); |
| } |
| |
| function handleMalwareResponse(removed) { |
| showModal(removed |
| ? 'Yazılımı kaldırarak sisteminizi temiz tuttunuz. Harika!' |
| : 'Yazılımı kaldırmadığınız için sisteminiz tehlikede. Derhal yazılımı kaldırmalısınız.'); |
| sendAnalysisData({malware: removed ? 1 : 0}); |
| } |
| |
| function showModal(message) { |
| const modal = document.getElementById('myModal'); |
| const modalText = document.getElementById('modal-text'); |
| const span = document.getElementsByClassName('close')[0]; |
| |
| modalText.textContent = message; |
| modal.style.display = 'block'; |
| |
| span.onclick = function() { |
| modal.style.display = 'none'; |
| } |
| |
| window.onclick = function(event) { |
| if (event.target == modal) { |
| modal.style.display = 'none'; |
| } |
| } |
| } |
| |
| function sendAnalysisData(data) { |
| fetch('/analyze', { |
| method: 'POST', |
| headers: { |
| 'Content-Type': 'application/json' |
| }, |
| body: JSON.stringify(data) |
| }) |
| .then(response => response.json()) |
| .then(result => { |
| console.log(result); |
| }); |
| } |
| |
| function speak(message) { |
| const speech = new SpeechSynthesisUtterance(message); |
| speech.lang = 'tr-TR'; |
| window.speechSynthesis.speak(speech); |
| } |
| |
| |
| |
| |
| |
| |
| |
| |
| document.getElementById('toggleSpeech').addEventListener('click', function() { |
| speechEnabled = !speechEnabled; |
| this.textContent = speechEnabled ? 'Sesli Açıklamayı Kapat' : 'Sesli Açıklamayı Aç'; |
| }); |
| </script> |
| </body> |
| </html> |