defmain():# 生成幫助信息,以及接收用戶輸入的參數,並建立對象
usage ="Usage: arp掃描.py -f <filename> -i <ip address>"
parse = OptionParser(usage=usage)
parse.add_option("-f","--file",type="string", dest="filename",help="specify the IP address file")
parse.add_option("-i",'--ip',type="string", dest="address",help="specify the IP address")(option, args)= parse.parse_args()
filename = option.filename
address = option.address
# 判斷是不是地址文件if filename:ifnot os.path.exists(filename):#判斷文件是否存在print("The file does not exist. Please enter it again")
sys.exit()withopen(filename,"r")as f:#讀取文件for i in f.readlines():
ip = i.strip()
t = Thread(target=scan, args=(ip,))
t.start()# 判斷是不是整個網段if address:
prefix = address.split(".")[0]+'.'+ address.split(".")[1]+'.'+ address.split(".")[2]+"."# 將用戶輸入的地址以.作爲分隔符for i inrange(0,255):
ip = prefix +str(i)#構造掃描整個網段所需ip
t = Thread(target=scan, args=(ip,))
t.start()
整體代碼
import os
import time
from optparse import OptionParser
from scapy.allimport*defscan(ip):try:
packet = IP(dst=ip)/UDP(dport=56789)
result = sr1(packet,timeout=0.5,verbose=0)#result.show()ifint(result[IP].proto)==0x01:# 0x01 代表的ICMP字段值
time.sleep(0.1)print(ip +' '+"on line")except:returndefmain():# 生成幫助信息,以及接收用戶輸入的參數,並建立對象
usage ="Usage: arp掃描.py -f <filename> -i <ip address>"
parse = OptionParser(usage=usage)
parse.add_option("-f","--file",type="string", dest="filename",help="specify the IP address file")
parse.add_option("-i",'--ip',type="string", dest="address",help="specify the IP address")(option, args)= parse.parse_args()
filename = option.filename
address = option.address
# 判斷是不是地址文件if filename:ifnot os.path.exists(filename):#判斷文件是否存在print("The file does not exist. Please enter it again")
sys.exit()withopen(filename,"r")as f:#讀取文件for i in f.readlines():
ip = i.strip()
t = Thread(target=scan, args=(ip,))
t.start()# 判斷是不是整個網段if address:
prefix = address.split(".")[0]+'.'+ address.split(".")[1]+'.'+ address.split(".")[2]+"."# 將用戶輸入的地址以.作爲分隔符for i inrange(0,255):
ip = prefix +str(i)#構造掃描整個網段所需ip
t = Thread(target=scan, args=(ip,))
t.start()if __name__ =='__main__':
main()