import unittest from unittest.mock import patch from librenet_scanner.models import Host from librenet_scanner.parsers import parse_nmap_xml from librenet_scanner.privileged_helper import command_for class OsFingerprint0410Tests(unittest.TestCase): def test_deep_hosts_forces_guess_and_does_not_limit_os_scan(self): with patch("librenet_scanner.privileged_helper._trusted_binary", return_value="/usr/bin/nmap"): cmd = command_for("nmap-deep-hosts", ["192.168.10.254"]) self.assertIn("-O", cmd) self.assertIn("--osscan-guess", cmd) self.assertNotIn("--osscan-limit", cmd) self.assertIn("--top-ports", cmd) self.assertIn("1000", cmd) self.assertNotIn("-p-", cmd) def test_detailed_host_forces_guess_without_full_port_scan(self): with patch("librenet_scanner.privileged_helper._trusted_binary", return_value="/usr/bin/nmap"): cmd = command_for("nmap-host", ["192.168.10.254"]) self.assertIn("--osscan-guess", cmd) self.assertNotIn("--osscan-limit", cmd) self.assertNotIn("-p-", cmd) def test_parser_keeps_best_os_guess(self): xml = """
""" host = parse_nmap_xml(xml)[0] self.assertEqual(host.os_name, "FreeBSD 11.2-RELEASE") self.assertEqual(host.os_accuracy, 93) self.assertTrue(host.os_is_estimated) def test_100_percent_os_match_is_not_marked_estimated(self): host = Host(ip="192.168.1.1", os_name="Linux 6.x", os_accuracy=100) self.assertFalse(host.os_is_estimated) if __name__ == "__main__": unittest.main()