為什么nmap掃描端口給出的結果與Python不同?我非常喜歡用Python版本來補充任務。
我有一個易受攻擊的框與IP 192.168.41.2和端口掃描與nmap導致:
nmap -T4 -p- 192.168.41.2
Starting Nmap 7.91 ( https://nmap.org ) at 2021-07-27 15:13 EDT
Nmap scan report for 192.168.41.2
Host is up (0.00024s latency).
All 65535 scanned ports on 192.168.41.2 are closed
MAC Address: 00:50:56:EA:44:EB (VMware)
Nmap done: 1 IP address (1 host up) scanned in 2.72 seconds
告訴我沒有開放的端口。然后,我用Python腳本檢查結果:
from scapy.all import *
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('ip')
args = parser.parse_args()
ip = args.ip
ports = [i for i in range(65535)]
def synScan(host):
resp, _ = sr(IP(dst=host)/TCP(sport=5555, dport=ports, flags='S'), timeout=2, verbose=0)
print(f'Open ports on {host}:\n')
for s, r in resp:
if s[TCP].dport == r[TCP].sport:
print(f'TCP Port {s[TCP].dport} is open.')
synScan(ip)
通過運行執(zhí)行腳本,導致:python3 port_scanner.py 192.168.41.2
Open ports on host 192.168.41.2:
TCP Port 0 is open.
TCP Port 1 is open.
TCP Port 2 is open.
TCP Port 3 is open.
TCP Port 4 is open.
TCP Port 5 is open.
TCP Port 6 is open.
TCP Port 7 is open.
TCP Port 8 is open.
TCP Port 9 is open.
TCP Port 10 is open.
TCP Port 11 is open.
TCP Port 12 is open.
TCP Port 13 is open.
TCP Port 14 is open.
TCP Port 15 is open.
TCP Port 16 is open.
TCP Port 17 is open.
TCP Port 18 is open.
TCP Port 19 is open.
TCP Port 20 is open.
TCP Port 21 is open.
TCP Port 22 is open.
TCP Port 23 is open.
TCP Port 24 is open.
...
...
我的問題是我應該更信任哪種掃描?Nmap 是非常流行的網絡掃描儀和替罪羊是相當受歡迎的, 但在這里你看到的結果。
解答
如果您收到了對SYN包的應答,那么該端口將被認定為打開的。這是錯誤的。例如,如果是RST報文,則關閉該端口。這個腳本告訴我們端口是否被過濾了。
因此,如果您想使用scapy,還必須檢查應答包是否也設置了SYN包。