Port Tarama

Aşağıda ki kodları incelemenizde fayda var.

 


Console.Title = "Port Tarama";
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("Port Tarama");
Console.WriteLine("-----------------------------------------");
Console.Write("Ip Adres: ");
var ip = Console.ReadLine();
Console.Write("Protokol (TCP[T]/UDP[U]): ");
string protocol = Console.ReadLine();
Console.Write("Taranacak port aralığını seçin (1-65535, Örnek: 80-443): ");
string range = Console.ReadLine();
int first = Convert.ToInt32(range.Split('-')[0]);
int second = Convert.ToInt32(range.Split('-')[1]);
Console.WriteLine("Lütfen bekleyin...");
if (protocol == "T" || protocol == "TCP")
pt = ProtocolType.Tcp;
if (protocol == "U" || protocol == "UDP")
pt = ProtocolType.Udp;
List<Task> Tasks = new List<Task>();
for (int i = first; i < second + 1; i++)
{
var less = i;
var t = new Task(() => Check(less, ip));
t.Start();
Tasks.Add(t);
}
Task.WaitAll(Tasks.ToArray());
Console.WriteLine("-----------------------------------------");
Console.WriteLine("Tarama bitti...");
Console.WriteLine("Açık Portlar:");
foreach (var i in openPorts)
{
Console.WriteLine(i);
}
Console.WriteLine("-----------------------------------------");
Console.WriteLine("Kapatmak için herhangi bir tuşa basın...");
//goto yeniden;
Console.ReadKey();
}
public static void Check(int i, string ip)
{
Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, pt);
try
{
sck.Connect(ip, i);
}
catch
{
Console.WriteLine("[-] {0} kapalı.", i.ToString());
sck.Dispose();
return;
}
sck.Dispose();
Console.WriteLine("[+] {0} açık.", i.ToString());
openPorts.Add(i);
}

Paylaşmayı unutmayın!