使用 Scapy 端口扫描器查找监听端口的网络服务器
Find webserver listening on port with Scapy port scanner
我正在尝试在 Python 中为 Scapy 编写一个端口扫描器,以找出 Web 服务器正在侦听的端口。服务器没有使用80和443端口,扫描范围是5000到10000(大学作业)。我需要为此使用 Scapy,所以不允许 nmap 和其他。
到目前为止我写的代码(这是对这个原作的改编https://is.muni.cz/th/n9spk/dp.pdf):
target = "172.16.51.142"
ports = range(5000, 10000)
ip = IP(dst=target)
tcp = TCP(dport=ports , flags="S") # SYN flag
ans, unans = sr(ip/tcp) # send packets
for sent, rcvd in ans:
if rcvd.haslayer(TCP): # TCP packet
if rcvd.haslayer(TCP).flags & 2: # SYN/ACK flag
print (sent.dport) # open ports
for 循环按预期工作之前的第一部分:
但是当 for-loop 开始时,我得到以下错误:
我不知道如何解决这个问题。
我使用了在线文档https://scapy.readthedocs.io/en/latest/usage.html#send-and-receive-packets-sr and https://scapy.readthedocs.io/en/latest/usage.html#tcp-port-scanning,但找不到解决方案。
rcvd.haslayer(TCP).flags
不可能,因为 haslayer
returns 是布尔值。
您正在寻找
rcvd.getlayer(TCP).flags
我正在尝试在 Python 中为 Scapy 编写一个端口扫描器,以找出 Web 服务器正在侦听的端口。服务器没有使用80和443端口,扫描范围是5000到10000(大学作业)。我需要为此使用 Scapy,所以不允许 nmap 和其他。
到目前为止我写的代码(这是对这个原作的改编https://is.muni.cz/th/n9spk/dp.pdf):
target = "172.16.51.142"
ports = range(5000, 10000)
ip = IP(dst=target)
tcp = TCP(dport=ports , flags="S") # SYN flag
ans, unans = sr(ip/tcp) # send packets
for sent, rcvd in ans:
if rcvd.haslayer(TCP): # TCP packet
if rcvd.haslayer(TCP).flags & 2: # SYN/ACK flag
print (sent.dport) # open ports
for 循环按预期工作之前的第一部分:
但是当 for-loop 开始时,我得到以下错误:
我不知道如何解决这个问题。
我使用了在线文档https://scapy.readthedocs.io/en/latest/usage.html#send-and-receive-packets-sr and https://scapy.readthedocs.io/en/latest/usage.html#tcp-port-scanning,但找不到解决方案。
rcvd.haslayer(TCP).flags
不可能,因为 haslayer
returns 是布尔值。
您正在寻找
rcvd.getlayer(TCP).flags