¿Cómo enviar un paquete pyshark a una interfaz de red específica?

Puedo leer un paquete de .pcap archivo pyshark usando pyshark . Aquí está mi código:

 import pyshark cap = pyshark.FileCapture(pcap_dir) # pcap_dir is the directory of my pcap file print(cap[0]) # Print a packet print(cap[0]['IP'].src) # Print some header value 

Ahora, necesito enviar este paquete a alguna interfaz (por ejemplo, eth0 ). Probé el siguiente

 from socket import socket, AF_PACKET, SOCK_RAW sock = socket(AF_PACKET, SOCK_RAW) sock.bind(('eth0', 0)) sock.send(cap[0]) 

Pero me sale el error:

  sock.send(cap[0]) TypeError: a bytes-like object is required, not 'Packet' 

¿Alguien puede ayudar?

Pude resolver mi problema Aquí está la explicación:

  • Utilice tanto use_json=True como include_raw=True para poder obtener los datos de paquetes sin procesar.
  • Si usa print(cap[0]) para imprimir el primer paquete, debería ver una capa con el nombre FRAME_RAW . Esta es la capa que contiene todo el paquete de datos sin procesar.

El código:

 import pyshark from socket import socket, AF_PACKET, SOCK_RAW cap = pyshark.FileCapture( input_file=pcap_dir, # pcap_dir the pcap file directory use_json=True, include_raw=True )._packets_from_tshark_sync() sock = socket(AF_PACKET, SOCK_RAW) sock.bind(('YOUR_NETWORK_INTERFACE_NAME', 0)) sock.send(bytearray.fromhex(cap.__next__().frame_raw.value)) # 1st packet in the pcap file sock.send(bytearray.fromhex(cap.__next__().frame_raw.value)) # 2nd packet in the pcap file # And so on until the end of the file ...