# Pcap
Bilgisayar ağ yönetimi alanında, pcap ağ trafiğini yakalama için bir API'dir. Bu isim packet capture kelimesinin kısaltması olsa da, API'nin özel ismi bu değildir. Unix benzeri sistemler pcap'i "libpcap" kütüphanesinde uygular; Windows için, libpcap'in artık desteklenmeyen veya geliştirilmeyen "WinPcap" adlı bir uyarlaması ve Windows 7 ve sonrası için hala desteklenen "Npcap" adlı bir uyarlaması vardır.
Herhangi bir izleme yazılımı, libpcap, WinPcap veya Npcap'i bir bilgisayar ağı üzerinde dolaşan ağ paketi yakalamak ve daha yeni sürümlerde paketleri bağlantı katmanı üzerinde bir ağa iletmek ve libpcap, WinPcap veya Npcap ile olası kullanım için ağ arayüzlerinin bir listesini almak için kullanabilir.
Pcap API, C ile yazılmıştır, bu nedenle Java, .NET dilleri ve betik dili gibi diğer diller genellikle bir sarmalayıcı kütüphane (wrapper) kullanır; libpcap veya WinPcap'in kendisi tarafından böyle bir sarmalayıcı sağlanmamıştır. C++ programları doğrudan C API'sine bağlanabilir veya bir nesne yönelimli sarmalayıcı kullanabilir.


## Özellikler.
libpcap, WinPcap ve Npcap, protokol analizörleri (paket çözümleyicileri), ağ izleme sistemleri, ağ saldırı tespit sistemleri, trafik oluşturucular ve ağ test cihazları dahil olmak üzere birçok açık kaynak kodlu ve ticari ağ araçlarının paket yakalama ve filtreleme motorlarını oluşturur.
libpcap, WinPcap ve Npcap ayrıca yakalanan paketlerin bir dosyaya kaydedilmesini ve kaydedilen paketleri içeren dosyaların okunmasını da destekler; libpcap, WinPcap veya Npcap kullanılarak, ağ trafiğini yakalayıp analiz edebilmek veya kaydedilmiş bir yakalamayı okuyup aynı analiz kodunu kullanarak analiz edebilmek için uygulamalar yazılabilir. libpcap, WinPcap ve Npcap'in kullandığı biçimde kaydedilen bir yakalama dosyası, tcpdump, Wireshark, CA NetMaster veya Microsoft Ağ İzleyicisi 3.x gibi bu biçimi anlayan uygulamalar tarafından okunabilir.
libpcap, WinPcap ve Npcap tarafından oluşturulan ve okunan dosya biçimi için MIME türü application/vnd.tcpdump.pcap'dir. Tipik dosya uzantısı .pcap'tir, ancak .cap ve .dmp de yaygın olarak kullanılmaktadır.


## Tarihçe.
libpcap ilk olarak tcpdump geliştiricileri tarafından Lawrence Berkeley Ulusal Laboratuvarı'ndaki Ağ Araştırma Grubu'nda geliştirilmiştir. Tcpdump'ın düşük seviyeli paket yakalama, yakalama dosyası okuma ve yakalama dosyası yazma kodu, kod içerisinden çıkartıldı ve tcpdump'ın bağlandığı bir kütüphane haline getirildi. pcap şu anda tcpdump'ı geliştiren aynı tcpdump.org grubu tarafından geliştirilmektedir.


## Windows için pcap kütüphaneleri.
libpcap başlangıçta Unix benzeri işletim sistemleri için geliştirilmiş olsa da, Windows için WinPcap adı verilen başarılı bir uyarlama yapılmıştır. 2013'ten beri bakımı/geliştirmesi yapılmamaktadır, ve Windows'un daha yeni sürümleri için yeni özellikler ve destek ile birkaç rakip çatal projeler piyasaya sürülmüştür.


### WinPcap.
WinPcap şunlardan oluşur:
  - Windows NT ailesi için x86 ve x86-64 sürücüleri (Windows NT 4.0, 2000, XP, Server 2003, Vista, 7, 8 ve 10) için Network Driver Interface Specification (NDIS) 5.x kullanan ve paketleri doğrudan ağ bağdaştırıcısından okuyan sürücüler 
  - Bu sürücülerle iletişim kurmak için listelenen işletim sistemleri için daha düşük seviyeli bir kütüphanenin uygulamaları 
  - Düşük seviyeli kütüphane uygulamaları tarafından sunulan API'yi kullanan bir libpcap uyarlaması.
Orijinal kodu Politecnico di Torino'daki programcılar yazdı; 2008 itibarıyla WinPcap geliştiricilerinden bazıları tarafından kurulan bir şirket olan CACE Technologies ürünü geliştirdi ve sürdürdü. CACE, 21 Ekim 2010 tarihinde Riverbed Technology tarafından satın alındı.
WinPcap eski NDIS 5.x API'lerini kullandığından, daha yeni NDIS 6.x API'leri lehine bu API'leri kullanımdan kaldıran veya onaylamayan bazı Windows 10 yapılarında çalışmaz. Ayrıca Ethernet başlıklarında 802.1Q VLAN etiketleri yakalayamamak gibi bazı sınırlamalara da neden olur.
WinPcap projesi geliştirmeyi durdurdu ve WinPcap ile WinDump artık sürdürülmüyor. Son resmi WinPcap sürümü 8 Mart 2013'te yayınlanan 4.1.3 idi.


### Npcap.
Npcap Nmap Project'in Windows için paket koklama kütüphanesidir. WinPcap tabanlıdır, ancak Network Driver Interface Specification sürüm 6'daki Windows ağ geliştirmelerinden yararlanmak için yazılmıştır. Yazarları WinPcap NDIS 5 Protokol Sürücüsünü Hafif Filtre (LWF: Light-Weight Filter) sürücüsü olarak yeniden yazmışlardır, bu değişiklik işlem yükünü azaltmaktadır. Npcap bakım sürümleri, yazılım yazarlarının Linux yazılımının zaten desteklediği daha yeni API özelliklerini kullanmasına olanak tanıyarak, dahil edilen libpcap kütüphanesinin sürümünü mevcut en son sürüme güncelledi. WinPcap kullanan çoğu yazılım, minimum değişiklikle Npcap kullanmak için kolayca uyarlanabilir.
Npcap, WinPcap'te bulunmayan çeşitli yenilikler getirmiştir:
  - Npcap, yalnızca Admin kullanıcılar paketleri koklayabilecek şekilde kısıtlanabilir.
  - Npcap, Windows Filtreleme Platformu kullanarak loopback paketlerini (aynı makinedeki hizmetler arasındaki iletimler) koklayabilir ve enjekte edebilir.
  - Npcap, yaygın olarak kullanılan çeşitli ağ adaptörlerinde WiFi 802.11 çerçeveleri yakalayabilir.


### Win10Pcap.
Win10Pcap uygulaması da NDIS 6 sürücü modeline dayanır ve Windows 10 ile kararlı bir şekilde çalışır. Ancak proje 2016 yılından beri aktif değildir.


## libpcap kullanan veya kullanmış olan programlar.
  - Bit-Twist, BSD, Linux ve Windows için libpcap tabanlı bir Ethernet paket üreticisi ve düzenleyicisi.
  - Cain and Abel, Microsoft Windows için geliştirilmesi durdurulmuş bir şifre kurtarma aracı
  - EtherApe, ağ trafiğini ve bant genişliği kullanımını gerçek zamanlı olarak izlemek için grafiksel bir araç.
  - Firesheep, Firefox web tarayıcısı için paketleri yakalayan ve oturum kaçırma gerçekleştiren durdurulmuş bir uzantı
  - iftop, bant genişliği kullanımını görüntülemek için bir araç (ağ trafiği için top gibi)
  - Kismet, 802.11 kablosuz LAN'lar için bir araç
  - L0phtCrack, bir şifre denetim ve kurtarma uygulaması.
  - McAfee ePolicy Orchestrator, Rogue System Detection özelliği
  - ngrep, diğer adıyla "network grep", paketlerdeki dizeleri izole eder, paket verilerini insan dostu çıktıda gösterir.
  - Nmap, bir port tarama ve fingerprinting ağ yardımcı programı
  - Pirni, jailbreak yapılmış iOS cihazları için geliştirilmiş ancak durdurulan bir ağ güvenlik aracı.
  - Scapy, Philippe Biondi tarafından Python dilinde yazılmış, bilgisayar ağları için bir paket manipülasyon aracı.
  - Snort, bir ağa izinsiz giriş tespit sistemi.
  - Suricata, bir ağ saldırı önleme ve analiz platformu.
  - Symantec Veri Kaybı Önleme (Data Loss Prevention), Hassas verileri izlemek ve tanımlamak, kullanımını ve konumunu izlemek için kullanılır. Veri kaybı ilkeleri, hassas verilerin ağdan çıkmasının veya başka bir cihaza kopyalanmasının engellenmesini sağlar.
  - tcpdump, daha fazla analiz için paketleri yakalamak ve dökmek amacıyla geliştirilmiş bir araç. WinDump, tcpdump'ın Windows uyarlaması.
  - Zeek, bir saldırı tespit sistemi ve ağ izleme platformu.
  - URL Snooper, ses ve video dosyalarının kaydedilmesine izin vermek için URL'leri bulur.
  - WhatPulse, istatistiksel (giriş, ağ, çalışma süresi) ölçüm uygulaması.
  - Wireshark (eski adıyla Ethereal), grafiksel bir paket yakalama ve protokol analiz aracı.
  - XLink Kai Çeşitli LAN konsol oyunlarının çevrimiçi oynanmasını sağlayan yazılım
  - Xplico, bir ağ adli tıp analiz aracı (NFAT - network forensics analysis tool).


## libpcap için sarmalayıcı kütüphaneler.
  - C++: Libtins, Libcrafter, PcapPlusPlus
  - Perl: Net::Pcap
  - Python: python-libpcap, Pcapy, WinPcapy
  - Ruby: PacketFu
  - Rust: pcap
  - Tcl: tclpcap, tcap, pktsrc
  - Java: jpcap, jNetPcap, Jpcap, Pcap4j, Jxnet
  - .NET: WinPcapNET, SharpPcap, Pcap.Net
  - Haskell: pcap
  - OCaml: mlpcap
  - Chicken Scheme: pcap
  - Common Lisp: PLOKAMI
  - Racket: SPeaCAP
  - Go: Andreas Krennmair tarafından pcap, pcap Miek Gieben tarafından bir öncekinin çatalı, pcap gopacket paketinin bir parçası olarak geliştirilmiştir.
  - Erlang: epcap
  - Node.js: node_pcap


## Pcap dosyalarını okuyabilen pcap dışı kütüphaneler.
  - Python: 
  - Python: 


## pcap veya pcapng dosyalarını okuyan veya yazan diğer uygulama veya cihazlar.
  - Apache Drill, büyük ölçekli veri kümelerinin etkileşimli analizi için açık kaynaklı bir SQL motoru.
  - Endace EndaceProbe, haftalarca veya aylarca süren ağ trafiğini sürekli olarak kaydeden yüksek ölçekli bir paket yakalama sistemi.