D.7. mergecap: Merging multiple capture files into one
Prev | Appendix D. Related command line tools | Next

## D.7. mergecap: 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 both 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
    Mergecap version 0.99.6
    Merge two or more capture files into one.
    See http://www.wireshark.org for more information.

    Usage: mergecap [-hva] [-s <snaplen>] [-T <encap type>]
              [-F <capture type>] -w <outfile> <infile> [...]

      where -h produces this help listing.
            -v verbose operation, default is silent
            -a files should be concatenated, not merged
                 Default merges based on frame timestamps
            -s <snaplen>: truncate packets to <snaplen> bytes of data
            -w <outfile>: sets output filename to <outfile>
            -T <encap type> encapsulation type to use:
                 ether - Ethernet
                 tr - Token Ring
                 slip - SLIP
                 ppp - PPP
                 fddi - FDDI
                 fddi-swapped - FDDI with bit-swapped MAC addresses
                 rawip - Raw IP
                 arcnet - ARCNET
                 arcnet_linux - Linux ARCNET
                 atm-rfc1483 - RFC 1483 ATM
                 linux-atm-clip - Linux ATM CLIP
                 lapb - LAPB
                 atm-pdus - ATM PDUs
                 atm-pdus-untruncated - ATM PDUs - untruncated
                 null - NULL
                 ascend - Lucent/Ascend access equipment
                 isdn - ISDN
                 ip-over-fc - RFC 2625 IP-over-Fibre Channel
                 ppp-with-direction - PPP with Directional Info
                 ieee-802-11 - IEEE 802.11 Wireless LAN
                 prism - IEEE 802.11 plus Prism II monitor mode header
                 ieee-802-11-radio - IEEE 802.11 Wireless LAN with radio information
                 ieee-802-11-bsd - IEEE 802.11 plus BSD WLAN header
                 ieee-802-11-avs - IEEE 802.11 plus AVS WLAN header
                 linux-sll - Linux cooked-mode capture
                 frelay - Frame Relay
                 frelay-with-direction - Frame Relay with Directional Info
                 chdlc - Cisco HDLC
                 ios - Cisco IOS internal
                 ltalk - Localtalk
                 pflog-old - OpenBSD PF Firewall logs, pre-3.4
                 hhdlc - HiPath HDLC
                 docsis - Data Over Cable Service Interface Specification
                 cosine - CoSine L2 debug log
                 whdlc - Wellfleet HDLC
                 sdlc - SDLC
                 tzsp - Tazmen sniffer protocol
                 enc - OpenBSD enc(4) encapsulating interface
                 pflog - OpenBSD PF Firewall logs
                 chdlc-with-direction - Cisco HDLC with Directional Info
                 bluetooth-h4 - Bluetooth H4
                 mtp2 - SS7 MTP2
                 mtp3 - SS7 MTP3
                 irda - IrDA
                 user0 - USER 0
                 user1 - USER 1
                 user2 - USER 2
                 user3 - USER 3
                 user4 - USER 4
                 user5 - USER 5
                 user6 - USER 6
                 user7 - USER 7
                 user8 - USER 8
                 user9 - USER 9
                 user10 - USER 10
                 user11 - USER 11
                 user12 - USER 12
                 user13 - USER 13
                 user14 - USER 14
                 user15 - USER 15
                 symantec - Symantec Enterprise Firewall
                 ap1394 - Apple IP-over-IEEE 1394
                 bacnet-ms-tp - BACnet MS/TP
                 default is the same as the first input file
            -F <capture type> capture file type to write:
                 libpcap - libpcap (tcpdump, Wireshark, etc.)
                 rh6_1libpcap - Red Hat Linux 6.1 libpcap (tcpdump)
                 suse6_3libpcap - SuSE Linux 6.3 libpcap (tcpdump)
                 modlibpcap - modified libpcap (tcpdump)
                 nokialibpcap - Nokia libpcap (tcpdump)
                 lanalyzer - Novell LANalyzer
                 ngsniffer - Network Associates Sniffer (DOS-based)
                 snoop - Sun snoop
                 netmon1 - Microsoft Network Monitor 1.x
                 netmon2 - Microsoft Network Monitor 2.x
                 ngwsniffer_1_1 - Network Associates Sniffer (Windows-based) 1.1
                 ngwsniffer_2_0 - Network Associates Sniffer (Windows-based) 2.00x
                 visual - Visual Networks traffic capture
                 5views - Accellent 5Views capture
                 niobserverv9 - Network Instruments Observer version 9
                 default is libpcap

-h

  Prints the version and options and exits.

-v

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

-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.

-s

  Sets the snapshot length to use when writing the data.

-w

  Sets the output filename.

-T

  Sets the packet encapsulation type of the output capture file.

-F

  Sets the file format of the output capture file.

A simple example merging `dhcp-capture.libpcap` and `imap-1.libpcap` into `outfile.libpcap` is shown below.

Example D.5. Simple example of using mergecap

    $ mergecap -w outfile.libpcap dhcp-capture.libpcap imap-1.libpcap

Prev | Up | Next
D.6. editcap: Edit capture files | Home | D.8. text2pcap: Converting ASCII hexdumps to network captures