我制作了一个 Scapy 脚本,它会询问用户他们希望从哪个网站提取 HTML 代码(出于显而易见的原因必须是 HTTP),然后设置与该网站的 3 路 TCP 握手。完成后,代码将发送 GET 请求并将对该 GET 请求的回复存储到变量中,并打印接收到的数据包的 HTML 代码部分。
但是,每当我运行代码时,只有一小部分网站的整体 HTML 代码被保存/捕获。
`from scapy.all import *
from scapy.layers.http import *
from scapy.layers.inet import *
# Asking user what website to get HTML from
website = input("Website (e.g www.example.com): ")
# 3 Way Handshake
# Creating SYN Packet
synPacket = IP(dst=website) / TCP(dport=80, flags='S')
# Capturing SYN-ACK Packet
synAckPacket = sr1(synPacket)
# Creating ACK Packet
ackNum = synAckPacket.seq + 1
seqNum = synAckPacket.ack
port = synAckPacket.dport
ackPacket = IP(dst=website) / TCP(sport=port, dport=80, flags='A', seq=seqNum, ack=ackNum)
# Sending ACK Packet
send(ackPacket)
# Creating GET Packet
getPacket = IP(dst=website) / TCP(sport=port, dport=80, flags='PA', seq=seqNum, ack=ackNum) / HTTP() / HTTPRequest(Host=website)
send(getPacket)
# Capturing GET Reply Packet
replyPacket = sr1(getPacket)
print(replyPacket[Raw].load)
`
我正在用 www.example.com.
测试这个我收到: ' 示例域
我尝试了不同的方法来搜索 HTTP GET 响应,但是我很确定我已经捕获了正确的数据包,因为在 Wireshark 中,我捕获的数据包包含整个 HTML 代码。