0
我試圖用scapy執行http QoS。對於掃描儀,我需要獲取連接時間,GET之間的時間,數據發送的開始時間(服務器的ACK)以及數據的結束時間。scapy接收等待2個數據包
我已經寫:
port=RandNum(1024,65535)
HOST=a[0][0][1][DNS].an.rdata
syn = IP(dst=HOST)/TCP(sport=port, dport=80, flags='S', seq=42)
syn_ack = sr(syn, verbose=0)
t1 = (syn_ack[0][0][1].time - syn_ack[0][0][0].sent_time)*1000
getStr = "GET/HTTP/1.1\n\n"
filt = "tcp and host {ip}".format(ip=HOST)
request = IP(dst=HOST)/TCP(sport=syn_ack[0][0][1][TCP].dport, dport=80, flags='A', seq=syn_ack[0][0][1][TCP].ack, ack=syn_ack[0][0][1][TCP].seq + 1)/getStr
reply = sr(request, verbose=0)
http_fin = sniff(filter=filt, count=1)
t2 = (reply[0][0][1].time - reply[0][0][0].sent_time)*1000
t3 = (http_fin[0].time - reply[0][0][1].time)*1000
fin_ack = IP(dst=HOST)/TCP(flags="FA", ack=http_fin[0][TCP].seq+1, seq=http_fin[0][TCP].ack, sport=http_fin[0][TCP].dport, dport=http_fin[0][TCP].sport)
send(fin_ack, verbose=0)
在Wireshark中,我可以我的GET後看到,一個ACK包(由釣到 「回覆= SR(請求,冗長= 0)」)和一個HTTP分組之後(如HTTP/1.0 200 OK),它必須是響應的結束。 (http_fin = sniff(filter =「tcp and host 88.191.132.65」,count = 1),所以這些命令在等待什麼也沒有。
我想也許我能趕上2包用SR命令,但我不知道。任何人看到另一種方式?