直接向目标ip发送一个ACK数据包,正常情况下up状态的目标ip会返回一个SRT数据包。
使用scapy构造TCP数据包:
然后在将一些数据类型设置好就可以发送了。
实用脚本实现批量扫描:
1 #!/usr/bin/python 2 from scapy.all import * 3 if len(sys.argv) != 2: 4 print "this script need a arg, like: ./tcpScan.py 192.168.0.0" 5 sys.exit() 6 7 address = str(sys.argv[1]) 8 prefix = address.split(".")[0] + "." + address.split(".")[1] + "." + address.split(".")[2] + "." 9 10 for addr in range(100, 254): 11 response = sr1(IP(dst = prefix + str(addr)) / TCP(dport = 2222, flags = "A"), timeout = 0.1, verbose = 0) 12 try: 13 if int(response[TCP].flags) == 4: 14 print prefix + str(addr) 15 except: 16 pass
这样就可以实现一个网段的扫描。