Esempio n. 1
0
    async def _scan_ports(self, scan_only, ports):

        port_range_allow = NmapTool.ports_from_list(tcp=cfg['portdetection.tcp.ports.include'],
                                                    udp=cfg['portdetection.udp.ports.include'])

        port_range_deny = NmapTool.ports_from_list(tcp=cfg['portdetection.tcp.ports.exclude'],
                                                   udp=cfg['portdetection.udp.ports.exclude'])

        ports = [port for port in ports if port.in_range(port_range_allow) and not port.in_range(port_range_deny)]

        self.context.add_task(Executor(context=self.context, nodes=[], ports=ports, scan_only=scan_only),
                              manager=TaskManagerType.QUICK)
Esempio n. 2
0
    def test_ports_from_list(self):
        tcp = ['14', '16-18']
        udp = ['87', '34-36']
        sctp = ['19', '25-28']

        expected = {
            TransportProtocol.TCP: {14, 16, 17, 18},
            TransportProtocol.UDP: {87, 34, 35, 36},
            TransportProtocol.SCTP: {19, 25, 26, 27, 28}
        }

        result = NmapTool.ports_from_list(tcp=tcp, udp=udp, sctp=sctp)
        self.assertEqual(result, expected)
Esempio n. 3
0
    async def scan_ports(self, nodes):
        include_ports = NmapTool.ports_from_list(
            tcp=cfg['portdetection.tcp.ports.include']).get(
                TransportProtocol.TCP)
        exclude_ports = NmapTool.ports_from_list(
            tcp=cfg['portdetection.tcp.ports.exclude']).get(
                TransportProtocol.TCP)

        ports = list(include_ports - exclude_ports)

        task = {str(node.ip): ports_to_string(set(ports)) for node in nodes}

        try:
            found_ports = await self.portscan.send(task)
        except PortscanError as exception:
            log.error("Error during performing scan: %s", exception)
            found_ports = {}

        return list({
            Port(number=port,
                 node=node,
                 transport_protocol=TransportProtocol.TCP)
            for node in nodes for port in found_ports.get(str(node.ip), [])
        })