diff options
| author | tv <tv@also> | 2011-08-09 13:08:33 +0200 | 
|---|---|---|
| committer | tv <tv@also> | 2011-08-09 13:08:43 +0200 | 
| commit | ed35d14330dfc98ef69d5b0331ae911602994b65 (patch) | |
| tree | 3c185c7ad84860c09167230075ab15b8dd667851 /census/arping.py | |
| parent | 84674bbb50e5737262b8624de1f81a1931f3994f (diff) | |
| parent | 1fa3eb0e4e3acbe560e2091e47de3a245155baf2 (diff) | |
Merge branch 'master' of github.com:krebscode/painload
Diffstat (limited to 'census/arping.py')
| -rwxr-xr-x | census/arping.py | 35 | 
1 files changed, 35 insertions, 0 deletions
| diff --git a/census/arping.py b/census/arping.py new file mode 100755 index 00000000..3245f1ee --- /dev/null +++ b/census/arping.py @@ -0,0 +1,35 @@ +#!/usr/bin/python + +import logging  +log = logging.getLogger('arpingy') +logging.disable(logging.WARNING) + +import os,sys +try: +  if (os.geteuid() != 0): +    raise Exception('no root permissions') +  from scapy.all import * #might throws "no such module" + +  def arpingy(iprange="10.42.1.0/24",iface='eth0'): +    log.debug("pinging "+ str(iprange)) +    """Arping function takes IP Address or Network, returns nested mac/ip list""" +    try: +      conf.verb=0 +      ans,unans=arping(iprange,iface=iface,timeout=1,retry=3) + +      collection = [] +      for snd, rcv in ans: +        result = rcv.sprintf(r"%ARP.psrc% %Ether.src%").split() +        log.debug(result) +        return result # take just the first arp reply +    except Exception as e: +      print ("something went wrong while arpinging " + str(e)) +    return [] + +except Exception as e: +  raise Exception("Cannot load arping functions!" + str(e)) + + +if __name__ =='__main__': +  logging.basicConfig(level=logging.DEBUG) +  arpingy(sys.argv[1],sys.argv[2]) | 
