Comandos comunes para la captura de paquetes de Wireshark

1. Reglas de filtrado de uso común

Especifique la dirección de origen:

ip.src == 10.0.1.123
ip.src == 10.0.1.123 && udp
http
数据链路层:

筛选mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

筛选源mac地址为04:f9:38:ad:13:26的数据包----eth.src == 04:f9:38:ad:13:26

网络层:

筛选ip地址为192.168.1.1的数据包----ip.addr == 192.168.1.1

筛选192.168.1.0网段的数据---- ip contains "192.168.1"

筛选192.168.1.1和192.168.1.2之间的数据包----ip.addr == 192.168.1.1 && ip.addr == 192.168.1.2

筛选从192.168.1.1到192.168.1.2的数据包----ip.src == 192.168.1.1 && ip.dst == 192.168.1.2

传输层:

筛选tcp协议的数据包----tcp

筛选除tcp协议以外的数据包----!tcp

筛选端口为80的数据包----tcp.port == 80

筛选12345端口和80端口之间的数据包----tcp.port == 12345 && tcp.port == 80

筛选从12345端口到80端口的数据包----tcp.srcport == 12345 && tcp.dstport == 80

应用层:

过滤请求数据包----http.request

过滤响应数据包----http.response

过滤指定域名----http.host == “xxx.xxx.xxx”

筛选url中包含.php的http数据包----http.request.uri contains ".php"

筛选内容包含username的http数据包----http contains "username"

过滤请求头----http.request.method == GET

过滤请求的url----http.request.url==”/xxx/xxxx”

过滤包含HTTP错误状态码的响应数据包----http.request.code >= 400

过滤服务器端错误状态码的响应数据包----http.response.code <=599。

2.Estructura del mensaje UDP

Insertar descripción de la imagen aquí

3.Estructura del mensaje TCP

Insertar descripción de la imagen aquí

4.Puntos clave

Hablemos de los puntos clave aquí.

4.1 Suma de comprobación de encabezados TCP/UDP

Puedes ver Checksum en las primeras imágenes.
Las fuentes de datos para el cálculo de la suma de comprobación del paquete de datos TCP incluyen tres partes: pseudoencabezado TCP, encabezado TCP y datos TCP. La suma de comprobación del cálculo de TCP introduce pseudoencabezados, incluido el UDP que se introduce más adelante. Como se muestra en la figura siguiente, el pseudoencabezado TCP incluye: dirección de origen (32 bits), dirección de destino (32 bits), ceros (8 bits), protocolo (8 bits), longitud de TCP (16 bits).
Insertar descripción de la imagen aquí

Insertar descripción de la imagen aquí
Como se puede ver en la figura anterior, la dirección de origen es 106.11.43.158 (6a 0b 2b 9e), la dirección de destino es 192.168.1.105 (c0 a8 01 69), el número de protocolo TCP es 6 y la longitud de los datos TCP es la longitud total de los datos IP menos el encabezado IP 52-20=32 (0x20). El siguiente es un ejemplo de captura de paquetes en el encabezado TCP y las partes de datos:
Insertar descripción de la imagen aquí
como se puede ver en la figura anterior, la suma de verificación de TCP es 0x755E y el proceso de cálculo es el siguiente:

  1. Obtener los datos del pseudo encabezado.

Dirección de origen Dirección de destino Ceros Protocolo Longitud TCP

6a 0b 2b 9e c0 a8 01 69 00 06 00 20

  1. Combine los datos del pseudo encabezado en un grupo de 16 bits y agréguelos

6a0b+2b9e+c0a8+0169+0006+0020=157E0

  1. Obtener datos TCP

01 bb de c0 d3 86 24 c6 0e 5f 8d 90 80 10 00 0e 75 5e 00 00 01 01 05 0a 0e 5f 8d 8f 0e 5f 8d 90

  1. Establezca la parte de la suma de verificación en 00 00

01 bb de c0 d3 86 24 c6 0e 5f 8d 90 80 10 00 0e 00 00 00 00 01 01 05 0a 0e 5f 8d 8f 0e 5f 8d 90

  1. Combine datos TCP en grupos de 16 bits y agréguelos

01bb+dec0+d386+24c6+0e5f+8d90+8010+000e

+0000+0000+0101+050a+0e5f+8d8f+0e5f+8d90=432BC

  1. Agregue el pseudo encabezado y los datos TCP.

157E0 + 432BC = 58A9C

  1. Suma los 16 bits altos y 16 bits bajos del resultado del paso anterior

8A9C + 5 = 8AA1

  1. Resta 8AA1 de 0xFFFF para obtener la suma de comprobación

0xFFFF - 0x8AA1 = 755E

  1. Es coherente con la comparación de la suma de comprobación de los paquetes capturados.

4.2 Utilice Python para generar mensajes TCP \ UDP para desarrollo y pruebas de software.

#!/usr/bin/env python

import socket

TCP_IP = '127.0.0.1'
TCP_PORT = 1337
BUFFER_SIZE = 1024
MESSAGE = 'Hello, World!'
encoded = str.encode(MESSAGE)     # b'Hello, World!'
decoded = encoded.decode()        # 'Hello, World!' 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(encoded)
data = s.recv(BUFFER_SIZE)
s.close()

print ("received data:", data)

5. Wireshark captura paquetes TCP y analiza el protocolo de enlace de tres vías

Primer paquete de apretón de manos

El cliente envía un paquete de datos, SYN = 1, ACK = 0, y el número de secuencia comienza desde 0, lo que indica que el cliente solicita establecer una conexión.
Insertar descripción de la imagen aquí

Segundo paquete de apretón de manos

El servidor envía un paquete de datos, SYN = 1, ACK = 1, seq = 0, ack = seq + 1 indica la cantidad de paquetes de datos recibidos

Insertar descripción de la imagen aquí

El tercer paquete de apretón de manos

El cliente reenvía el paquete de confirmación, SYN = 0, el servidor verifica ACK = 1, ack = seq + 1 = 1 indica que el segmento actual recibió con éxito la cantidad de bits de datos

Insertar descripción de la imagen aquí

Identificación importante del campo FLAGS de la capa TCP

Insertar descripción de la imagen aquí

6. Algunos conceptos básicos

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí

Blog de referencia

https://blog.csdn.net/qq_44281295/article/details/127110834
https://zhuanlan.zhihu.com/p/631821119
https://blog.csdn.net/to_be_better_wen/article/details/129191378

Supongo que te gusta

Origin blog.csdn.net/p309654858/article/details/132684283
Recomendado
Clasificación