Python-Scapy o similar: ¿Cómo puedo crear una solicitud GET de HTTP a nivel de paquete?

Soy un progtwigdor moderado, entrando en progtwigción de red.

Como un bash de mejorar mi comprensión de las redes en general, estoy tratando de realizar varias acciones HTTP básicas desde el nivel del paquete. Mi pregunta es la siguiente: ¿Cómo puedo usar una biblioteca como SCAPY para crear una solicitud HTTP GET y elementos asociados a nivel de paquete? Me doy cuenta de que esto puede sonar extraño, pero parece que no puedo encontrar ninguna información que lo detalle, y mis propios bashs con PAROS y Ethereal han sido … Menos que satisfactorios.

Gracias por cualquier ayuda ofrecida!

Trimiert

Si quieres hacer un apretón de manos de tres vías completo, tendrás que hacerlo manualmente.

Comience con su paquete SYN:

>>> syn = IP(dst='www.google.com') / TCP(dport=80, flags='S') >>> syn > 

Luego reciba el paquete SYN-ACK del servidor, sr1 funciona. Luego envíe su solicitud HTTP GET:

 >>> syn_ack = sr1(syn) Begin emission: Finished to send 1 packets. * Received 1 packets, got 1 answers, remaining 0 packets >>> syn_ack >> 

A continuación, establezca su secuencia de TCP y sus números de confirmación y envíe el GET:

 getStr = 'GET / HTTP/1.1\r\nHost: www.google.com\r\n\r\n' request = IP(dst='www.google.com') / TCP(dport=80, sport=syn_ack[TCP].dport, seq=syn_ack[TCP].ack, ack=syn_ack[TCP].seq + 1, flags='A') / getStr reply = sr1(request) 

¿Has echado un vistazo al tutorial ? Solo copiando y pegando, esto parece que va a ensamblar una solicitud HTTP:

 >>> a=Ether()/IP(dst="www.slashdot.org")/TCP()/"GET /index.html HTTP/1.0 \n\n"