¿Existe alguna herramienta para dividir un archivo de captura de paquetes (en formato pcap) en archivos separados para cada conexión TCP? (aparte de un script de shell de cosecha propia que probablemente deba ejecutarse dos veces sobre la captura ...). Algo así como 'seguir TCP stream' de wireshark, pero para la línea de comando (me temo que wireshark consumirá una gran cantidad de memoria al mostrar una captura de paquetes de 700 MB)
Miré tcpflow pero parece producir archivos mucho más grandes que los archivos pcap originales y parece que no están en formato pcap.
linux
command-line-interface
tcp
pcap
Andre Holzner
fuente
fuente
Respuestas:
También puede usar PcapSplitter, que es parte del paquete PcapPlusPlus . Hace exactamente lo que necesita (que es dividir archivos pcap por conexión TCP o UDP), es multiplataforma y no tiene un límite en la cantidad de conexiones en el archivo original (por lo que puede usarlo para dividir un archivo grande archivo pcap que contiene miles de conexiones o incluso más). El enlace de arriba es para el código fuente, pero si quieres un binario compilado, aquí hay un enlace para los binarios que hice para varias plataformas.
EDITAR: aparentemente se lanzó una nueva versión de PcapPlusPlus y contiene binarios PcapSplitter para muchas plataformas (Windows, Ubuntu 12.04 / 14.04, Mac OSX Mavericks / Yosemite / El Captian). Creo que es mejor usar estos binarios que el enlace que proporcioné anteriormente. Lo puedes encontrar aqui
fuente
Puede usar
tcpdump
para extraer las porciones de pcap que desee ... suponga que está buscando paquetes en una conexión de socket entre TCP / 55777 en un host y TCP / 80 en otro. Su archivo de origen esbigfile.pcap
, que es un volcado de sniffer de muchas sesiones HTTP al host web en cuestión ...Eso extraerá todos los paquetes que van hacia y desde TCP / 55777
bigfile.pcap
y los copiarásession.pcap
.fuente
-s0
Tiene algún efecto cuando se usa junto con-r
?Un poco exagerado, pero usando
tshark
(enviado conwireshark
), podría hacer conzsh
:Que genera archivos con el nombre de
1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap
(según el primer paquete visto para cada conexión).fuente
tcpflow es lo que quieres: divide pcaps en un archivo por sesión TCP
http://www.circlemud.org/jelson/software/tcpflow/
fuente
Parece que esta herramienta podría funcionar (no la he usado personalmente)
http://www.netresec.com/?page=SplitCap (basado en Windows)
fuente
inspirado en @sch aquí hay una versión bash:
el nombre del archivo será así:
stream number__time__source IP__port__destination IP__port.pcap
tr -d '\r'
es para usuarios de Windows, porque tshark en Windows genera CR LF.Editar :
Esta solución con tshark es muy lenta pero segura. SplitCap es súper rápido, pero cuando hay un error en algún paquete, se bloquea, mientras que tshark solo le informa sobre el error, pero continúa:
y finalmente está PcapSplitter, que también es súper rápido, pero necesita el controlador winpcap, no funciona con el controlador npcap en Windows.
Pero hay una solución para SplitCap: usando pcapfix puedo reparar los paquetes corruptos y luego SplitCap nunca se bloquea nuevamente. y esto es lo que estoy usando ahora, porque tshark es muy lento en la división.
y una solución para PcapSplitter que hice fue inyectar el dll winpcap usando cualquier método, pero mientras tenemos SplitCap, ¿por qué hacerlo?
fuente