46

I have a huge pcap file (generated by tcpdump). When I try to open it in wireshark, the program just gets unresponsive. Is there a way to split a file in set of smaller ones to open them one by one? The traffic captured in a file is generated by two programs on two servers, so I can't split the file using tcpdump 'host' or 'port' filters. I've also tried linux 'split' command :-) but with no luck. Wireshark wouldn't recognize the format.

  • How large is huge? Is it much larger than availible RAM? – pehrs Apr 13 '10 at 11:46
  • 2
    A little late, but the reason Wireshark won't read files which are the output of split is because split will divide on exact byte boundaries. This is highly likely to split a packet which invalidates some of the file content. – Burhan Ali Nov 14 '12 at 17:01
70

You can use tcpdump itself with the -C, -r and -w options

tcpdump -r old_file -w new_files -C 10

The "-C" option specifies the size of the file to split into. Eg: In the above case new files size will be 10 million bytes each.

  • You are an amazing human, Dan. – lobi Aug 29 '16 at 21:45
  • Is there a way to do this without breaking apart a session? (Assuming a single session is smaller than the size limit argument). – spanishgum Jan 5 '18 at 15:57
18

Use the editcap utility which is distributed with Wireshark.

  • 5
    editpcap -c 1000 input.pcap output.pcap will split input.pcap up into captures with a maximum of 1000 packets per capture. The output will be multiple capture files formatted like output_{index}_{timestamp}.pcap – blachniet Feb 28 '14 at 18:56
  • 1
    Thank you blachniet for the example! But it's just editcap, not editpcap, right? – lindhe Oct 14 '17 at 8:43
3

I know this answer is a little late, but it may serve other people as well. I found a great tool for splitting pcap files: PcapSplitter. It's part of the PcapPlusPlus library which means it's cross-platform (Win32, Linux and Mac OS), and it can split pcap files based on different criteria such as file size (what you seem to need) but also by connection, client/server IP, server port (similar to protocol), packet count, etc. I found it very useful. The link above is for the source code, but if you don't want/know how to compile, I created compiled binaries for several platforms I've been using this tool with. I recommend this tool very much

EDIT: apparently a new version of PcapPlusPlus was released and it contains PcapSplitter binaries for quite a lot of platforms (Windows, Ubuntu 12.04/14.04, Mac OSX Mavericks/Yosemite/El Captian). I think it's better to use these binaries than the link I previously provided. You can find it here

2

The best and fastest way to go is to use SplitCap, which can split large packet dump files based on sessions for example. This way you'd get each TCP session in a separate PCAP file. SplitCap can also separate packets into pcap files based on IP addresses.

You can read more about SplitCap on the Netresec blog: http://www.netresec.com/?page=Blog&month=2011-05&post=Split-or-filter-your-PCAP-files-with-SplitCap

Download SplitCap from here: http://www.netresec.com/?page=SplitCap

Good luck!

  • Are there any linux versions ? – ychaouche Dec 29 '14 at 9:13
  • This is a nice program, put it lacks the capability to work with pcapng files. – Guntram Blohm Sep 22 '15 at 8:30
0
tcpdump -w trace.pcap -W 48 -G 300 -C 100 -i any port 41110
  • -G 300 it will rotate in 5 minutes
  • -W 48 count of files
  • -C 100 file size 100 MB
  • port you can specify the port based on the application
New contributor
user531905 is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.