day 6 - nmap python
This commit is contained in:
parent
95d6654dca
commit
c6db883a31
1 changed files with 88 additions and 0 deletions
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
layout: post
|
||||
title: "day 6"
|
||||
date: 2018-01-06
|
||||
categories: programming
|
||||
---
|
||||
|
||||
# 100 Days of Code
|
||||
|
||||
### Day 6:
|
||||
Today I made use of the python-nmap library and made a class that I will be
|
||||
able to import into future modules. I started out making things like a ping sweeping tool and
|
||||
banner grabber, as well as a ssl cipher suite checker. I made a subclass of the nmap
|
||||
PortScanner class to start so I have access to all of those utilities. Subclasses are something I have been looking into recently.
|
||||
It is an easy way to add existing functionality to another object. This class will end up being the base
|
||||
library that I use when I make my own port scanning scripts. here is what I
|
||||
have so far:
|
||||
|
||||
```python
|
||||
class NmapUtility(nmap.PortScanner):
|
||||
|
||||
def __init__(self, hostname, hosts=False):
|
||||
""" Initialize with hostname and optional list of hosts """
|
||||
self.hostname = hostname
|
||||
|
||||
def scan_host(self, hostname, portrange):
|
||||
""" Scan a host using nmap.scan """
|
||||
|
||||
return self.scan(hostname, portrange)
|
||||
|
||||
def scan_hosts(self, hosts):
|
||||
""" Scan a list of hosts """
|
||||
pass
|
||||
|
||||
def ping_sweep(self, hosts):
|
||||
""" Ping sweep a list of hosts """
|
||||
self.scan(hosts=hosts, arguments='-n -sP -PE -PA21,23,80,3389')
|
||||
hosts_list = [(x, self[x]['status']['state']) for x in self.all_hosts()]
|
||||
for host, status in hosts_list:
|
||||
print('{0}:{1}'.format(host, status))
|
||||
|
||||
def nmap_version(self):
|
||||
""" Get nmap version being used """
|
||||
|
||||
return self.nmapVersion()
|
||||
|
||||
def command_line(self):
|
||||
""" Run nmap.command_line """
|
||||
|
||||
return self.command_line
|
||||
|
||||
def cipher_check(self, hostname, portrange):
|
||||
""" Run --script ssl-enum-ciphers on hostname """
|
||||
|
||||
return self.scan(hostname,
|
||||
portrange,
|
||||
arguments='--script ssl-enum-ciphers')
|
||||
|
||||
def get_csv(self):
|
||||
""" Run scan.csv() """
|
||||
|
||||
return self.csv()
|
||||
|
||||
def all_tcp(self, hostname=False):
|
||||
""" Get all ports for tcp protocol in sorted output """
|
||||
if hostname:
|
||||
return self[hostname].all_tcp()
|
||||
|
||||
return self[self.hostname].all_tcp()
|
||||
|
||||
def all_udp(self, hostname=False):
|
||||
""" Get all ports for udp protocol in sorted output
|
||||
requires scanHost() or scan() to be run first
|
||||
"""
|
||||
if hostname:
|
||||
return self[hostname].all_udp()
|
||||
|
||||
return self[self.hostname].all_udp()
|
||||
|
||||
def banner_grab(self, portrange, hostname=False):
|
||||
""" Grab banners from ports """
|
||||
|
||||
if hostname:
|
||||
return self.scan(hostname, portrange,
|
||||
arguments='-sV --script=banner')
|
||||
return self.scan(self.hostname, portrange,
|
||||
arguments='-sV --script=banner')
|
||||
|
Loading…
Add table
Reference in a new issue