es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregue TSval y TSecr al paquete TCP utilizando Python.

Abrí el archivo pcap con Wireshark y vi en el encabezado TCP:

Opciones: (12 bytes), No-Operation (NOP), No-Operation (NOP), Timestamps
….Opción TCP – No-Operation (NOP)
….Opción TCP – No-Operation (NOP)
….Opción TCP – Timestamps: TSval YYYYYY, TSecr XXXXXXXX

Cuando uso Python para enviar un paquete TCP, ¿cómo puedo configurar estos encabezados?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para establecer el encabezado de opciones TCP en un paquete de Python TCP, puedes utilizar el parámetro options en la biblioteca socket.

    Primero, importa la biblioteca socket:

    import socket
    

    Luego, crea un objeto de socket y especifica la dirección IP y el número de puerto de destino:

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((direccion_ip_destino, numero_puerto))
    

    A continuación, puedes utilizar el método s.setsockopt() para establecer el encabezado de opciones TCP. Este método toma tres parámetros: level, optname y value.

    El parámetro level debe establecerse como socket.IPPROTO_TCP, lo cual indica que la opción se está estableciendo para el protocolo TCP.

    El parámetro optname debe establecerse como la opción que deseas utilizar. En este caso, puedes utilizar socket.TCP_NOP, socket.TCP_TIMESTAMP o socket.TCP_TIMESTAMPNS, dependiendo de la opción que desees establecer.

    El parámetro value debe establecerse como una cadena de bytes que especifica el valor de la opción. Por ejemplo, para establecer el valor de timestamp, puedes utilizar el método struct.pack() para empaquetar el timestamp en una cadena de bytes:

    import struct
    valor_timestamp = struct.pack("!LL", valor_timestamp, valor_ecr_timestamp)
    

    Finalmente, puedes utilizar el método s.send() para enviar el paquete:

    s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NOP, b'')
    s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NOP, b'')
    s.setsockopt(socket.IPPROTO_TCP, socket.TCP_TIMESTAMP, valor_timestamp)
    s.send(datos_paquete)
    

    Este código establecerá los encabezados de opciones TCP y enviará el paquete con las opciones especificadas.

Comments are closed.