diff options
Diffstat (limited to 'people')
| -rw-r--r-- | people/Makefile | 6 | ||||
| -rw-r--r-- | people/README.md | 13 | ||||
| -rw-r--r-- | people/TODO.md | 3 | ||||
| -rw-r--r-- | people/VERSION | 1 | ||||
| -rwxr-xr-x | people/arping.py | 37 | ||||
| -rwxr-xr-x | people/arping_users.py | 54 | ||||
| -rw-r--r-- | people/mac_names.lst | 1 | 
7 files changed, 115 insertions, 0 deletions
diff --git a/people/Makefile b/people/Makefile new file mode 100644 index 00000000..2c6c1c03 --- /dev/null +++ b/people/Makefile @@ -0,0 +1,6 @@ +.phony: all + +all: arping.py arping_users.py +	echo "call python ./arping_users.py v" +install: +	apt-get install python-scapy diff --git a/people/README.md b/people/README.md new file mode 100644 index 00000000..e45d39c1 --- /dev/null +++ b/people/README.md @@ -0,0 +1,13 @@ +ARPING Users +========== + +This is a simplified python script which checks the available subnet for computers online and returns a list of users which are online based on their mac-address + + +arping_users.py: +  call `python arping_users.py v` for verbose output -> print all discovered hosts + +SNMPWALK Command +=============== + +snmpwalk -c shammunity 10.42.0.1 1.3.6.1.2.1.3.1.1.2 diff --git a/people/TODO.md b/people/TODO.md new file mode 100644 index 00000000..daacfd58 --- /dev/null +++ b/people/TODO.md @@ -0,0 +1,3 @@ +BUGS +===== + diff --git a/people/VERSION b/people/VERSION new file mode 100644 index 00000000..6c50e659 --- /dev/null +++ b/people/VERSION @@ -0,0 +1 @@ ++++++++[>+++++++>+++++++<<-]>.>---.<-. diff --git a/people/arping.py b/people/arping.py new file mode 100755 index 00000000..1b51ab1b --- /dev/null +++ b/people/arping.py @@ -0,0 +1,37 @@ +#!/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: +  log.error("Cannot load arping functions!" + str(e)) +  def arpingy(iprange='',iface=''): +    raise Exception ('arping not available') + + +if __name__ =='__main__': +  logging.basicConfig(level=logging.DEBUG) +  arpingy(sys.argv[1],sys.argv[2]) diff --git a/people/arping_users.py b/people/arping_users.py new file mode 100755 index 00000000..c576e4f3 --- /dev/null +++ b/people/arping_users.py @@ -0,0 +1,54 @@ +#!/usr/bin/python +import subprocess,re,logging,sys + +from arping import arpingy +from multiprocessing import Pool +DEV='eth0' +MAC_NAMES='mac_names.lst' +data = [] +ret = {} +verb = False + +if len(sys.argv) > 1 and sys.argv[1] == 'v': +  verb = True +def get_own_addr(): +  data = subprocess.Popen(['/sbin/ifconfig',DEV],  +      stdout=subprocess.PIPE).communicate()[0].replace('\n','') +  return re.sub(r'.*HWaddr ([0-9A-Fa-f:]*).*inet addr:([0-9.]*).*' , +      r'\1 \2',data).split() + +def load_names(MAC_NAMES): +  names = {} +  f = open(MAC_NAMES) +  for l in f: +    mac,name = l.split() +    names[mac] = name.replace('\n','') +  f.close() +  return names + +def arping_helper(dic): +  return arpingy(**dic) + +for first in range(4): +  for second in range(255): +    data.append({'iprange':'10.42.'+str(first)+'.'+str(second),'iface':DEV}) + +names = load_names(MAC_NAMES) +try: +  p = Pool(20) +  ret = filter(lambda x:x , p.map(arping_helper, data)) +  myip,mymac = get_own_addr() +  ret.append([mymac,myip]) +  p.terminate() +except Exception as e: +  print 'you fail '+str(e) + + + +for p in ret: +  if verb: +    print p[0] + " => " + p[1] +  if p[1] in names: +    print names[p[1]]+ " is online" + + diff --git a/people/mac_names.lst b/people/mac_names.lst new file mode 100644 index 00000000..dcd3c2b0 --- /dev/null +++ b/people/mac_names.lst @@ -0,0 +1 @@ +00:40:63:c8:b5:a0 krebs  | 
