web-dev-qa-db-fra.com

Outil de division des fichiers PCAP par TCP connexion?

Y a-t-il un outil pour diviser un fichier de capture de paquets (au format PCAP) en fichiers distincts pour chaque TCP Connection? (Autre qu'un script de shell cultivé à domicile qui doit probablement fonctionner deux fois sur la capture. .). Quelque chose comme Wirehark's's's's's's TCP Stream 'mais pour la ligne de commande (j'ai peur que Wireshark ne consommera une grande quantité de mémoire lors de l'affichage d'une capture de paquets de 700 Mo)

J'ai regardé - TCPFlow Mais il semble produire des fichiers beaucoup plus grands que les fichiers PCAP d'origine et ne semblent pas être au format PCAP.

17
Andre Holzner

Vous pouvez également utiliser pcapplitter qui fait partie de l'emballage PCAPPlusPlus . Il fait exactement ce dont vous avez besoin (qui sèche les fichiers PCAP par TCP ou une connexion UDP), il est multi-plate-forme et il n'a pas de limite sur le nombre de connexions dans le fichier d'origine ( Vous pouvez donc l'utiliser pour diviser un grand fichier PCAP contenant des milliers de connexions ou encore plus). Le lien ci-dessus est pour le code source, mais si vous voulez un binaire compilé - ici est un lien pour les binaires J'ai fait pour plusieurs plates-formes

edit: Apparemment une nouvelle version de PCAPPlusPlus a été publiée et contient des fichiers binaires PCAPPLITTLIT pour assez de plates-formes (Windows, Ubuntu 12.04/14.04, Mac OSX Mavericks/Yosemite/El Captian). Je pense qu'il vaut mieux utiliser ces fichiers binaires que le lien que j'ai précédemment fourni. Vous pouvez le trouver ici

9
seladb

Vous pouvez utiliser tcpdump pour extraire les parties de la PCAP que vous souhaitez ... Supposons que vous recherchiez des paquets dans une connexion à socket entre TCP/55777 sur un hôte et TCP/80 sur un autre. Votre fichier source est bigfile.pcap, qui est une vidage reniférable de nombreuses sessions HTTP à l'hôte Web en question ...

tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777

Cela tirera tous les paquets allant de TCP/55777 dans bigfile.pcap et copiez-les dans session.pcap.

10
Mike Pennington

Un peu surkill, mais en utilisant tshark (expédié avec wireshark), vous pouvez le faire avec zsh:

file=file.pcap
tshark -Tfields -e tcp.stream \
                -e frame.time_Epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -A f; do 
    tshark -r $file -2R "tcp.stream == $f[1]" -w ${(j:-:)f[2,-1]}.pcap
  done

Qui génère des fichiers nommés comme 1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap (Basé sur le premier paquet vu pour chaque connexion).

4
sch

tCPFLOW est ce que vous voulez - scinder les PCAP dans un fichier par TCP Session

http://www.circluslud.org/jelson/software/tcpflow/

4
Sam

Il semble y avoir cet outil qui pourrait fonctionner (je ne l'ai pas utilisé personnellement)

http://www.netrepeec.com/?page=splitCap (Windows basé sur Windows)

SplitCap est une séparatrice de fichier PCAP open source (comme dans la bière). SplitCap scission d'un gros fichier PCAP en plusieurs fichiers en fonction de TCP et UDP, un fichier PCAP par session. SplitCap peut également être utilisé pour diviser un fichier PCAP en un fichier PCAP par paire hôte par paire hôte de session.

2
freethinker

inspiré par @sch ici est une version Bash:

file=cap.pcap
$tshark -Tfields -e tcp.stream \
                -e frame.time_Epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -a f; do 
  [[ "${f[5]}" ]] || continue  # sometimes there is no stream number ex. UDP
  fileout=$(echo ${f[0]}__${f[1]}__${f[2]}__${f[3]}__${f[4]}__${f[5]} | tr -d '\r'  )
    $tshark -r $file -2R "tcp.stream == ${f[0]}" -w "$fileout.pcap"
  done
read

le nom du fichier sera comme ça: stream number__time__source IP__port__destination IP__port.pcap

tr -d '\r' est pour les utilisateurs Windows, car TSHARK dans Windows Sortie CR LF.

Edit :

cette solution avec TSHARK est si lente mais sûre. SplitCap est super rapide mais lorsqu'il y a une erreur dans certains paquets, il se bloque, tandis que Tshark vous informe uniquement sur l'erreur mais continue:

tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.

et enfin, il y a un pcapsplitter qui est super rapide aussi, mais il a besoin du pilote WinPCAP, cela ne fonctionne pas avec le pilote NPCAP sous Windows.

Mais il y a une solution à SplitCap: Utilisation pcapfix Je peux réparer les paquets corrompus que SplitCap ne se bloque plus jamais. Et c'est ce que j'utilise maintenant, parce que Tshark est si lent dans l'épisson.

et une solution à PCAPSplitter que j'ai fait était injectée de la DLL WinPCAP en utilisant n'importe quelle méthode, mais pendant que nous avons SplitCap, pourquoi le faire?

1
Badr Elmers