3
我使用scapy和python來構建我的DNS請求。 UDP請求沒有問題,但是當我想要使用TCP(與我使用的UDP的請求完全相同)時,Wireshark說我的DNS請求格式不正確。Scapy DNS請求只能用TCP格式化
這裏我Python代碼:
from scapy.all import *
ip=IP(dst="130.104.254.1")
dns = DNS(rd=1, qd=DNSQR(qname = "google.be", qtype="A"))
SYN=ip/TCP(sport=RandNum(1024,65535), dport=53, flags="S", seq=42)
SYNACK=sr1(SYN)
ACK=ip/TCP(sport=SYNACK.dport, dport=53, flags="A", seq=SYNACK.ack, ack=SYNACK.seq + 1)
send(ACK)
DNSRequest = ip/TCP(sport=SYNACK.dport, dport=53, flags="PA", seq=SYNACK.ack, ack=SYNACK.seq + 1)/dns
DNSReply = sr1(DNSRequest, timeout = 1)
的三次握手之前,我把我的請求全部完成。
非常感謝您!
我敢打賭,你想用傳送通過TCP UDP中格式的DNS請求。這是行不通的,因爲無法確定請求的長度。 (在UDP中,數據報大小會告訴你請求的長度,但TCP不保存應用程序消息的邊界,所以這將不起作用。) – 2013-03-23 00:31:05
你贏了你的賭注!非常感謝大衛。 – Comtention 2013-03-26 14:58:33