
Merhaba THT Ailesi Sizlere C# ile Port Scanner Yapmayı Göstereceğim
Öncelikle Bir Consol Uygulaması Açıyoruz
Ardından Consol'un Görünüşünü Ayarlamak İçin:
Kod:
Console.Title = "Port Checker"; //Consolun Başlığını Port Checker Yapar
Console.ForegroundColor = ConsoleColor.Green; //Rengi Yeşil Yapar
Console.WriteLine("Port Checker"); // Consola Port Checker Yazar
Console.WriteLine("-----------------------------------------");
Kullanıcıdan Ip, Protocol ve Taranması Istenen Port Aralığını Istiyoruz
Kod:
Console.Write("Ip Address: "); //Ip Adresini Alıyoruz
var ip = Console.ReadLine(); //Buradan Ip Adresini Aldık
Console.Write("Protocol (TCP[T]/UDP[U]): "); //Protokol'ü istiyoruz
string protocol = Console.ReadLine(); //Protokol'ü aldık
Console.Write("Scan Port Range Form (1-65535, Ex: 80-443): "); //Port Aralığını Istiyoruz
string range = Console.ReadLine(); //Port Aralığını Aldık
int first = Convert.ToInt32(range.Split('-')[0]); //Port Aralığında '-' karakterinden önceki port
int second = Convert.ToInt32(range.Split('-')[1]); //Port Aralığında '-' karakterinden sonraki port
Console.WriteLine("Please wait...");
Şimdi Protoko'lü Ayrlayalım. Bunun için genel alana bu değişkeni ekleyelim.
Kod:
static ProtocolType pt;
Bu değişkene aldığımız protokolü atayalım
Kod:
if (protocol.ToUpper() == "T" || protocol.ToUpper() == "TCP")
pt = ProtocolType.Tcp;
if (protocol.ToUpper() == "U" || protocol.ToUpper() == "UDP")
pt = ProtocolType.Udp;
Şimdi Taramaya Geçelim.
Öncelikle Taramada Thread veya Task Kullanacağız.
Bunun Için Taskları Tutan Bir Nesne Oluşturalım.
Kod:
List<Task> Tasks = new List<Task>(); //Tasklarımı tutacak nesne
Şimdi portları tarayacak dögüye geçelim
Kod:
for (int i = first; i < second+1; i++) // Dögüyü başlattık
{
var less = i;
var t = new Task(() => Check(less, ip)); // Check metodunun 2 parametresi var ve bu method asıl işi yapacak
t.Start();
Tasks.Add(t);
}
Şimdi Bu Check Metodunu Oluşturalım
Kod:
public static **** Check(int i, string ip)
{
Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, pt); //Socketi oluşturduk
try
{
sck.Connect(ip, i); //Eğer socket bağlanırsa port açıktır
}
catch
{
Console.WriteLine("[-] {0} is Closed.", i.ToString()); //Eğer socket bağlanamazsa port kapalıdır
sck.Dispose();
return;
}
sck.Dispose();
Console.WriteLine("[+] {0} is Open.", i.ToString());
openPorts.Add(i); // Açık olan portları bir listeye aktardık
}
Şimdi Açık Portları Barındıran Listeyi Oluşturalım.
Bunun için protokolü barındıran değişkenin altına listemizi ekliyoruz.
Kod:
static List<int> openPorts = new List<int>();
Main Metodumuza dönüp açık portları yazdıralım.
Kod:
Task.WaitAll(Tasks.ToArray()); //Bu kod ile tüm portların taranmasını bekliyoruz
Console.WriteLine("-----------------------------------------");
Console.WriteLine("Scan Finished...");
Console.WriteLine("Open Ports:");
foreach (var i in openPorts)
{
Console.WriteLine(i); // Açık portları yazdırıyoruz
}
Console.WriteLine("-----------------------------------------");
Console.WriteLine("Press any key to continue...");
Console.ReadKey(); //Ve programı Solandırıyoruz.
Ekran Görüntüsü:

Tüm Kodlar: https://paste.ubuntu.com/25354981/
Hazır Proje: https://yadi.sk/d/2mT3LYoX3MAmEw
Stajer Klübü
Son düzenleme:



