Sometimes it might be needed to open ”’big”’ network traffic capture files (a.k.a. .cap) . This challenge is commonly encountered since this sort of logging it is usually very verbose. Leaving a packet sniffer (such as tcpdump) overnight logging all the packets that go through a network interface card might generate several gigs of data.
WireShark (formerly known as Ethereal) is an excellent open source packet sniffer with a nice user interface (GUI) and available for many different platforms.
According to WireShark’s documentation:
Wireshark uses memory to store packet meta data (e.g. conversation and fragmentation related data) and to display this info on the screen.
How much memory actually used is depending on:
- the number of packets captured (well, depending on the capture duration and the network load on the line)
- the kind of packets captured (small/large packets, some packet types will lead to much more memory usage than others)
- the preference settings, e.g. the “TCP desegmentation” setting
In my experience (and with the capture files and Preference settings I’m usually working with), I need about ten times of memory than the actual capture file size. But again, this will largely depend on the things noted above.
Fortunately, WireShark includes a easy-to-use tool to manipulate capture files: editcap.
Editcap is able to do things like processing a huge capture file and extract the packet information that correspond to a certain period of time. This functionality is perfect if, let’s say, you have a 24 hours capture file and you know that problems were reported at a certain time. You could then extract a bunch of packets around that time, export this into a new file and open it using WireShark.
Editcap Usage
Usage: editcap [options] ... [ [-] ... ] A single packet or a range of packets can be selected. Packet selection: -r keep the selected packets, default is to delete them -A don't output packets whose timestamp is before the given time (format as YYYY-MM-DD hh:mm:ss) -B don't output packets whose timestamp is after the given time (format as YYYY-MM-DD hh:mm:ss) -d remove duplicate packets Packet manipulation: -s truncate each packet to max. bytes of data -C chop each packet at the end by bytes -t adjust the timestamp of each packet, is in relative seconds (e.g. -0.5) -E set the probability (between 0.0 and 1.0 incl.) that a particular packet byte will be randomly changed Output File(s): -c split the packet output to different files, with a maximum of each -F set the output file type, default is libpcap an empty "-F" option will list the file types -T set the output file encapsulation type, default is the same as the input file an empty "-T" option will list the encapsulation types Miscellaneous: -h display this help and exit -v verbose output
Editcap Example
This example extracts all the packet information corresponding to 4th July 2008, 6am to 7am and writes it into a new file, i.e.:
- Source file: 2008-07-04_capture.cap (813 MB)
- Destination file: 6to7.cap (48.5 MB)
editcap -A "2008-07-04 06:00:00" -B "2008-07-04 07:00:00" 2008-07-03_capture.cap 6to7.cap