2017年国赛答案
ARP扫描***测试_第1张图片

from scapy.all import
import optparse
from threading import

def sweep(packet):
try:
reply = srp1(packet,timeout=1,verbose=0,iface="eth0")
print 'IP:' + reply.psrc + ' MAC: ' + reply.hwsrc
except :
pass

def main():
parser = optparse.OptionParser('usage%prog '+' -H < target host segment/eg :(172.168.1.)')
parser.add_option('-H',dest='tgtHost',type='string',help='speciffy target h')
(options,args)=parser.parse_args()
host = options.tgtHost
if host == None:
print parser.usage
exit(0)

eth =Ether()
eth.dst="ff:ff:ff:ff:ff:ff"
eth.type=0x0806
arp = ARP()

for n in  range(1,254):
    arp.pdst= host +str(n)
    packet  =  eth/arp
    t= Thread(target=sweep,args=(packet))
    t.start()       

if name =='main':
main()