Ağda bulunan herhangi bir cihazın açık portlarını taramak için aşağıda ki kodlar oldukça işime yaramıştı. Paylaşmak istedim.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net; using System.Net.Sockets; using System.Threading; namespace PortTarama { class Program { static ProtocolType pt; static List<int> openPorts = new List<int>(); static void Main(string[] args) { //yeniden: 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); } } }