四层发现-UDP发现

udp发现要注意选择一个不常用的端口,如果目标ip在up时目标端口是开放状态,那么不管目标ip是否为up状态,都不会收到任何回应,只有在目标ip为down状态且目标端口为关闭状态,才会返回一个目标不可达的icmp数据包。

为了理解UDP发现的过程,还是使用scapy进行手动发包。

先定义好UDP数据包结构:

定义及发送:

在图中可以看到icmp端口不可达的信息,这足以证明目标ip是up状态。

同样,为了实现一个网段的自动扫描,可以使用python脚本的方式:

 1 #!/usr/bin/python
 2 from scapy.all import *
 3 
 4 if len(sys.argv) != 2:
 5     print "this script need a arg"
 6     sys.exit()
 7 
 8 address = str(sys.argv[1])
 9 prefix = address.split(".")[0] + "." + address.split(".")[1] + "." + address.split(".")[2] + "."
10 
11 for addr in range(100, 254):
12     response = sr1(IP(dst = prefix + str(addr)) / UDP(dport = 45454), timeout = 0.1,verbose = 0)
13     try:
14         if int(response[IP].proto) == 1:
15             print prefix + str(addr)
16     except:
17         pass
View Code
原文地址:https://www.cnblogs.com/angiejc/p/9384662.html