2011-03-07 22 views

Respuesta

12

Para hacer realizar el reensamblaje TCP tendrá que usar algo como pynids http://jon.oberheide.org/pynids/.

También puedes construir tu propio pylibpcap, dpkt o scapy.

El rearmado de TCP es muy complicado con MUCHOS casos de borde. No recomendaría hacerlo usted mismo si necesita una solución robusta.

4

Sí ... el protocolo TCP garantiza que la capa de aplicación solo verá los paquetes ensamblados y en orden. Ahora bien, si está hablando de construir una interfaz de bajo nivel que analice el paquete IP en sí, puede atacarlo con RAW sockets, que debería darle acceso a la información del encabezado IP. He aquí un ejemplo:

import socket 

# the public network interface 
HOST = socket.gethostbyname(socket.gethostname()) 

# create a raw socket and bind it to the public interface 
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) 
s.bind((HOST, 0)) 

# Include IP headers 
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1) 

# receive all packages 
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON) 

# receive a package 
print s.recvfrom(65565) 

# disabled promiscuous mode 
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF) 

levantado descaradamente de la documentación del módulo de toma de pitón: http://docs.python.org/library/socket.html

+0

tenga en cuenta que este ejemplo solo funcionará en Windows – lunixbochs

Cuestiones relacionadas