From 6c69c191b4ed7b3161120cd2d3ec14980289524c Mon Sep 17 00:00:00 2001 From: Ronald Date: Mon, 6 Apr 2015 23:35:04 +0200 Subject: [PATCH 1/5] temporary fix for issue40 --- libnmap/objects/__init__.py | 4 ++-- libnmap/objects/host.py | 10 ++++---- libnmap/objects/service.py | 48 +++++++++++++++++++++++++++++++++++++ libnmap/parser.py | 20 ++++++++-------- 4 files changed, 66 insertions(+), 16 deletions(-) diff --git a/libnmap/objects/__init__.py b/libnmap/objects/__init__.py index ddf3699..9cafae9 100644 --- a/libnmap/objects/__init__.py +++ b/libnmap/objects/__init__.py @@ -2,6 +2,6 @@ from libnmap.objects.host import NmapHost from libnmap.objects.report import NmapReport -from libnmap.objects.service import NmapService +from libnmap.objects.service import NmapService, NmapExtraPort -__all__ = ["NmapReport", "NmapHost", "NmapService"] +__all__ = ['NmapReport', 'NmapHost', 'NmapService', 'NmapExtraPort'] diff --git a/libnmap/objects/host.py b/libnmap/objects/host.py index 9425e2e..99be06f 100644 --- a/libnmap/objects/host.py +++ b/libnmap/objects/host.py @@ -38,6 +38,7 @@ def __init__( self._status = status if status is not None else {} self._services = services if services is not None else [] self._extras = extras if extras is not None else {} + self._extraports = self._extras.get('extraports', None) self._osfingerprinted = False self.os = None if "os" in self._extras: @@ -469,12 +470,13 @@ def extraports_state(self): :return: dict with keys 'state' and 'count' or None """ - _xtrports = self._extras.get("extraports", None) + rval = None + _xports = self._extras.get('extraports', None) - if _xtrports is None: - return None + if _xports is not None: + rval = {'state': _xtrports['state'], 'count': _xtrports['count']} - return {"state": _xtrports["state"], "count": _xtrports["count"]} + return rval @property def extraports_reasons(self): diff --git a/libnmap/objects/service.py b/libnmap/objects/service.py index e254a66..a21b1af 100644 --- a/libnmap/objects/service.py +++ b/libnmap/objects/service.py @@ -366,3 +366,51 @@ def diff(self, other): :return: NmapDiff object """ return NmapDiff(self, other) + + +class NmapExtraPort(object): + """ + NmapExtraPort is an object which documents unlisted ports/services + which are possibly closed, filtered, ignored,... + """ + def __init__(self, xdict): + """ + Constructor + :param xdict: python dict containing the following structure: + { + 'state': , + 'count': , + 'reasons': [{'reason': , 'count' }] + } + """ + self._count = xdict.get('count', 0) + self._state = xdict.get('state', 'unknown') + self._reasons = xdict.get('reasons', []) + + @property + def count(self): + """ + Accessor for the number of extraports + + :return: int + """ + return int(self._count) + + @property + def state(self): + """ + Accessor for the state of extraports listed + + :return: string + """ + return self._state + + @property + def reason(self): + """ + Return the first reason available for the extraport listed. + + :return: dict, empty if no extraports reason available + """ + + return self.reasons[0] if len(self.reasons) else {} diff --git a/libnmap/parser.py b/libnmap/parser.py index 67ff616..1c5be59 100644 --- a/libnmap/parser.py +++ b/libnmap/parser.py @@ -8,10 +8,8 @@ import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET - from xml.etree.ElementTree import iselement as et_iselement - -from libnmap.objects import NmapHost, NmapReport, NmapService +from libnmap.objects import NmapHost, NmapService, NmapReport, NmapExtraPort class NmapParser(object): @@ -385,17 +383,18 @@ def _parse_xml_ports(cls, scanports_data): xelement = cls.__format_element(scanports_data) - rdict = {"ports": [], "extraports": None} + rdict = {'ports': [], 'extraports': []} for xservice in xelement: if xservice.tag == "port": nport = cls._parse_xml_port(xservice) rdict["ports"].append(nport) elif xservice.tag == "extraports": extraports = cls.__parse_extraports(xservice) - rdict["extraports"] = extraports - # else: - # print "struct port unknown attr: %s value: %s" % - # (h.tag, h.get(h.tag)) + rdict['extraports'].append(extraports) + # DEBUG REMOVE ME + else: + print "struct port unknown attr: %s value: %s" % + (h.tag, h.get(h.tag)) return rdict @classmethod @@ -485,8 +484,9 @@ def __parse_extraports(cls, extraports_data): for xelt in xelement: if xelt.tag == "extrareasons": extrareasons_dict = cls.__format_attributes(xelt) - rdict["reasons"].append(extrareasons_dict) - return rdict + rdict['reasons'].append(extrareasons_dict) + robj = NmapExtraPort(rdict) + return robj @classmethod def __parse_script_table(cls, script_table): From 3b4cde5e76a86ceab894b0aa09517c6d0e9adb67 Mon Sep 17 00:00:00 2001 From: Ronald Bister Date: Mon, 27 Jan 2025 22:53:34 +0100 Subject: [PATCH 2/5] fix(extraports): added support for extra ports, fixes #40 --- libnmap/objects/host.py | 30 +-- libnmap/objects/service.py | 8 +- libnmap/parser.py | 10 +- libnmap/test/files/extra_ports.xml | 350 +++++++++++++++++++++++++++++ libnmap/test/test_extraports.py | 36 +++ 5 files changed, 396 insertions(+), 38 deletions(-) create mode 100644 libnmap/test/files/extra_ports.xml create mode 100644 libnmap/test/test_extraports.py diff --git a/libnmap/objects/host.py b/libnmap/objects/host.py index 99be06f..1058a8f 100644 --- a/libnmap/objects/host.py +++ b/libnmap/objects/host.py @@ -463,35 +463,13 @@ def id(self): return self.address @property - def extraports_state(self): + def extraports(self): """ - dictionnary containing state and amount of extra ports scanned - for which a common state, usually, closed was discovered. + Returns a list of NmapExtraPort objects - :return: dict with keys 'state' and 'count' or None + :return: list of NmapExtraPort objects """ - rval = None - _xports = self._extras.get('extraports', None) - - if _xports is not None: - rval = {'state': _xtrports['state'], 'count': _xtrports['count']} - - return rval - - @property - def extraports_reasons(self): - """ - dictionnary containing reasons why extra ports scanned - for which a common state, usually, closed was discovered. - - :return: array of dict containing keys 'state' and 'count' or None - """ - r = self._extras.get("extraports", {}) - - if r is None: - return None - - return r.get("reasons", None) + return self._extraports def get_dict(self): """ diff --git a/libnmap/objects/service.py b/libnmap/objects/service.py index a21b1af..ee5ea62 100644 --- a/libnmap/objects/service.py +++ b/libnmap/objects/service.py @@ -388,7 +388,7 @@ def __init__(self, xdict): self._reasons = xdict.get('reasons', []) @property - def count(self): + def extra_count(self): """ Accessor for the number of extraports @@ -397,7 +397,7 @@ def count(self): return int(self._count) @property - def state(self): + def extra_state(self): """ Accessor for the state of extraports listed @@ -406,11 +406,11 @@ def state(self): return self._state @property - def reason(self): + def extra_reasons(self): """ Return the first reason available for the extraport listed. :return: dict, empty if no extraports reason available """ - return self.reasons[0] if len(self.reasons) else {} + return self._reasons diff --git a/libnmap/parser.py b/libnmap/parser.py index 1c5be59..b714731 100644 --- a/libnmap/parser.py +++ b/libnmap/parser.py @@ -391,10 +391,6 @@ def _parse_xml_ports(cls, scanports_data): elif xservice.tag == "extraports": extraports = cls.__parse_extraports(xservice) rdict['extraports'].append(extraports) - # DEBUG REMOVE ME - else: - print "struct port unknown attr: %s value: %s" % - (h.tag, h.get(h.tag)) return rdict @classmethod @@ -477,10 +473,8 @@ def __parse_extraports(cls, extraports_data): xelement = cls.__format_element(extraports_data) extraports_dict = cls.__format_attributes(xelement) - if "state" in extraports_dict: - rdict["state"] = extraports_dict - if "count" in extraports_dict: - rdict["count"] = extraports_dict + rdict["state"] = extraports_dict.get("state", None) + rdict["count"] = extraports_dict.get("count", None) for xelt in xelement: if xelt.tag == "extrareasons": extrareasons_dict = cls.__format_attributes(xelt) diff --git a/libnmap/test/files/extra_ports.xml b/libnmap/test/files/extra_ports.xml new file mode 100644 index 0000000..26b650a --- /dev/null +++ b/libnmap/test/files/extra_ports.xml @@ -0,0 +1,350 @@ + + + + + + + + + + + + +cpe:/a:mysql:mysql:5.7.16 + + +cpe:/a:memcached:memcached:1.4.25 + + + + + + + + diff --git a/libnmap/test/test_extraports.py b/libnmap/test/test_extraports.py new file mode 100644 index 0000000..08552f1 --- /dev/null +++ b/libnmap/test/test_extraports.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import os +import unittest + +from libnmap.parser import NmapParser, NmapParserException + + +class TestExtraPorts(unittest.TestCase): + def setUp(self): + fdir = os.path.dirname(os.path.realpath(__file__)) + _extrareason = [{'reason': 'filtered', 'count': '3'}, {'reason': 'resets', 'count': '7'}] + self.flist = [ + {"path": "%s/%s" % (fdir, "files/extra_ports.xml"), "extrareason": _extrareason} + ] + + def test_extraports(self): + for fentry in self.flist: + rep1 = NmapParser.parse_fromfile(fentry["path"]) + ep_list = rep1.hosts[0].extraports + self.assertEqual(len(ep_list), 2) + self.assertEqual(ep_list[0].extra_count, 65509) + self.assertEqual(ep_list[0].extra_state, 'closed') + self.assertEqual(len(ep_list[0].extra_reasons), 1) + self.assertEqual(ep_list[1].extra_count, 10) + self.assertEqual(len(ep_list[1].extra_reasons), 2) + self.assertEqual(ep_list[1].extra_reasons, fentry["extrareason"]) + + +if __name__ == "__main__": + test_suite = [ + "test_extraports", + ] + suite = unittest.TestSuite(map(TestExtraPorts, test_suite)) + test_result = unittest.TextTestRunner(verbosity=2).run(suite) From 24d6013c304973d5dcd29ff48ccecc7a2bf717e0 Mon Sep 17 00:00:00 2001 From: Ronald Bister Date: Mon, 27 Jan 2025 23:07:06 +0100 Subject: [PATCH 3/5] fix: fixed pylint issues --- .pre-commit-config.yaml | 1 + libnmap/objects/__init__.py | 4 ++-- libnmap/objects/host.py | 2 +- libnmap/objects/service.py | 37 +++++++++++++++++---------------- libnmap/parser.py | 10 +++++---- libnmap/test/test_extraports.py | 12 ++++++++--- 6 files changed, 38 insertions(+), 28 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index cb54803..3e900c4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,3 +21,4 @@ repos: rev: 3.8.4 hooks: - id: flake8 + exclude: ^libnmap/(test/|docs/|examples/) diff --git a/libnmap/objects/__init__.py b/libnmap/objects/__init__.py index 9cafae9..889e1d3 100644 --- a/libnmap/objects/__init__.py +++ b/libnmap/objects/__init__.py @@ -2,6 +2,6 @@ from libnmap.objects.host import NmapHost from libnmap.objects.report import NmapReport -from libnmap.objects.service import NmapService, NmapExtraPort +from libnmap.objects.service import NmapExtraPort, NmapService -__all__ = ['NmapReport', 'NmapHost', 'NmapService', 'NmapExtraPort'] +__all__ = ["NmapReport", "NmapHost", "NmapService", "NmapExtraPort"] diff --git a/libnmap/objects/host.py b/libnmap/objects/host.py index 1058a8f..95734ea 100644 --- a/libnmap/objects/host.py +++ b/libnmap/objects/host.py @@ -38,7 +38,7 @@ def __init__( self._status = status if status is not None else {} self._services = services if services is not None else [] self._extras = extras if extras is not None else {} - self._extraports = self._extras.get('extraports', None) + self._extraports = self._extras.get("extraports", None) self._osfingerprinted = False self.os = None if "os" in self._extras: diff --git a/libnmap/objects/service.py b/libnmap/objects/service.py index ee5ea62..30c66f7 100644 --- a/libnmap/objects/service.py +++ b/libnmap/objects/service.py @@ -370,47 +370,48 @@ def diff(self, other): class NmapExtraPort(object): """ - NmapExtraPort is an object which documents unlisted ports/services - which are possibly closed, filtered, ignored,... + NmapExtraPort is an object which documents unlisted ports/services + which are possibly closed, filtered, ignored,... """ + def __init__(self, xdict): """ - Constructor - :param xdict: python dict containing the following structure: - { - 'state': , - 'count': , - 'reasons': [{'reason': , 'count' }] - } + Constructor + :param xdict: python dict containing the following structure: + { + 'state': , + 'count': , + 'reasons': [{'reason': , 'count' }] + } """ - self._count = xdict.get('count', 0) - self._state = xdict.get('state', 'unknown') - self._reasons = xdict.get('reasons', []) + self._count = xdict.get("count", 0) + self._state = xdict.get("state", "unknown") + self._reasons = xdict.get("reasons", []) @property def extra_count(self): """ - Accessor for the number of extraports + Accessor for the number of extraports - :return: int + :return: int """ return int(self._count) @property def extra_state(self): """ - Accessor for the state of extraports listed + Accessor for the state of extraports listed - :return: string + :return: string """ return self._state @property def extra_reasons(self): """ - Return the first reason available for the extraport listed. + Return the first reason available for the extraport listed. - :return: dict, empty if no extraports reason available + :return: dict, empty if no extraports reason available """ return self._reasons diff --git a/libnmap/parser.py b/libnmap/parser.py index b714731..9b12e12 100644 --- a/libnmap/parser.py +++ b/libnmap/parser.py @@ -8,8 +8,10 @@ import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET + from xml.etree.ElementTree import iselement as et_iselement -from libnmap.objects import NmapHost, NmapService, NmapReport, NmapExtraPort + +from libnmap.objects import NmapExtraPort, NmapHost, NmapReport, NmapService class NmapParser(object): @@ -383,14 +385,14 @@ def _parse_xml_ports(cls, scanports_data): xelement = cls.__format_element(scanports_data) - rdict = {'ports': [], 'extraports': []} + rdict = {"ports": [], "extraports": []} for xservice in xelement: if xservice.tag == "port": nport = cls._parse_xml_port(xservice) rdict["ports"].append(nport) elif xservice.tag == "extraports": extraports = cls.__parse_extraports(xservice) - rdict['extraports'].append(extraports) + rdict["extraports"].append(extraports) return rdict @classmethod @@ -478,7 +480,7 @@ def __parse_extraports(cls, extraports_data): for xelt in xelement: if xelt.tag == "extrareasons": extrareasons_dict = cls.__format_attributes(xelt) - rdict['reasons'].append(extrareasons_dict) + rdict["reasons"].append(extrareasons_dict) robj = NmapExtraPort(rdict) return robj diff --git a/libnmap/test/test_extraports.py b/libnmap/test/test_extraports.py index 08552f1..c40308b 100644 --- a/libnmap/test/test_extraports.py +++ b/libnmap/test/test_extraports.py @@ -10,9 +10,15 @@ class TestExtraPorts(unittest.TestCase): def setUp(self): fdir = os.path.dirname(os.path.realpath(__file__)) - _extrareason = [{'reason': 'filtered', 'count': '3'}, {'reason': 'resets', 'count': '7'}] + _extrareason = [ + {"reason": "filtered", "count": "3"}, + {"reason": "resets", "count": "7"}, + ] self.flist = [ - {"path": "%s/%s" % (fdir, "files/extra_ports.xml"), "extrareason": _extrareason} + { + "path": "%s/%s" % (fdir, "files/extra_ports.xml"), + "extrareason": _extrareason, + } ] def test_extraports(self): @@ -21,7 +27,7 @@ def test_extraports(self): ep_list = rep1.hosts[0].extraports self.assertEqual(len(ep_list), 2) self.assertEqual(ep_list[0].extra_count, 65509) - self.assertEqual(ep_list[0].extra_state, 'closed') + self.assertEqual(ep_list[0].extra_state, "closed") self.assertEqual(len(ep_list[0].extra_reasons), 1) self.assertEqual(ep_list[1].extra_count, 10) self.assertEqual(len(ep_list[1].extra_reasons), 2) From 1185c32a53e6afbae0b0152121321495f35647e9 Mon Sep 17 00:00:00 2001 From: Ronald Bister Date: Mon, 27 Jan 2025 23:11:12 +0100 Subject: [PATCH 4/5] fix: upgraded pyblack for cve CVE-2024-21503 --- .github/workflows/preflight_check.yaml | 4 ++-- .pre-commit-config.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/preflight_check.yaml b/.github/workflows/preflight_check.yaml index 5cf7b87..c9f52e3 100644 --- a/.github/workflows/preflight_check.yaml +++ b/.github/workflows/preflight_check.yaml @@ -28,7 +28,7 @@ jobs: uses: psf/black@stable with: options: "--check -l 79 --exclude docs/" - version: "22.8.0" + version: "24.3.0" - name: Format checker with isort run: isort --check-only -m 3 -l 79 --profile=black . - name: Lint with flake8 @@ -37,7 +37,7 @@ jobs: runs-on: ubuntu-22.04 strategy: matrix: - python-version: ["3.7", "3.8", "3.9", "3.10"] + python-version: ["3.8", "3.9", "3.10"] steps: - uses: actions/checkout@v4 - name: Setup Python ${{ matrix.python-version }} diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 3e900c4..339924e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,7 +7,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/psf/black - rev: 22.8.0 + rev: 24.3.0 hooks: - id: black args: [--line-length=79] From 00193b3c42563b3b447e86300777485618b80458 Mon Sep 17 00:00:00 2001 From: Ronald Bister Date: Tue, 28 Jan 2025 00:44:55 +0100 Subject: [PATCH 5/5] fix: simplified the extraports structs --- .pre-commit-config.yaml | 54 +++++++++++++++++++-------------- libnmap/objects/__init__.py | 4 +-- libnmap/objects/host.py | 5 +-- libnmap/objects/service.py | 49 ------------------------------ libnmap/parser.py | 11 +++---- libnmap/test/files/2_hosts.json | 2 +- libnmap/test/test_extraports.py | 18 ++++++----- libnmap/test/test_host.py | 19 ------------ 8 files changed, 53 insertions(+), 109 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 339924e..ab2e020 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,24 +1,34 @@ exclude: ^(test/|.tox/|docs) repos: -- repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.3.0 - hooks: - - id: check-yaml - - id: end-of-file-fixer - - id: trailing-whitespace -- repo: https://github.com/psf/black - rev: 24.3.0 - hooks: - - id: black - args: [--line-length=79] - files: ^libnmap -- repo: https://github.com/pre-commit/mirrors-isort - rev: v5.6.4 - hooks: - - id: isort - args: [--multi-line=3, --line-length=79, --profile=black] -- repo: https://gitlab.com/pycqa/flake8 - rev: 3.8.4 - hooks: - - id: flake8 - exclude: ^libnmap/(test/|docs/|examples/) +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v2.3.0 + hooks: + - id: check-yaml + - id: end-of-file-fixer + - id: trailing-whitespace +- repo: https://github.com/psf/black + rev: 24.3.0 + hooks: + - id: black + args: [--line-length=79] + files: ^libnmap +- repo: https://github.com/pre-commit/mirrors-isort + rev: v5.6.4 + hooks: + - id: isort + args: [--multi-line=3, --line-length=79, --profile=black] +- repo: https://gitlab.com/pycqa/flake8 + rev: 3.8.4 + hooks: + - id: flake8 + exclude: ^libnmap/(test/|docs/|examples/) +- repo: local + hooks: + - id: pytest-check + name: pytest-check + stages: [pre-commit] + types: [python] + entry: pytest --cov=libnmap/ --ignore=libnmap/test/test_backend_plugin_factory.py + language: system + pass_filenames: false + always_run: true diff --git a/libnmap/objects/__init__.py b/libnmap/objects/__init__.py index 889e1d3..ddf3699 100644 --- a/libnmap/objects/__init__.py +++ b/libnmap/objects/__init__.py @@ -2,6 +2,6 @@ from libnmap.objects.host import NmapHost from libnmap.objects.report import NmapReport -from libnmap.objects.service import NmapExtraPort, NmapService +from libnmap.objects.service import NmapService -__all__ = ["NmapReport", "NmapHost", "NmapService", "NmapExtraPort"] +__all__ = ["NmapReport", "NmapHost", "NmapService"] diff --git a/libnmap/objects/host.py b/libnmap/objects/host.py index 95734ea..dba1653 100644 --- a/libnmap/objects/host.py +++ b/libnmap/objects/host.py @@ -465,9 +465,10 @@ def id(self): @property def extraports(self): """ - Returns a list of NmapExtraPort objects + Returns a list of extraport dict with + with struct { count: "123", state: "filtered, extrareasons: [{}] } - :return: list of NmapExtraPort objects + :return: list of extraport dict """ return self._extraports diff --git a/libnmap/objects/service.py b/libnmap/objects/service.py index 30c66f7..e254a66 100644 --- a/libnmap/objects/service.py +++ b/libnmap/objects/service.py @@ -366,52 +366,3 @@ def diff(self, other): :return: NmapDiff object """ return NmapDiff(self, other) - - -class NmapExtraPort(object): - """ - NmapExtraPort is an object which documents unlisted ports/services - which are possibly closed, filtered, ignored,... - """ - - def __init__(self, xdict): - """ - Constructor - :param xdict: python dict containing the following structure: - { - 'state': , - 'count': , - 'reasons': [{'reason': , 'count' }] - } - """ - self._count = xdict.get("count", 0) - self._state = xdict.get("state", "unknown") - self._reasons = xdict.get("reasons", []) - - @property - def extra_count(self): - """ - Accessor for the number of extraports - - :return: int - """ - return int(self._count) - - @property - def extra_state(self): - """ - Accessor for the state of extraports listed - - :return: string - """ - return self._state - - @property - def extra_reasons(self): - """ - Return the first reason available for the extraport listed. - - :return: dict, empty if no extraports reason available - """ - - return self._reasons diff --git a/libnmap/parser.py b/libnmap/parser.py index 9b12e12..e657d1c 100644 --- a/libnmap/parser.py +++ b/libnmap/parser.py @@ -11,7 +11,7 @@ from xml.etree.ElementTree import iselement as et_iselement -from libnmap.objects import NmapExtraPort, NmapHost, NmapReport, NmapService +from libnmap.objects import NmapHost, NmapReport, NmapService class NmapParser(object): @@ -469,9 +469,9 @@ def __parse_extraports(cls, extraports_data): :param extraports_data: XML data for extraports :type extraports_data: xml.ElementTree.Element or a string - :return: python dict with following keys: state, count, reason + :return: python dict with following keys: state, count, reasons """ - rdict = {"state": "", "count": "", "reasons": []} + rdict = {"state": "", "count": "", "extrareasons": []} xelement = cls.__format_element(extraports_data) extraports_dict = cls.__format_attributes(xelement) @@ -480,9 +480,8 @@ def __parse_extraports(cls, extraports_data): for xelt in xelement: if xelt.tag == "extrareasons": extrareasons_dict = cls.__format_attributes(xelt) - rdict["reasons"].append(extrareasons_dict) - robj = NmapExtraPort(rdict) - return robj + rdict["extrareasons"].append(extrareasons_dict) + return rdict @classmethod def __parse_script_table(cls, script_table): diff --git a/libnmap/test/files/2_hosts.json b/libnmap/test/files/2_hosts.json index d6e1727..985f293 100644 --- a/libnmap/test/files/2_hosts.json +++ b/libnmap/test/files/2_hosts.json @@ -1 +1 @@ -{"__NmapReport__": {"_nmaprun": {"scanner": "nmap", "args": "nmap -sS -vv -oX 2_hosts.xml localhost scanme.nmap.org", "start": "1361737906", "startstr": "Sun Feb 24 21:31:46 2013", "version": "5.51", "xmloutputversion": "1.03"}, "_scaninfo": {"type": "syn", "protocol": "tcp", "numservices": "1000", "services": "1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389"}, "_hosts": [{"__NmapHost__": {"_starttime": "1361737906", "_endtime": "1361737906", "_hostnames": ["localhost", "localhost"], "_status": {"state": "up", "reason": "localhost-response"}, "_services": [{"__NmapService__": {"_portid": 22, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "ssh", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 25, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "smtp", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 111, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "rpcbind", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 631, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "ipp", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 3306, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "mysql", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}], "_extras": {"extraports": {"state": {"state": "closed", "count": "995"}, "count": {"state": "closed", "count": "995"}, "reasons": [{"reason": "resets", "count": "995"}]}, "times": {"srtt": "7", "rttvar": "0", "to": "100000"}}, "_osfingerprinted": false, "os": {"__NmapOSFingerprint__": {"_NmapOSFingerprint__osmatches": [], "_NmapOSFingerprint__ports_used": [], "_NmapOSFingerprint__fingerprints": []}}, "_ipv4_addr": "127.0.0.1", "_ipv6_addr": null, "_mac_addr": null, "_vendor": null, "_main_address": "127.0.0.1", "_address": [{"addr": "127.0.0.1", "addrtype": "ipv4"}]}}, {"__NmapHost__": {"_starttime": "1361737906", "_endtime": "1361738040", "_hostnames": ["scanme.nmap.org", "scanme.nmap.org"], "_status": {"state": "up", "reason": "echo-reply"}, "_services": [{"__NmapService__": {"_portid": 22, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "53"}, "_service": {"name": "ssh", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "53", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 25, "_protocol": "tcp", "_state": {"state": "filtered", "reason": "admin-prohibited", "reason_ttl": "253", "reason_ip": "109.133.192.1"}, "_service": {"name": "smtp", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "admin-prohibited", "_reason_ip": "109.133.192.1", "_reason_ttl": "253", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 80, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "51"}, "_service": {"name": "http", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "51", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 9929, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "53"}, "_service": {"name": "nping-echo", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "53", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}], "_extras": {"extraports": {"state": {"state": "closed", "count": "996"}, "count": {"state": "closed", "count": "996"}, "reasons": [{"reason": "resets", "count": "996"}]}, "times": {"srtt": "177425", "rttvar": "1981", "to": "185349"}}, "_osfingerprinted": false, "os": {"__NmapOSFingerprint__": {"_NmapOSFingerprint__osmatches": [], "_NmapOSFingerprint__ports_used": [], "_NmapOSFingerprint__fingerprints": []}}, "_ipv4_addr": "74.207.244.221", "_ipv6_addr": null, "_mac_addr": null, "_vendor": null, "_main_address": "74.207.244.221", "_address": [{"addr": "74.207.244.221", "addrtype": "ipv4"}]}}], "_runstats": {"finished": {"time": "1361738040", "timestr": "Sun Feb 24 21:34:00 2013", "elapsed": "134.36", "summary": "Nmap done at Sun Feb 24 21:34:00 2013; 2 IP addresses (2 hosts up) scanned in 134.36 seconds", "exit": "success"}, "hosts": {"up": "2", "down": "0", "total": "2"}}}} +{"__NmapReport__": {"_nmaprun": {"scanner": "nmap", "args": "nmap -sS -vv -oX 2_hosts.xml localhost scanme.nmap.org", "start": "1361737906", "startstr": "Sun Feb 24 21:31:46 2013", "version": "5.51", "xmloutputversion": "1.03"}, "_scaninfo": {"type": "syn", "protocol": "tcp", "numservices": "1000", "services": "1,3-4,6-7,9,13,17,19-26,30,32-33,37,42-43,49,53,70,79-85,88-90,99-100,106,109-111,113,119,125,135,139,143-144,146,161,163,179,199,211-212,222,254-256,259,264,280,301,306,311,340,366,389,406-407,416-417,425,427,443-445,458,464-465,481,497,500,512-515,524,541,543-545,548,554-555,563,587,593,616-617,625,631,636,646,648,666-668,683,687,691,700,705,711,714,720,722,726,749,765,777,783,787,800-801,808,843,873,880,888,898,900-903,911-912,981,987,990,992-993,995,999-1002,1007,1009-1011,1021-1100,1102,1104-1108,1110-1114,1117,1119,1121-1124,1126,1130-1132,1137-1138,1141,1145,1147-1149,1151-1152,1154,1163-1166,1169,1174-1175,1183,1185-1187,1192,1198-1199,1201,1213,1216-1218,1233-1234,1236,1244,1247-1248,1259,1271-1272,1277,1287,1296,1300-1301,1309-1311,1322,1328,1334,1352,1417,1433-1434,1443,1455,1461,1494,1500-1501,1503,1521,1524,1533,1556,1580,1583,1594,1600,1641,1658,1666,1687-1688,1700,1717-1721,1723,1755,1761,1782-1783,1801,1805,1812,1839-1840,1862-1864,1875,1900,1914,1935,1947,1971-1972,1974,1984,1998-2010,2013,2020-2022,2030,2033-2035,2038,2040-2043,2045-2049,2065,2068,2099-2100,2103,2105-2107,2111,2119,2121,2126,2135,2144,2160-2161,2170,2179,2190-2191,2196,2200,2222,2251,2260,2288,2301,2323,2366,2381-2383,2393-2394,2399,2401,2492,2500,2522,2525,2557,2601-2602,2604-2605,2607-2608,2638,2701-2702,2710,2717-2718,2725,2800,2809,2811,2869,2875,2909-2910,2920,2967-2968,2998,3000-3001,3003,3005-3007,3011,3013,3017,3030-3031,3052,3071,3077,3128,3168,3211,3221,3260-3261,3268-3269,3283,3300-3301,3306,3322-3325,3333,3351,3367,3369-3372,3389-3390,3404,3476,3493,3517,3527,3546,3551,3580,3659,3689-3690,3703,3737,3766,3784,3800-3801,3809,3814,3826-3828,3851,3869,3871,3878,3880,3889,3905,3914,3918,3920,3945,3971,3986,3995,3998,4000-4006,4045,4111,4125-4126,4129,4224,4242,4279,4321,4343,4443-4446,4449,4550,4567,4662,4848,4899-4900,4998,5000-5004,5009,5030,5033,5050-5051,5054,5060-5061,5080,5087,5100-5102,5120,5190,5200,5214,5221-5222,5225-5226,5269,5280,5298,5357,5405,5414,5431-5432,5440,5500,5510,5544,5550,5555,5560,5566,5631,5633,5666,5678-5679,5718,5730,5800-5802,5810-5811,5815,5822,5825,5850,5859,5862,5877,5900-5904,5906-5907,5910-5911,5915,5922,5925,5950,5952,5959-5963,5987-5989,5998-6007,6009,6025,6059,6100-6101,6106,6112,6123,6129,6156,6346,6389,6502,6510,6543,6547,6565-6567,6580,6646,6666-6669,6689,6692,6699,6779,6788-6789,6792,6839,6881,6901,6969,7000-7002,7004,7007,7019,7025,7070,7100,7103,7106,7200-7201,7402,7435,7443,7496,7512,7625,7627,7676,7741,7777-7778,7800,7911,7920-7921,7937-7938,7999-8002,8007-8011,8021-8022,8031,8042,8045,8080-8090,8093,8099-8100,8180-8181,8192-8194,8200,8222,8254,8290-8292,8300,8333,8383,8400,8402,8443,8500,8600,8649,8651-8652,8654,8701,8800,8873,8888,8899,8994,9000-9003,9009-9011,9040,9050,9071,9080-9081,9090-9091,9099-9103,9110-9111,9200,9207,9220,9290,9415,9418,9485,9500,9502-9503,9535,9575,9593-9595,9618,9666,9876-9878,9898,9900,9917,9929,9943-9944,9968,9998-10004,10009-10010,10012,10024-10025,10082,10180,10215,10243,10566,10616-10617,10621,10626,10628-10629,10778,11110-11111,11967,12000,12174,12265,12345,13456,13722,13782-13783,14000,14238,14441-14442,15000,15002-15004,15660,15742,16000-16001,16012,16016,16018,16080,16113,16992-16993,17877,17988,18040,18101,18988,19101,19283,19315,19350,19780,19801,19842,20000,20005,20031,20221-20222,20828,21571,22939,23502,24444,24800,25734-25735,26214,27000,27352-27353,27355-27356,27715,28201,30000,30718,30951,31038,31337,32768-32785,33354,33899,34571-34573,35500,38292,40193,40911,41511,42510,44176,44442-44443,44501,45100,48080,49152-49161,49163,49165,49167,49175-49176,49400,49999-50003,50006,50300,50389,50500,50636,50800,51103,51493,52673,52822,52848,52869,54045,54328,55055-55056,55555,55600,56737-56738,57294,57797,58080,60020,60443,61532,61900,62078,63331,64623,64680,65000,65129,65389"}, "_hosts": [{"__NmapHost__": {"_starttime": "1361737906", "_endtime": "1361737906", "_hostnames": ["localhost", "localhost"], "_status": {"state": "up", "reason": "localhost-response"}, "_services": [{"__NmapService__": {"_portid": 22, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "ssh", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 25, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "smtp", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 111, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "rpcbind", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 631, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "ipp", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 3306, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "64"}, "_service": {"name": "mysql", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "64", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}], "_extras": {"extraports": [{"state": "closed", "count": "995", "extrareasons": [{"reason": "resets", "count": "995"}]}], "times": {"srtt": "7", "rttvar": "0", "to": "100000"}}, "_extraports": [{"state": "closed", "count": "995", "extrareasons": [{"reason": "resets", "count": "995"}]}], "_osfingerprinted": false, "os": {"__NmapOSFingerprint__": {"_NmapOSFingerprint__osmatches": [], "_NmapOSFingerprint__ports_used": [], "_NmapOSFingerprint__fingerprints": []}}, "_ipv4_addr": "127.0.0.1", "_ipv6_addr": null, "_mac_addr": null, "_vendor": null, "_main_address": "127.0.0.1", "_address": [{"addr": "127.0.0.1", "addrtype": "ipv4"}]}}, {"__NmapHost__": {"_starttime": "1361737906", "_endtime": "1361738040", "_hostnames": ["scanme.nmap.org", "scanme.nmap.org"], "_status": {"state": "up", "reason": "echo-reply"}, "_services": [{"__NmapService__": {"_portid": 22, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "53"}, "_service": {"name": "ssh", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "53", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 25, "_protocol": "tcp", "_state": {"state": "filtered", "reason": "admin-prohibited", "reason_ttl": "253", "reason_ip": "109.133.192.1"}, "_service": {"name": "smtp", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "admin-prohibited", "_reason_ip": "109.133.192.1", "_reason_ttl": "253", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 80, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "51"}, "_service": {"name": "http", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "51", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}, {"__NmapService__": {"_portid": 9929, "_protocol": "tcp", "_state": {"state": "open", "reason": "syn-ack", "reason_ttl": "53"}, "_service": {"name": "nping-echo", "method": "table", "conf": "3", "cpelist": []}, "_cpelist": [], "_owner": "", "_reason": "syn-ack", "_reason_ip": "", "_reason_ttl": "53", "_servicefp": "", "_tunnel": "", "_service_extras": {"scripts": []}}}], "_extras": {"extraports": [{"state": "closed", "count": "996", "extrareasons": [{"reason": "resets", "count": "996"}]}], "times": {"srtt": "177425", "rttvar": "1981", "to": "185349"}}, "_extraports": [{"state": "closed", "count": "996", "extrareasons": [{"reason": "resets", "count": "996"}]}], "_osfingerprinted": false, "os": {"__NmapOSFingerprint__": {"_NmapOSFingerprint__osmatches": [], "_NmapOSFingerprint__ports_used": [], "_NmapOSFingerprint__fingerprints": []}}, "_ipv4_addr": "74.207.244.221", "_ipv6_addr": null, "_mac_addr": null, "_vendor": null, "_main_address": "74.207.244.221", "_address": [{"addr": "74.207.244.221", "addrtype": "ipv4"}]}}], "_runstats": {"finished": {"time": "1361738040", "timestr": "Sun Feb 24 21:34:00 2013", "elapsed": "134.36", "summary": "Nmap done at Sun Feb 24 21:34:00 2013; 2 IP addresses (2 hosts up) scanned in 134.36 seconds", "exit": "success"}, "hosts": {"up": "2", "down": "0", "total": "2"}}}} diff --git a/libnmap/test/test_extraports.py b/libnmap/test/test_extraports.py index c40308b..c52a17a 100644 --- a/libnmap/test/test_extraports.py +++ b/libnmap/test/test_extraports.py @@ -10,14 +10,14 @@ class TestExtraPorts(unittest.TestCase): def setUp(self): fdir = os.path.dirname(os.path.realpath(__file__)) - _extrareason = [ + _extrareasons = [ {"reason": "filtered", "count": "3"}, {"reason": "resets", "count": "7"}, ] self.flist = [ { "path": "%s/%s" % (fdir, "files/extra_ports.xml"), - "extrareason": _extrareason, + "extrareasons": _extrareasons, } ] @@ -26,12 +26,14 @@ def test_extraports(self): rep1 = NmapParser.parse_fromfile(fentry["path"]) ep_list = rep1.hosts[0].extraports self.assertEqual(len(ep_list), 2) - self.assertEqual(ep_list[0].extra_count, 65509) - self.assertEqual(ep_list[0].extra_state, "closed") - self.assertEqual(len(ep_list[0].extra_reasons), 1) - self.assertEqual(ep_list[1].extra_count, 10) - self.assertEqual(len(ep_list[1].extra_reasons), 2) - self.assertEqual(ep_list[1].extra_reasons, fentry["extrareason"]) + self.assertEqual(ep_list[0]["count"], "65509") + self.assertEqual(ep_list[0]["state"], "closed") + self.assertEqual(len(ep_list[0]["extrareasons"]), 1) + self.assertEqual(ep_list[1]["count"], "10") + self.assertEqual(len(ep_list[1]["extrareasons"]), 2) + self.assertEqual( + ep_list[1]["extrareasons"], fentry["extrareasons"] + ) if __name__ == "__main__": diff --git a/libnmap/test/test_host.py b/libnmap/test/test_host.py index d192f32..0dff34d 100644 --- a/libnmap/test/test_host.py +++ b/libnmap/test/test_host.py @@ -181,25 +181,6 @@ def test_host_api(self): self.assertEqual(len(h2.get_open_ports()), 3) self.assertEqual(h2.get_service(22, "tcp").state, "open") - def test_extra_ports(self): - h1 = NmapParser.parse(host1) - h2 = NmapParser.parse(host2) - - self.assertEqual( - h1.extraports_state["state"], - {"count": "995", "state": "WILLY_WONCKA"}, - ) - self.assertEqual( - h1.extraports_reasons, [{"reason": "conn-refused", "count": "995"}] - ) - - self.assertEqual( - h2.extraports_state["state"], {"count": "995", "state": "closed"} - ) - self.assertEqual( - h2.extraports_reasons, [{"reason": "conn-refused", "count": "995"}] - ) - def test_diff_host(self): h1 = NmapParser.parse(host1) h2 = NmapParser.parse(host2)