Bugün yıllardır merak ettiğim bir konuyu daha doğrusu kodu yapay zeka yardımı sayesinde çözdüm. Sonuçları sizinle paylaşmak istedim. Başlıktan da anlaşılacağı üzere kodlar bilgisayarınızda arka planda çalışan ağ trafiğini izleyip konsola yazıyor. Yararlı olur mu bilmiyorum belki geliştirip firewall filan kodlarsınız... Kodlarımız NuGet paketi olarak SharpPcap kütüphanesinden destek alıyor.
Üst Kütüphaneler
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpPcap;
using SharpPcap.LibPcap;
using System.Threading.Tasks;
Device_OnPacketArrival diye bir başlığımız var. Tam kodu şu şekilde;
C#:
private static void Device_OnPacketArrival(object sender, PacketCapture e)
{
// Yakalanan paketi al
var rawPacket = e.GetPacket();
var packet = PacketDotNet.Packet.ParsePacket(rawPacket.LinkLayerType, rawPacket.Data);
// Zaman damgası ve paket uzunluğunu yazdır
Console.WriteLine($"{rawPacket.Timeval.Date} - Paket uzunluğu: {rawPacket.Data.Length} bayt");
// IP paketini analiz et (örnek)
var ipPacket = packet.Extract<PacketDotNet.IPPacket>();
if (ipPacket != null)
{
Console.WriteLine($"Kaynak IP: {ipPacket.SourceAddress} -> Hedef IP: {ipPacket.DestinationAddress}");
}
}
Şimdi yukarıdaki başlığı işlemeye geldi sıra... Burada ise ağ arayüzlerini listeleyip arayüzler içerisinde ki trafikleri görmenizi sağlıyor.
C#:
// Mevcut ağ arayüzlerini listele
var devices = CaptureDeviceList.Instance;
if (devices.Count == 0)
{
Console.WriteLine("Hiçbir ağ arayüzü bulunamadı! Npcap/WinPcap kurulu olduğundan emin ol.");
return;
}
// Arayüzleri yazdır
for (int i = 0; i < devices.Count; i++)
{
Console.WriteLine($"{i + 1}: {devices[i].Name}");
Console.WriteLine($"\tAçıklama: {devices[i].Description}");
}
// Kullanıcıdan arayüz seçmesini iste
Console.Write("\nİzlemek istediğin arayüz numarasını gir (1-{0}): ", devices.Count);
int deviceIndex = int.Parse(Console.ReadLine()) - 1;
// Seçilen cihazı al
ICaptureDevice device = devices[deviceIndex];
// Paket yakalama olayını tanımla
device.OnPacketArrival += new PacketArrivalEventHandler(Device_OnPacketArrival);
// Cihazı aç (promiscuous modda, 1000 ms timeout)
device.Open(DeviceModes.Promiscuous, 1000);
Console.WriteLine("Ağ trafiği izleniyor... Çıkmak için Ctrl+C kullan.");
// Yakalamayı başlat
device.StartCapture();
// Programın kapanmasını engelle
Console.ReadLine();
// Yakalamayı durdur ve cihazı kapat
device.StopCapture();
device.Close();
[ SONUÇ ]





