¿Existe una forma automatizada (en tcpdump o mediante una aplicación auxiliar Out There) para generar un archivo pcap que solo contenga encabezados Ethernet, IP y Capa 4 (TCP en mi caso), para que no haya datos de carga/aplicación en el pcap resultante? Descubrí que, dado que los tamaños de los encabezados a menudo varían, es imposible elegir un tamaño de captura que no capture datos de carga útil.Stripping payload desde un tcpdump?
Respuesta
Puede despojar a cabo la carga útil TCP muy fácilmente con el módulo de Python scapy
ANTES
[[email protected] tshark_wd]$ tcpdump -n -r sample.pcap
reading from file sample.pcap, link-type EN10MB (Ethernet)
00:25:42.443559 IP 192.168.12.237.1052 > 192.168.12.236.22: Flags [P.],
seq 2445372969:2445373021, ack 1889447842, win 63432, length 52
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.],
ack 52, win 65535, length 0
00:25:42.443980 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [P.],
seq 1:389, ack 52, win 65535, length 388
CARGA STRIPPING
La ejecución de esta como root en Linux ...
#!/usr/bin/env python
from scapy.all import *
INFILE = 'sample.pcap'
OUTFILE = 'stripped.pcap'
paks = rdpcap(INFILE)
for pak in paks:
pak[TCP].remove_payload()
wrpcap(OUTFILE, paks)
DESPUÉS
[[email protected] tshark_wd]$ tcpdump -n -r stripped.pcap
reading from file sample.pcap, link-type EN10MB (Ethernet)
00:25:42.443559 IP truncated-ip - 52 bytes missing! 192.168.12.237.1052
> 192.168.12.236.22: Flags [P.], seq 2445372969:2445373021,
ack 1889447842, win 63432, length 52
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.],
ack 52, win 65535, length 0
00:25:42.443980 IP truncated-ip - 388 bytes missing! 192.168.12.236.22
> 192.168.12.237.1052: Flags [P.], seq 1:389,
ack 52, win 65535, length 388
En el tcpdump
anterior, observe las "XX bytes falta!" mensajes. Eso es porque hemos eliminado la carga útil TCP.
Si truncado simple sería trabajar para usted, usted podría utilizar:
tcpdump -i eth0 -s 96 -w test1.pcap
Más adelante se puede analizarlo con wireshark.
Mi solución fue la siguiente. Me encantaría escuchar cómo otros lo hacen sin bibliotecas externas o truncamiento. Me encantaría escuchar cómo otros realizaron esto, porque no pude encontrar la función remove_payload() en la documentación de Scapy, por lo que esta respuesta no se puede usar.
#read pcap file
pkts = rdpcap("packet-capture.pcap")
#write packet with payload "XXXXXXXXXX"
for pkt in pkts:
pkt.load = "XXXXXXXXXX"
#write new pcap
wrpcap("new.pcap", pkts)
El problema con esto es que, cuando se lee con tcpdump, deja un bytes que faltan! para la IP src. Puedo verificar el infromation está todavía allí utilizando scapy través
pkts[_packet_num].load
¿Hay una manera de regenerar toda la captura por lo que parece como si no fue modificado?
Esto suena más como otra pregunta que una respuesta. Quizás considere [preguntar] (http://stackoverflow.com/questions/ask) otra. – adamdunson
- 1. Stripping linux shared libraries
- 2. Stripping newlines en Haskell
- 3. Regex: Stripping ID del video de Youtube desde la URL
- 4. Entrega de MDM DeviceLock Payload
- 5. Tcpdump on openwrt
- 6. tcpdump: localhost a localhost
- 7. Logging Payload de POSTs a Tomcat
- 8. Monitoreando múltiples puertos en tcpdump
- 9. Capturar tráfico entrante en tcpdump
- 10. tcpdump vs tcpflow (o "¿Por qué no es tcpdump datos de paquetes ASCII legibles por humanos?")
- 11. Cómo concatenar dos archivos tcpdump (archivos pcap)
- 12. Omita los encabezados IP con tcpdump
- 13. Haskell iteratee: simple ejemplo de stripping trailing whitespace
- 14. 24/7 captura de paquetes en Android usando tcpdump
- 15. Cómo capturar todos los paquetes HTTP usando tcpdump
- 16. Wireshark y tcpdump -r: ventana TCP extraña tamaños
- 17. Cómo descifrar en vivo WPA/WPA2-PSK usando tcpdump?
- 18. Comprender el filtro de Tcpdump y el enmascaramiento de bits
- 19. ¿Cómo puedo obtener una vista en vivo del tcpdump desde el emulador de Android en Wireshark en OSX?
- 20. la salida estándar de un subproceso tcpdump después de terminar su
- 21. No es capaz de ejecutar el archivo ejecutable desde adb shell
- 22. ¿Puedo usar tcpdump para obtener solicitudes HTTP, encabezado de respuesta y cuerpo de respuesta?
- 23. Configuración de la ventana de recepción de TCP en C y trabajo con tcpdump en Linux
- 24. Cómo filtrar la salida de tcpdump en función de la longitud del paquete
- 25. En herramientas como tcpdump, ¿cuándo se capturan exactamente los paquetes de red?
- 26. texto desde un nodo
- 27. Viajar desde un punto
- 28. Cargar un WPF BitmapImage desde un System.Drawing.Bitmap
- 29. Crear un UIImage desde un UIImageView girado
- 30. ¿Cómo cargar un UIView desde un NIB?
Desafortunadamente, el OP es correcto, no hay forma de predecir con fiabilidad la longitud de los encabezados TCP, debido al campo Opciones de TCP. En su mayor parte, esa es la única parte de los encabezados IP/TCP que tiene una gran posibilidad de diferir en longitud. Un valor snaplen fijo no garantiza que siempre trunque la carga TCP en el lugar correcto. –