Skip to content

PCAP vs PCAPNG: diferencias entre los dos formatos

PCAP vs PCAPNG comparados bloque a bloque: cabeceras, interfaces, resolución de marcas de tiempo, metadatos, qué herramientas escriben cada uno y conversión.

Publicado el 9 min de lectura

En resumen. El pcap clásico es una cabecera de archivo de 24 bytes seguida de registros de paquetes, con un único tipo de capa de enlace, un único snaplen y una única resolución de marcas de tiempo para todo el archivo. El pcapng es una secuencia de bloques tipados: puede describir varias interfaces de captura con distintos tipos de enlace y resoluciones, y guarda metadatos como nombres de interfaz, comentarios, resolución de nombres, estadísticas e incluso secretos de descifrado. Wireshark y dumpcap escriben pcapng por defecto; tcpdump escribe pcap. Convertir pcapng a pcap solo funciona si todos los paquetes comparten un mismo tipo de enlace, y se pierden metadatos. Conserva el archivo original como evidencia y convierte copias.

Ambos formatos se están especificando en el grupo de trabajo Operations and Management Area del IETF, en el borrador PCAP Capture File Format y el borrador PCAP Now Generic (pcapng). Los detalles que siguen se basan en esos documentos.

pcap clásico: una cabecera y después registros

Un archivo pcap clásico tiene una estructura fija.

ParteTamañoCampos
Cabecera de archivo24 bytesnúmero mágico, versión mayor y menor, dos campos reservados, SnapLen, LinkType
Cabecera de registro16 bytes por paquetesegundos de la marca de tiempo, fracción de la marca de tiempo, longitud capturada, longitud original
Datos del paquetelongitud capturadalos bytes desde la capa de enlace hacia arriba

El número mágico cumple dos funciones. Indica al lector el orden de bytes de quien escribió el archivo (A1 B2 C3 D4 leído en big-endian, D4 C3 B2 A1 en little-endian) y selecciona la resolución de las marcas de tiempo: 0xA1B2C3D4 significa que la fracción está en microsegundos y 0xA1B23C4D, en nanosegundos.

Todo lo demás es global. Hay un único LinkType para el archivo (Ethernet, Linux cooked capture, IP en bruto, loopback BSD...), así que una captura tomada en dos tipos distintos de interfaz no cabe en un solo archivo pcap. Hay un único SnapLen: el número máximo de bytes que se guardan por paquete. Cuando la longitud capturada de un registro es menor que su longitud original, el paquete se recortó, y lo que quedó fuera se perdió para siempre. Esto importa después para el reensamblado TCP y la extracción de archivos.

La fortaleza del formato es su sencillez. Casi todas las herramientas de red escritas en los últimos veinticinco años lo leen, y un parser cabe en unas pocas decenas de líneas.

pcapng: una secuencia de bloques tipados

pcapng sustituye la cabecera fija por bloques. Cada bloque empieza con un tipo y una longitud total, y repite esa longitud al final, de modo que un lector puede saltarse los bloques que no entiende e incluso recorrer el archivo hacia atrás. La mayoría de los bloques admiten opciones (campos clave/valor tipados), que es como se añaden metadatos sin romper a los lectores antiguos.

El borrador define estos bloques:

BloqueFunción
Section Header Block (SHB)Inicia una sección. Contiene el número mágico de orden de bytes 0x1A2B3C4D y opciones como el hardware, el sistema operativo y la aplicación de captura.
Interface Description Block (IDB)Uno por interfaz: tipo de enlace, snaplen y opciones como if_name, if_description, if_tsresol, if_tsoffset o el filtro de captura.
Enhanced Packet Block (EPB)Un paquete: ID de interfaz, marca de tiempo de 64 bits, longitudes capturada y original, datos, comentarios e indicadores opcionales.
Simple Packet Block (SPB)Un registro mínimo sin marca de tiempo, asociado a la primera interfaz.
Name Resolution Block (NRB)Correspondencias entre direcciones y nombres observadas durante la captura.
Interface Statistics Block (ISB)Contadores como paquetes recibidos y descartados por la interfaz.
Decryption Secrets Block (DSB)Secretos de sesión, por ejemplo un registro de claves TLS, guardados dentro de la captura.
Custom BlockDatos específicos de un fabricante.

Los archivos antiguos también pueden contener el obsoleto Packet Block, al que sustituyó el EPB.

Varias interfaces en un archivo

Como el tipo de enlace vive en el IDB, un mismo archivo pcapng puede contener paquetes de un adaptador Ethernet y de un adaptador de loopback a la vez, y cada EPB apunta a su interfaz por índice. Un archivo también puede contener varias secciones, cada una iniciada por su propio SHB. Por eso, concatenar dos archivos pcapng produce un archivo pcapng válido.

Resolución de marcas de tiempo por interfaz

La marca de tiempo de un EPB es un contador de 64 bits de unidades desde 1970. La unidad se fija por interfaz con if_tsresol y, si la opción no está, el borrador especifica microsegundos, igual que el pcap clásico. Una captura puede mezclar así una interfaz en microsegundos y otra en nanosegundos, y if_tsoffset puede desplazar el reloj de una interfaz un número fijo de segundos. Un lector que ignora estas opciones mostrará horas incorrectas, uno de los errores clásicos de los parsers caseros.

La captura de ejemplo ficticia que incluye PCAP Parser lo muestra: tiene una interfaz Ethernet con resolución de microsegundos y una interfaz de loopback BSD con resolución de nanosegundos, en el mismo archivo.

Comparación lado a lado

pcappcapng
Estructuracabecera fija + registrosbloques tipados con opciones
Tipos de enlace por archivounouno por interfaz, varias interfaces
Resolución de marcas de tiempoµs o ns, todo el archivopor interfaz (if_tsresol), µs por defecto
Nombres de interfaz, SO, aplicaciónnosí (opciones de IDB y SHB)
Comentarios e indicadores por paquetenosí (opciones de EPB)
Resolución de nombres, estadísticasnoNRB, ISB
Secretos de descifrado incrustadosnoDSB
Quién lo escribe por defectotcpdump, herramientas basadas en libpcapWireshark, dumpcap, tshark
Compatibilidadcasi universalamplia, pero no en todas las herramientas antiguas

Qué herramientas escriben cada formato

  • Wireshark, dumpcap y tshark escriben pcapng por defecto. tshark puede escribir pcap clásico con -F pcap, según el manual de tshark.
  • tcpdump escribe pcap clásico. Añade -s 0 (o un valor grande) para que un snaplen pequeño no recorte los paquetes en versiones antiguas.
  • pktmon y netsh trace de Windows graban en ETL, que no es ninguno de los dos. Convierte primero el ETL a pcapng; la guía para abrir una captura online trata ese caso.

Las extensiones de archivo son solo una pista. Muchos archivos .pcap son en realidad pcapng, y también ocurre lo contrario. Un buen lector identifica el formato por los primeros bytes, no por el nombre. PCAP Parser hace exactamente eso, y nombra los formatos que no puede leer (capturas comprimidas, snoop de Solaris, Microsoft Network Monitor, la variante «modified pcap») en lugar de fallar en silencio.

Cómo convertir entre pcap y pcapng

La suite de Wireshark incluye las herramientas adecuadas. editcap reescribe un archivo en otro formato con -F:

# pcapng -> classic pcap (microseconds)
editcap -F pcap capture.pcapng capture.pcap

# pcapng -> classic pcap keeping nanosecond timestamps
editcap -F nsecpcap capture.pcapng capture.pcap

# classic pcap -> pcapng
editcap -F pcapng capture.pcap capture.pcapng

# check the result: file type, encapsulation, interfaces, precision
capinfos capture.pcap

Cuando falla la conversión de pcapng a pcap

Si el pcapng contiene interfaces con distintos tipos de enlace, el formato clásico no puede representarlo. Divide primero por interfaz y convierte cada parte:

tshark -r capture.pcapng -Y "frame.interface_id == 0" -F pcap -w eth0.pcap

En cualquier conversión de pcapng a pcap perderás: los nombres y descripciones de interfaz, los comentarios, los indicadores por paquete, los bloques de resolución de nombres y de estadísticas, y cualquier Decryption Secrets Block. Esto último conviene saberlo: editcap puede añadir un registro de claves TLS a un pcapng con --inject-secrets, y la conversión a pcap lo descarta.

Conversión y tratamiento de la evidencia

La conversión reescribe todas las cabeceras de registro, así que el archivo resultante tiene un hash distinto del original. En un caso, calcula el hash del original y consérvalo, convierte una copia de trabajo y anota el comando en tus notas. Nunca «actualices» la única copia.

Qué debe admitir un parser

Si eliges o escribes una herramienta, la lista es corta pero estricta:

  1. Los dos números mágicos de pcap en ambos órdenes de bytes, en microsegundos y nanosegundos.
  2. Los bloques pcapng SHB, IDB, EPB y SPB, además del obsoleto Packet Block.
  3. Varias interfaces y varias secciones, cada una con su propio orden de bytes.
  4. if_tsresol e if_tsoffset por interfaz.
  5. Informar con claridad de los paquetes recortados por el snaplen y de los tipos de enlace que no decodifica.

PCAP Parser cumple esa lista: lee pcap clásico en ambos órdenes de bytes en µs y ns, y pcapng con SHB, IDB, EPB, SPB y el obsoleto Packet Block, varias interfaces y secciones, y resolución y desfase por interfaz. Detecta los Decryption Secrets Blocks y te avisa de que están presentes, pero no descifra TLS. Para ver lo que muestra una vez abierto el archivo, consulta cómo usar PCAP Parser.

FAQ

¿Es pcapng mejor que pcap?

pcapng contiene más: varias interfaces con distintos tipos de enlace, resolución de marcas de tiempo por interfaz, comentarios, resolución de nombres y estadísticas. El pcap clásico es más sencillo y lo admiten más herramientas antiguas. Como evidencia, conserva el archivo original en el formato en que se capturó.

¿Se puede convertir cualquier archivo pcapng a pcap?

No. El pcap clásico tiene un solo tipo de enlace y un solo snaplen por archivo. Un pcapng con interfaces de distintos tipos de enlace debe dividirse antes por interfaz, y los comentarios, nombres de interfaz y secretos incrustados se pierden en la conversión.

¿Cómo sé qué formato tiene un archivo, sea cual sea su extensión?

Mira los cuatro primeros bytes. Un pcap clásico empieza con un número mágico como A1 B2 C3 D4 o D4 C3 B2 A1; un pcapng empieza con el tipo de Section Header Block 0A 0D 0D 0A. capinfos, de la suite de Wireshark, también muestra el tipo de archivo.

Artículos relacionados

Comparativa justa de Wireshark, tshark, NetworkMiner, Zeek, Zui y PCAP Parser para analizar pcap: puntos fuertes, límites y qué herramienta usar en cada caso.
Cómo abrir un archivo pcap o pcapng online sin instalar nada: subida frente a lectura en el navegador, formatos que fallan y límites de una herramienta web.
Cómo leer el DNS en una captura de red: consultas y respuestas, códigos de resultado, dominios raros o aleatorios y señales de tunelización DNS y sus límites.