ich weiß, es ist eine dumme Frage. aber glauben Sie mir - ich suchte ich das ganze Internet und ich bekam keine Antwort. zunächst, mein Code ist:Wie bekomme ich http Daten von einer Website von scapy
def Make_Get():
synR = IP(dst = 'www.google.com', ttl = 64)/TCP(dport = 80, flags = 'S')
synAckAN = sr1(synR)
getStr = 'GET /index.html HTTP/1.0 \n\n'
req = (IP(dst = 'www.google.com', ttl = 64)/TCP(dport = 80, sport = synAckAN[TCP].dport, seq = synAckAN[TCP].ack, ack = synAckAN[TCP].seq+1, flags = 'A')/getStr)
ans, unans = sr(req)
return ans, unans
, wenn ich diese Funktion ausführen und Tring die „ans“ (erster Parameter) drucken - its me, ohne dass die Daten eine Antwort zu geben. Blick: 1 Pakete empfangen, bekam 1 Antworten, Rest 0 Pakete
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 40
id = 9784
flags =
frag = 0L
ttl = 128
proto = tcp
chksum = 0xc02f
src = 216.58.210.4
dst = 192.168.233.128
\options \
###[ TCP ]###
sport = http
dport = ftp_data
seq = 2116250139
ack = 28
dataofs = 5L
reserved = 0L
flags = A
window = 64240
chksum = 0x77bc
urgptr = 0
options = {}
###[ Padding ]###
load = '\x00\x00\x00\x00\x00\x00'
None
gibt es keine irgendwelche Daten ....... , aber wenn ich die transmition in Wireshark schnupperte, würde ich ein HTML bekam Code in einem Paket.
meine Frage ist - wie kann ich eine Get-Anfrage schicken wie ich, und den HTML-Code von der Website speichern (um es zu drucken, oder in eine Datei .. doesnt metter ..)
Ich kann es verwenden .. aber ich möchte wissen, wie HTTP REQ ohne es zu tun. Das Problem ist, dass die Antwort, die ich bekomme, wenn ich das tue, Ack ist und kein HTML-Code. Du weißt nicht warum, oder? – jony
Sie müssen zuerst die TCP-Verbindung herstellen, dann führen Sie Ihre HTTP-Anforderung im Hauptteil der TCP-Payload aus. Also, zuerst ein SYN, erhalte ein ACK und dann ein SYN/ACK. Danach können Sie das HTTP im Body der TCP-Payload senden, und dann hoffentlich erhalten Sie es – StephenG
Das ist genau das, was ich in dem Code, den ich gesendet habe, getan habe – jony