Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
MERGECAP(1)							     MERGECAP(1)

NAME
     mergecap - Merges two or more capture files into one

SYNOPSIS
     mergecap	[  -a  ]  [  -F  <file	format>  ]  [  -I  <IDB  merge	mode>  ]
     [ -s <snaplen> ] [ -V ] -w <outfile>|- <infile> [<infile> ...]

     mergecap -h|--help

     mergecap -v|--version

DESCRIPTION
     Mergecap is a program that combines multiple saved  capture  files  into  a
     single output file specified by the -w argument. Mergecap knows how to read
     pcap  and	pcapng	capture files, including those of tcpdump, Wireshark and
     other tools that write captures in those formats.

     By default, Mergecap writes the capture file in pcapng format,  and  writes
     all of the packets from the input capture files to the output file.

     Mergecap  is able to detect, read and write the same capture files that are
     supported by Wireshark. The input files don't need a specific filename  ex-
     tension; the file format and an optional gzip, zstd or lz4 compression will
     be automatically detected. Near the beginning of the DESCRIPTION section of
     wireshark(1) or https://www.wireshark.org/docs/man-pages/wireshark.html is
     a detailed description of the way Wireshark handles this, which is the same
     way Mergecap handles this.

     Mergecap can write the file in several output formats. The -F flag can be
     used to specify the format in which to write the capture file, mergecap -F
     provides a list of the available output formats.

     Packets from the input files are merged in chronological order based on
     each frame's timestamp, unless the -a flag is specified. Mergecap assumes
     that frames within a single capture file are already stored in chronologi-
     cal order. When the -a flag is specified, packets are copied directly from
     each input file to the output file, independent of each frame's timestamp.

     The output file frame encapsulation type is set to the type of the input
     files if all input files have the same type. If not all of the input files
     have the same frame encapsulation type, the output file type is set to
     WTAP_ENCAP_PER_PACKET. Note that some capture file formats, most notably
     pcap, do not currently support WTAP_ENCAP_PER_PACKET. This combination will
     cause the output file creation to fail.

OPTIONS
     -a

	 Causes the frame timestamps to be ignored, writing all packets from the
	 first input file followed by all packets from the second input file. By
	 default,  when -a is not specified, the contents of the input files are
	 merged in chronological order based on each frame's timestamp.

	 Note: when merging, mergecap assumes that packets within a capture file
	 are already in chronological order.

     -F  <file format>

	 Sets the file format of the output capture file. Mergecap can write the
	 file in several formats; mergecap -F provides a list of  the  available
	 output formats. By default this is the pcapng format.

     -h|--help
	 Print the version number and options and exit.

     -I  <IDB merge mode>

	 Sets  the  Interface  Description  Block (IDB) merge mode to use during
	 merging. mergecap -I provides a list of the available IDB merge modes.

	 Every input file has one or more IDBs, which describe the  interface(s)
	 the  capture  was  performed on originally. This includes encapsulation
	 type, interface name, etc. When mergecap merges multiple  input  files,
	 it has to merge these IDBs somehow for the new merged output file. This
	 flag  controls  how that is accomplished. The currently available modes
	 are:

	 none: No merging of IDBs is performed, and instead all IDBs are  copied
	 to the merged output file.

	 all:  IDBs  are  merged only if all input files have the same number of
	 IDBs, and each IDB matches their respective entry in the  other  files.
	 (Only	the  IDBs  that  occur at the beginning of the files, before any
	 packet blocks, are compared. IDBs that occur later  in  the  files  are
	 merged  with  duplicates iff the initial IDBs were merged.) This is the
	 default mode.

	 any: Any and all duplicate IDBs are merged into one IDB, regardless  of
	 what file they are in.

	 Note  that an IDB is only considered a matching duplicate if it has the
	 same encapsulation type, name, speed,	time  precision,  comments,  de-
	 scription, etc.

     -s  <snaplen>

	 Sets  the  snapshot length to use when writing the data. If the -s flag
	 is used to specify a snapshot length, frames in  the  input  file  with
	 more  captured  data  than the specified snapshot length will have only
	 the amount of data specified by the snapshot length written to the out-
	 put file. This may be useful if the program that is to read the  output
	 file cannot handle packets larger than a certain size (for example, the
	 versions  of  snoop  in  Solaris 2.5.1 and Solaris 2.6 appear to reject
	 Ethernet frames larger than the standard Ethernet MTU, making them  in-
	 capable  of  handling	gigabit  Ethernet  captures if jumbo frames were
	 used).

     -v|--version
	 Print the full version information and exit.

     -V
	 Causes mergecap to print a number of messages while it's working.

     -w  <outfile>|-
	 Sets the output filename. If the name is '-', stdout will be  used.  If
	 the --compress option is not given, then the filename extension is used
	 to deduce the desired compression method, if any; e.g., if the name has
	 the  extension  '.gz',  then  the  output  file is compressed to a gzip
	 archive. This setting is mandatory.

     --compress <type>

	 Compress the output file using the type compression format.  --compress
	 with  no  argument provides a list of the compression formats supported
	 for writing. The type given takes precedence over the extension of out-
	 file.

DIAGNOSTIC OPTIONS
     --log-level <level>
	 Set the active log level. Supported levels in lowest to  highest  order
	 are  "noisy",	"debug",  "info",  "message", "warning", "critical", and
	 "error". Messages at each level and higher will be printed, for example
	 "warning"  prints  "warning",	"critical",  and  "error"  messages  and
	 "noisy" prints all messages. Levels are case insensitive.

     --log-fatal <level>
	 Abort	the program if any messages are logged at the specified level or
	 higher. For example, "warning" aborts on any "warning", "critical",  or
	 "error" messages.

     --log-domains <list>
	 Only  print messages for the specified log domains, e.g. "GUI,Epan,ssh-
	 dump". List of domains must be comma-separated. Can be negated with "!"
	 as the first character (inverts the match).

     --log-debug <list>
	 Force the specified domains to log at the "debug" level.  List  of  do-
	 mains	must  be  comma-separated.  Can be negated with "!" as the first
	 character (inverts the match).

     --log-noisy <list>
	 Force the specified domains to log at the "noisy" level.  List  of  do-
	 mains	must  be  comma-separated.  Can be negated with "!" as the first
	 character (inverts the match).

     --log-fatal-domains <list>
	 Abort the program if any messages are logged for the specified log  do-
	 mains. List of domains must be comma-separated.

     --log-file <path>
	 Write log messages and stderr output to the specified file.

EXAMPLES
     To merge two capture files together into a third capture file, in which the
     last  packet of one file arrives 100 seconds before the first packet of an-
     other file, use the following sequence of commands.

     First, use:

	 capinfos -aeS a.pcap b.pcap

     to determine the start and end times of the two capture files,  as  seconds
     since January 1, 1970, 00:00:00 UTC.

     If  a.pcap starts at 1009932757 and b.pcap ends at 873660281, then the time
     adjustment to b.pcap that would make it end 100 seconds before  a.pcap  be-
     gins would be 1009932757 - 873660281 - 100 = 136272376 seconds.

     Thus, the next step would be to use:

	 editcap -t 136272376 b.pcap b-shifted.pcap

     to  generate  a  version  of  b.pcap with its time stamps shifted 136272376
     ahead.

     Then the final step would be to use :

	 mergecap -w compare.pcap a.pcap b-shifted.pcap

     to merge a.pcap and the shifted b.pcap into compare.pcap.

SEE ALSO
     pcap(3), wireshark(1),  tshark(1),  dumpcap(1),  editcap(1),  text2pcap(1),
     pcap-filter(7) or tcpdump(8)

NOTES
     Mergecap	 is    based	heavily   upon	 editcap   by	Richard   Sharpe
     <sharpe[AT]ns.aus.com> and Guy Harris <guy[AT]alum.mit.edu>.

     This is the manual page for Mergecap 4.6.6. Mergecap is part of  the  Wire-
     shark  distribution.  The	latest	version  of  Wireshark	can  be found at
     https://www.wireshark.org.

     HTML versions of the Wireshark project man pages are available at
     https://www.wireshark.org/docs/man-pages.

AUTHORS
     Original Author
     Scott Renfro <scott[AT]renfro.org>

     Contributors
     Bill Guyton <guyton[AT]bguyton.com>

				   2026-05-19			     MERGECAP(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=mergecap&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help