82 lines
2.2 KiB
Python
82 lines
2.2 KiB
Python
![]() |
|
||
|
import ops.cmd
|
||
|
import util.mac
|
||
|
import dsz
|
||
|
from scanengine2 import scan
|
||
|
|
||
|
def _whats_your_job():
|
||
|
return 'arp'
|
||
|
|
||
|
def _whats_your_name():
|
||
|
return 'arp'
|
||
|
|
||
|
def _support_ipv6():
|
||
|
return True
|
||
|
|
||
|
class arp(scan, ):
|
||
|
|
||
|
def __init__(self, job, timeout=None):
|
||
|
scan.__init__(self, job)
|
||
|
self.scan_type = _whats_your_name()
|
||
|
|
||
|
def execute_scan(self, verbose):
|
||
|
arpcmd = ops.cmd.getDszCommand('arp', scan=self.target, dszquiet=(not verbose))
|
||
|
arpobject = arpcmd.execute()
|
||
|
if (arpobject is None):
|
||
|
return False
|
||
|
self.target = arpobject.entry[0].ip
|
||
|
self.mac = arpobject.entry[0].mac
|
||
|
self.state = arpobject.entry[0].state
|
||
|
self.adapter = arpobject.entry[0].adapter
|
||
|
self.timestamp = dsz.Timestamp()
|
||
|
if (not ((self.mac == '') or (self.mac == '00-00-00-00-00-00'))):
|
||
|
self.target_id = self.search_project_data(macs=[self.mac])
|
||
|
self.oui = util.mac.getoui(self.mac)
|
||
|
self.success = True
|
||
|
|
||
|
def return_success_message(self):
|
||
|
return ('Arp response for %s (%s)' % (self.target, self.mac))
|
||
|
|
||
|
def check_escalation(self, escalation_rule):
|
||
|
arp = self
|
||
|
try:
|
||
|
if eval(escalation_rule):
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
except:
|
||
|
return False
|
||
|
|
||
|
def verify_escalation(self, escalation_rule):
|
||
|
arp = self
|
||
|
try:
|
||
|
eval_res = eval(escalation_rule)
|
||
|
if ((eval_res == True) or (eval_res == False)):
|
||
|
return True
|
||
|
else:
|
||
|
return False
|
||
|
except:
|
||
|
return False
|
||
|
|
||
|
def return_data(self):
|
||
|
return scan.return_data(self)
|
||
|
|
||
|
def get_display_headers(self):
|
||
|
return ['Internet Address', 'Physical Address', 'OUI', 'Target ID', 'Time Stamp']
|
||
|
|
||
|
def get_data_fields(self):
|
||
|
return ['target', 'mac', 'oui', 'target_id', 'timestamp']
|
||
|
|
||
|
def get_raw_fields(self):
|
||
|
return (self.get_data_fields() + ['success'])
|
||
|
|
||
|
def verify_job(self, job):
|
||
|
if (not (len(job) == 1)):
|
||
|
return False
|
||
|
return True
|
||
|
|
||
|
def min_time(self):
|
||
|
return 1
|
||
|
|
||
|
def min_range(self):
|
||
|
return 2
|