#!/usr/bin/python2
# -*- coding: utf-8 -*-

__VERSION__ = '0.1'
__AUTHOR__ = 'Galkan'
__DATE__ = '22.09.2013'

import sys

try:
    from scapy.all import *
except ImportError:
    sys.stderr.write("Scapy module must be installed in order to run this script !!!\n")
    sys.exit(37)   
   

def usage ():
    sys.stderr.write("%s  <-ip ip_address | -net net> \n"% (sys.argv[0]))
    sys.stderr.write("%s -ip 10.0.0.37 | -net 192.168.1.0/24\n"% (sys.argv[0]))
    sys.exit(37)


def is_net_sniffer(net):
    fake_bcast="ff:ff:ff:ff:ff:fe"
    
    ans,unans = srp(Ether(dst=fake_bcast)/ARP(pdst=net), 
    filter="arp and arp[7] = 2", timeout=1, iface_hint=net) 
    ans = ARPingResult(ans.res, name="bga.com.tr") 
   	 
    for snd,rcv in ans:
        print rcv.sprintf("%ARP.psrc%")

    
def is_ip_sniffer (ip_address):
    fake_bcast="ff:ff:00:00:00:00"

    responses = srp1(Ether(dst=fake_bcast) / ARP(op="who-has", pdst=destination_ip),type=ETH_P_ARP, iface_hint=destination_ip, timeout=1, verbose=0) 

    if responses:
        print "%s :OK"% (ip_address)
    else:
        print "%s: NOT"% (ip_address)

        

if __name__ == "__main__":
    
    
    if len(sys.argv) != 3:
	usage()	
    elif (sys.argv[1] == "-ip" and sys.argv[2]) :
        destination_ip = sys.argv[2]
        is_ip_sniffer(destination_ip)
    elif (sys.argv[1] == "-net" and sys.argv[2]):
        net = sys.argv[2]
        is_net_sniffer(net)
    else:
	usage()
