| |
- builtins.Exception(builtins.BaseException)
-
- PortScannerError
- builtins.dict(builtins.object)
-
- PortScannerHostDict
- builtins.object
-
- PortScanner
- PortScannerAsync
-
- PortScannerYield
class PortScanner(builtins.object) |
|
PortScanner class allows to use nmap from python |
|
Methods defined here:
- __getitem__(self, host)
- returns a host detail
- __init__(self, nmap_search_path=('nmap', '/usr/bin/nmap', '/usr/local/bin/nmap', '/sw/bin/nmap', '/opt/local/bin/nmap'))
- Initialize PortScanner module
* detects nmap on the system and nmap version
* may raise PortScannerError exception if nmap is not found in the path
:param nmap_search_path: tupple of string where to search for nmap executable. Change this if you want to use a specific version of nmap.
:returns: nothing
- all_hosts(self)
- returns a sorted list of all hosts
- analyse_nmap_xml_scan(self, nmap_xml_output=None, nmap_err='', nmap_err_keep_trace='', nmap_warn_keep_trace='')
- Analyses NMAP xml scan ouput
May raise PortScannerError exception if nmap output was not xml
Test existance of the following key to know if something went wrong : ['nmap']['scaninfo']['error']
If not present, everything was ok.
:param nmap_xml_output: xml string to analyse
:returns: scan_result as dictionnary
- command_line(self)
- returns command line used for the scan
may raise AssertionError exception if called before scanning
- csv(self)
- returns CSV output as text
Example :
host;hostname;hostname_type;protocol;port;name;state;product;extrainfo;reason;version;conf;cpe
127.0.0.1;localhost;PTR;tcp;22;ssh;open;OpenSSH;protocol 2.0;syn-ack;5.9p1 Debian 5ubuntu1;10;cpe
127.0.0.1;localhost;PTR;tcp;23;telnet;closed;;;conn-refused;;3;
127.0.0.1;localhost;PTR;tcp;24;priv-mail;closed;;;conn-refused;;3;
- get_nmap_last_output(self)
- Returns the last text output of nmap in raw text
this may be used for debugging purpose
:returns: string containing the last text output of nmap in raw text
- has_host(self, host)
- returns True if host has result, False otherwise
- listscan(self, hosts='127.0.0.1')
- do not scan but interpret target hosts and return a list a hosts
- nmap_version(self)
- returns nmap version if detected (int version, int subversion)
or (0, 0) if unknown
:returns: (nmap_version_number, nmap_subversion_number)
- scan(self, hosts='127.0.0.1', ports=None, arguments='-sV', sudo=False)
- Scan given hosts
May raise PortScannerError exception if nmap output was not xml
Test existance of the following key to know
if something went wrong : ['nmap']['scaninfo']['error']
If not present, everything was ok.
:param hosts: string for hosts as nmap use it 'scanme.nmap.org' or '198.116.0-255.1-127' or '216.163.128.20/20'
:param ports: string for ports as nmap use it '22,53,110,143-4564'
:param arguments: string of arguments for nmap '-sU -sX -sC'
:param sudo: launch nmap with sudo if True
:returns: scan_result as dictionnary
- scaninfo(self)
- returns scaninfo structure
{'tcp': {'services': '22', 'method': 'connect'}}
may raise AssertionError exception if called before scanning
- scanstats(self)
- returns scanstats structure
{'uphosts': '3', 'timestr': 'Thu Jun 3 21:45:07 2010', 'downhosts': '253', 'totalhosts': '256', 'elapsed': '5.79'}
may raise AssertionError exception if called before scanning
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class PortScannerAsync(builtins.object) |
|
PortScannerAsync allows to use nmap from python asynchronously
for each host scanned, callback is called with scan result for the host |
|
Methods defined here:
- __del__(self)
- Cleanup when deleted
- __init__(self)
- Initialize the module
* detects nmap on the system and nmap version
* may raise PortScannerError exception if nmap is not found in the path
- scan(self, hosts='127.0.0.1', ports=None, arguments='-sV', callback=None, sudo=False)
- Scan given hosts in a separate process and return host by host result using callback function
PortScannerError exception from standard nmap is catched and you won't know about but get None as scan_data
:param hosts: string for hosts as nmap use it 'scanme.nmap.org' or '198.116.0-255.1-127' or '216.163.128.20/20'
:param ports: string for ports as nmap use it '22,53,110,143-4564'
:param arguments: string of arguments for nmap '-sU -sX -sC'
:param callback: callback function which takes (host, scan_data) as arguments
:param sudo: launch nmap with sudo if true
- still_scanning(self)
- :returns: True if a scan is currently running, False otherwise
- stop(self)
- Stop the current scan process
- wait(self, timeout=None)
- Wait for the current scan process to finish, or timeout
:param timeout: default = None, wait timeout seconds
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
|
class PortScannerError(builtins.Exception) |
|
Exception error class for PortScanner class |
|
- Method resolution order:
- PortScannerError
- builtins.Exception
- builtins.BaseException
- builtins.object
Methods defined here:
- __init__(self, value)
- __repr__(self)
- __str__(self)
Data descriptors defined here:
- __weakref__
- list of weak references to the object (if defined)
Methods inherited from builtins.Exception:
- __new__(*args, **kwargs) from builtins.type
- Create and return a new object. See help(type) for accurate signature.
Methods inherited from builtins.BaseException:
- __delattr__(self, name, /)
- Implement delattr(self, name).
- __getattribute__(self, name, /)
- Return getattr(self, name).
- __reduce__(...)
- __setattr__(self, name, value, /)
- Implement setattr(self, name, value).
- __setstate__(...)
- with_traceback(...)
- Exception.with_traceback(tb) --
set self.__traceback__ to tb and return self.
Data descriptors inherited from builtins.BaseException:
- __cause__
- exception cause
- __context__
- exception context
- __dict__
- __suppress_context__
- __traceback__
- args
|
class PortScannerHostDict(builtins.dict) |
|
Special dictionnary class for storing and accessing host scan result |
|
- Method resolution order:
- PortScannerHostDict
- builtins.dict
- builtins.object
Methods defined here:
- all_ip(self)
- :returns: list of ip ports
- all_protocols(self)
- :returns: a list of all scanned protocols
- all_sctp(self)
- :returns: list of sctp ports
- all_tcp(self)
- :returns: list of tcp ports
- all_udp(self)
- :returns: list of udp ports
- has_ip(self, port)
- :param port: (int) ip port
:returns: True if ip port has info, False otherwise
- has_sctp(self, port)
- :returns: True if sctp port has info, False otherwise
- has_tcp(self, port)
- :param port: (int) tcp port
:returns: True if tcp port has info, False otherwise
- has_udp(self, port)
- :param port: (int) udp port
:returns: True if udp port has info, False otherwise
- hostname(self)
- For compatibility purpose...
:returns: try to return the user record or the first hostname of the list hostnames
- hostnames(self)
- :returns: list of hostnames
- ip(self, port)
- :param port: (int) ip port
:returns: info for ip port
- sctp(self, port)
- :returns: info for sctp port
- state(self)
- :returns: host state
- tcp(self, port)
- :param port: (int) tcp port
:returns: info for tpc port
- udp(self, port)
- :param port: (int) udp port
:returns: info for udp port
- uptime(self)
- :returns: host state
Data descriptors defined here:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
Methods inherited from builtins.dict:
- __contains__(self, key, /)
- True if D has a key k, else False.
- __delitem__(self, key, /)
- Delete self[key].
- __eq__(self, value, /)
- Return self==value.
- __ge__(self, value, /)
- Return self>=value.
- __getattribute__(self, name, /)
- Return getattr(self, name).
- __getitem__(...)
- x.__getitem__(y) <==> x[y]
- __gt__(self, value, /)
- Return self>value.
- __init__(self, /, *args, **kwargs)
- Initialize self. See help(type(self)) for accurate signature.
- __iter__(self, /)
- Implement iter(self).
- __le__(self, value, /)
- Return self<=value.
- __len__(self, /)
- Return len(self).
- __lt__(self, value, /)
- Return self<value.
- __ne__(self, value, /)
- Return self!=value.
- __new__(*args, **kwargs) from builtins.type
- Create and return a new object. See help(type) for accurate signature.
- __repr__(self, /)
- Return repr(self).
- __setitem__(self, key, value, /)
- Set self[key] to value.
- __sizeof__(...)
- D.__sizeof__() -> size of D in memory, in bytes
- clear(...)
- D.clear() -> None. Remove all items from D.
- copy(...)
- D.copy() -> a shallow copy of D
- fromkeys(iterable, value=None, /) from builtins.type
- Returns a new dict with keys from iterable and values equal to value.
- get(...)
- D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
- items(...)
- D.items() -> a set-like object providing a view on D's items
- keys(...)
- D.keys() -> a set-like object providing a view on D's keys
- pop(...)
- D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
- popitem(...)
- D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
- setdefault(...)
- D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
- update(...)
- D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
- values(...)
- D.values() -> an object providing a view on D's values
Data and other attributes inherited from builtins.dict:
- __hash__ = None
|
class PortScannerYield(PortScannerAsync) |
|
PortScannerYield allows to use nmap from python with a generator
for each host scanned, yield is called with scan result for the host |
|
- Method resolution order:
- PortScannerYield
- PortScannerAsync
- builtins.object
Methods defined here:
- __init__(self)
- Initialize the module
* detects nmap on the system and nmap version
* may raise PortScannerError exception if nmap is not found in the path
- scan(self, hosts='127.0.0.1', ports=None, arguments='-sV', sudo=False)
- Scan given hosts in a separate process and return host by host result using callback function
PortScannerError exception from standard nmap is catched and you won't know about it
:param hosts: string for hosts as nmap use it 'scanme.nmap.org' or '198.116.0-255.1-127' or '216.163.128.20/20'
:param ports: string for ports as nmap use it '22,53,110,143-4564'
:param arguments: string of arguments for nmap '-sU -sX -sC'
:param callback: callback function which takes (host, scan_data) as arguments
:param sudo: launch nmap with sudo if true
- still_scanning(self)
- stop(self)
- wait(self, timeout=None)
Methods inherited from PortScannerAsync:
- __del__(self)
- Cleanup when deleted
Data descriptors inherited from PortScannerAsync:
- __dict__
- dictionary for instance variables (if defined)
- __weakref__
- list of weak references to the object (if defined)
| |