En el campo de la administración de redes informáticas , pcap es una interfaz de programación de aplicaciones (API) para capturar el tráfico de la red . Si bien el nombre es una abreviatura de packet capture (captura de paquetes) , ese no es el nombre propio de la API. Los sistemas tipo Unix implementan pcap en la biblioteca libpcap ; para Windows , hay un puerto de libpcap llamado WinPcap que ya no recibe soporte ni se desarrolla, y un puerto llamado Npcap para Windows 7 y posteriores que aún recibe soporte.
El software de monitoreo puede usar libpcap, WinPcap o Npcap para capturar paquetes de red que viajan a través de una red de computadoras y, en versiones más nuevas, para transmitir paquetes en una red en la capa de enlace y para obtener una lista de interfaces de red para su posible uso con libpcap, WinPcap o Npcap.
La API pcap está escrita en C , por lo que otros lenguajes como Java , lenguajes .NET y lenguajes de script generalmente usan un contenedor ; libpcap o WinPcap no proporcionan contenedores de este tipo. Los programas C++ pueden vincularse directamente a la API C o hacer uso de un contenedor orientado a objetos .
libpcap, WinPcap y Npcap proporcionan los motores de filtrado y captura de paquetes de muchas herramientas de red comerciales y de código abierto , incluidos analizadores de protocolo ( sniffers de paquetes ), monitores de red , sistemas de detección de intrusiones de red , generadores de tráfico y probadores de red.
La mayoría de los sistemas actuales de tipo Unix proporcionan un mecanismo mediante el cual un programa puede capturar el tráfico de red hacia y desde la máquina que ejecuta el programa y, en algunos casos, otro tráfico al que está conectada esa máquina. Sin embargo, estos mecanismos son significativamente diferentes entre sí; la biblioteca libpcap proporciona una API común para acceder a estos mecanismos, lo que permite escribir programas para capturar el tráfico de red sin tener que preocuparse por los detalles de todos esos mecanismos.
libpcap, WinPcap y Npcap también permiten guardar paquetes capturados en un archivo y leer archivos que contienen paquetes guardados; se pueden escribir aplicaciones , utilizando libpcap, WinPcap o Npcap, para poder capturar tráfico de red y analizarlo, o para leer una captura guardada y analizarla, utilizando el mismo código de análisis. Un archivo de captura guardado en el formato que utilizan libpcap, WinPcap y Npcap puede ser leído por aplicaciones que entienden ese formato, como tcpdump , Wireshark , CA NetMaster o Microsoft Network Monitor 3.x. El formato de archivo se describe en Internet-Draft draft-ietf-opsawg-pcap; [5] la versión actual de los editores del borrador también está disponible. [6]
El tipo MIME para el formato de archivo creado y leído por libpcap, WinPcap y Npcap es application/vnd.tcpdump.pcap. La extensión de archivo típica es .pcap, aunque .cap y .dmp también se usan comúnmente. [7]
libpcap fue desarrollado originalmente por los desarrolladores de tcpdump en el Network Research Group del Laboratorio Lawrence Berkeley . El código de captura de paquetes de bajo nivel, lectura de archivos de captura y escritura de archivos de captura de tcpdump se extrajo y se convirtió en una biblioteca, con la que se vinculó tcpdump. [8] Ahora lo desarrolla el mismo grupo tcpdump.org que desarrolla tcpdump. [9]
Si bien libpcap se desarrolló originalmente para sistemas operativos tipo Unix, se realizó una adaptación exitosa para Windows, llamada WinPcap. No se le ha dado mantenimiento desde 2013, [10] y se han lanzado varias versiones competidoras con nuevas características y compatibilidad con versiones más nuevas de Windows.
WinPcap consta de: [11]
Los programadores del Politécnico de Turín escribieron el código original. En 2008, CACE Technologies, una empresa creada por algunos de los desarrolladores de WinPcap, desarrolló y mantuvo el producto. CACE fue adquirida por Riverbed Technology el 21 de octubre de 2010. [12]
Debido a que WinPcap utiliza las API NDIS 5.x más antiguas, no funciona en algunas compilaciones de Windows 10, que han dejado obsoletas o eliminado esas API en favor de las API NDIS 6.x más nuevas. También impone algunas limitaciones, como la imposibilidad de capturar etiquetas VLAN 802.1Q en encabezados Ethernet .
El proyecto WinPcap ha dejado de desarrollarse y WinPcap y WinDump ya no reciben mantenimiento. La última versión oficial de WinPcap fue la 4.1.3, publicada el 8 de marzo de 2013. [13]
Npcap es la biblioteca de rastreo de paquetes del Proyecto Nmap para Windows. [14] Está basada en WinPcap, pero escrita para aprovechar las mejoras de red de Windows en la versión 6 de NDIS. Sus autores reescribieron el controlador de protocolo WinPcap NDIS 5 como un controlador de filtro ligero (LWF), un cambio que reduce la sobrecarga de procesamiento. [15] Las versiones de mantenimiento de Npcap actualizaron la versión de la biblioteca libpcap incluida a la última disponible, lo que permite a los autores de software utilizar las características de API más nuevas que el software de Linux ya había admitido. [16] La mayoría del software que usaba WinPcap se puede portar fácilmente para usar Npcap con cambios mínimos. [17]
Npcap introdujo varias innovaciones que no estaban disponibles en WinPcap:
A diferencia de Nmap , Npcap es un software propietario y requiere una licencia especial para su uso y redistribución, excepto para algunos usos internos limitados. [21]
La implementación de Win10Pcap también se basa en el modelo de controlador NDIS 6 y funciona de manera estable con Windows 10. [ 22] Sin embargo, el proyecto ha estado inactivo desde 2016. [23]