Merging multiple capture files into one
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 libpcap capture files, including those of tcpdump.
In addition, Mergecap can read capture files from snoop (including
Shomiti) and atmsnoop, LanAlyzer, Sniffer (compressed or
uncompressed), Microsoft Network Monitor, AIX's iptrace, NetXray,
Sniffer Pro, RADCOM's WAN/LAN analyzer, Lucent/Ascend router debug
output, HP-UX's nettl, and the dump output from Toshiba's ISDN
routers. There is no need to tell Mergecap what type of file you are
reading; it will determine the file type by itself. Mergecap is also
capable of reading any of these file formats if they are compressed
using gzip. Mergecap recognizes this directly from the file; the '.gz'
extension is not required for this purpose.
By default, it writes the capture file in libpcap format, and writes
all of the packets in the input capture files to the output file.
The -F flag can be used to specify the format in which to write the
capture file; it can write the file in libpcap format (standard
libpcap format, a modified format used by some patched versions of
libpcap, the format used by Red Hat Linux 6.1, or the format used
by SuSE Linux 6.3), snoop format, uncompressed Sniffer format,
Microsoft Network Monitor 1.x format, and the format used by
Windows-based versions of the Sniffer software.
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 chronological 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.
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 output 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 incapable of handling gigabit Ethernet
captures if jumbo frames were used).
If the -T flag is used to specify an encapsulation type, the
encapsulation type of the output capture file will be forced to
the specified type, rather than being the type appropriate to the
encapsulation type of the input capture file. Note that this merely
forces the encapsulation type of the output file to be the specified
type; the packet headers of the packets will not be translated from the
encapsulation type of the input capture file to the specified
encapsulation type (for example, it will not translate an Ethernet
capture to an FDDI capture if an Ethernet capture is read
and '-T fddi' is specified).
Example D.4. Help information available from mergecap
$ mergecap -h
Merge two or more capture files into one.
See https://www.wireshark.org for more information.
Usage: mergecap [options] -w <outfile>|- <infile> ...
-a concatenate rather than merge files.
default is to merge based on frame timestamps.
-s <snaplen> truncate packets to <snaplen> bytes of data.
-w <outfile>|- set the output filename to <outfile> or '-' for stdout.
-F <capture type> set the output file type; default is libpcap.
an empty "-F" option will list the file types.
-T <encap type> set the output file encapsulation type;
default is the same as the first input file.
an empty "-T" option will list the encapsulation types.
-h display this help and exit.
-v verbose output.
A simple example merging
outfile.libpcap is shown below.
Example D.5. Simple example of using mergecap
$ mergecap -w outfile.libpcap dhcp-capture.libpcap imap-1.libpcap