怎么用python写一个漏洞扫描器( 三 )


如果目标端口是开放的 , 那么不会有任何来自服务器的回应 。如果服务器返回了一个带有 RST 标识的 TCP 数据包 , 那么说明端口处于关闭状态 。
但如果服务器返回了一个 ICMP 数据包 , 其中包含 ICMP 目标不可达错误类型3以及 ICMP 状态码为1,2,3,9,10或13 , 则说明目标端口被过滤了无法确定是否处于开放状态 。代码:#! /usr/bin/pythonimport logginglogging.getLogger("scapy.runtime").setLevel(logging.ERROR)from scapy.all import *dst_ip = "10.0.0.1"src_port = RandShort()dst_port=80xmas_scan_resp = sr1(IP(dst=dst_ip)/TCP(dport=dst_port,flags="FPU"),timeout=10)if (str(type(xmas_scan_resp))==""): print "Open|Filtered"elif(xmas_scan_resp.haslayer(TCP)): if(xmas_scan_resp.getlayer(TCP).flags == 0x14): print "Closed"elif(xmas_scan_resp.haslayer(ICMP)): if(int(xmas_scan_resp.getlayer(ICMP).type)==3 and int(xmas_scan_resp.getlayer(ICMP).code) in [1,2,3,9,10,13]): print "Filtered"TCP FIN扫描FIN 扫描会向服务器发送带有 FIN 标识和端口号的 TCP 数据包 。
如果没有服务器端回应则说明端口开放 。如果服务器返回一个 RST 数据包 , 则说明目标端口是关闭的 。
如果服务器返回了一个 ICMP 数据包 , 其中包含 ICMP 目标不可达错误类型3以及 ICMP 代码为1,2,3,9,10或13 , 则说明目标端口被过滤了无法确定端口状态 。代码:#! /usr/bin/pythonimport logginglogging.getLogger("scapy.runtime").setLevel(logging.ERROR)from scapy.all import *dst_ip = "10.0.0.1"src_port = RandShort()dst_port=80fin_scan_resp = sr1(IP(dst=ds 。
【怎么用python写一个漏洞扫描器】

怎么用python写一个漏洞扫描器

文章插图