Herkese merhabalar daha önce sevgili @PINOSHE 'in açmış olduğu konu(bana tıkla bu adresten) çok hoşuma gitti ki değerli arkadaşımızdan devamını bekliyorum. Ben de duramadım C# versiyonunu geliştireyim dedim. Tabi ki bazı eksiltmeler yaptım değerli dostumuzun konusundaki gibi bir API bağlantısı vesaire yapmıyor sadece RestSharp ile istek atıp website'nin header yapılarını kontrol ediyor & belirtilen yapılar varsa korumalıdır uyarısı veriyor. Kendi kodladığım kod tek kullanımlıktı çoğaltamayınca yapay zeka yardımı gerekti haliyle benim kodu biraz daha değiştirdi :/. Neyse konumuza geçelim.
İlk önce gerekli Nuget paketimizi projemize ekleyelim. Bu paket sayesinde daha verimli istekler atabilirsiniz.
using System;using System.Collections.Generic;using System.Linq;using System.Text.RegularExpressions;using System.Threading.Tasks;using RestSharp;Daha sonra kodlamamıza geçelim...
Kodumuz daha verimli çalışması için asenkron yapıya bağlamış zira ben böyle yapı istemiyordum.
C#:
static async Task Main(string[] args)
{
Console.OutputEncoding = System.Text.Encoding.UTF8;
Console.BackgroundColor = ConsoleColor.Green;
Console.ForegroundColor = ConsoleColor.Blue;
while (true)
{
Console.Write("Lütfen bir domain girin (çıkmak için y): ");
string domainInput = Console.ReadLine();
if (domainInput.ToLower() == "y")
break;
if (!Regex.IsMatch(domainInput, @"^https?://", RegexOptions.IgnoreCase))
domainInput = "http://" + domainInput;
var (headers, body) = await GetHttpHeadersAndBody(domainInput);
bool ddosDetected = false;
List<string> detectedProviders = new List<string>();
string[] knownProviders = {
"cloudflare", "ddos-guard", "sucuri", "incapsula", "akamai", "fastly", "imperva", "stackpath"
};
string serverHeader = headers.TryGetValue("Server", out var val) ? val : "";
foreach (var provider in knownProviders)
{
if (serverHeader.IndexOf(provider, StringComparison.OrdinalIgnoreCase) >= 0)
{
ddosDetected = true;
detectedProviders.Add(Capitalize(provider));
}
}
foreach (var kv in headers)
{
if (Regex.IsMatch(kv.Key, @"^(cf-|x-sucuri|x-ddos|x-cdn|x-iinfo|x-akamai|x-imperva)", RegexOptions.IgnoreCase))
{
ddosDetected = true;
detectedProviders.Add(kv.Key);
}
}
string bodyDetection = DetectDdosInBody(body);
if (bodyDetection != null)
{
ddosDetected = true;
detectedProviders.Add(bodyDetection);
}
Console.WriteLine($"\nDDoS Koruması: {(ddosDetected ? "Tespit Edildi" : "Yok")}");
if (ddosDetected)
{
Console.WriteLine(" Tespit Edilen Sağlayıcılar :");
foreach (var provider in detectedProviders.Distinct())
{
Console.WriteLine($"- {provider}");
}
}
Console.WriteLine();
}
}
Kodumuzun geri kalanında ise belirtilen yapıların hedef website üzerinde taraması devam ediyor. Bir pattern taraması gerçekleşiyor.
C#:
static async Task<(Dictionary<string, string>, string)> GetHttpHeadersAndBody(string url)
{
var client = new RestClient(url);
var request = new RestRequest("/", Method.Get);
var response = await client.ExecuteAsync(request);
var headers = response.Headers
.GroupBy(h => h.Name, StringComparer.OrdinalIgnoreCase)
.ToDictionary(g => g.Key, g => g.First().Value?.ToString() ?? "");
return (headers, response.Content ?? "");
}
static string DetectDdosInBody(string body)
{
string[] patterns = {
"Checking your browser before accessing",
"DDoS protection by Cloudflare",
"Please wait while we check your browser",
"Verifying your browser",
"DDoS-Guard",
"Sucuri Website Firewall - Access Denied",
"Incapsula incident ID"
};
foreach (var pattern in patterns)
{
if (body.IndexOf(pattern, StringComparison.OrdinalIgnoreCase) >= 0)
return pattern;
}
return null;
}
static string Capitalize(string input)
{
if (string.IsNullOrEmpty(input))
return input;
return char.ToUpper(input[0]) + input.Substring(1);
}
Şimdi ise test için DDOS koruması olmayan websitelerine bakalım. Bunun için Google dorking yöntemini kullanacağım & bulunan sonuçlar ile THT adresini karşılaştıracağım.
Dork;
Kod:
site:*.com -"cloudflare" -"cf-ray" filetype:php
[ SONUÇ GÖRSELİ ]
Okuduğunuz için teşekkürler.


