Esempio n. 1
0
    async def prepare_args(self, nodes):
        """
        Prepare args for command execution

        Args:
            nodes (list): nodes from scanning

        Returns:
            list

        """
        args = list(cfg['tools.masscan.args'])

        rate = self.scan_rate()

        args.extend(['--rate', rate])

        include_ports = NmapTool.list_to_ports_string(
            tcp=self.tcp and cfg['portdetection.tcp.ports.include'],
            udp=self.udp and cfg['portdetection.udp.ports.include'])

        exclude_ports = NmapTool.list_to_ports_string(
            tcp=self.tcp and cfg['portdetection.tcp.ports.exclude'],
            udp=self.udp and cfg['portdetection.udp.ports.exclude'])

        if not include_ports:
            raise StopCommandException("No ports for scan")
        args.extend(['--ports', include_ports])

        if exclude_ports:
            args.extend(['--exclude-ports', exclude_ports])

        args.extend([str(node.ip) for node in nodes])

        return args
Esempio n. 2
0
    async def prepare_args(self, nodes):
        args = ['-Pn']

        rate = self.scan_rate()

        if rate == '0':
            raise StopCommandException(
                "Cancel scan due to low throttling rate")

        if self.ipv6:
            args.append('-6')

        if self.tcp:
            args.extend([
                '-sS', '--host-timeout',
                str(parse_period(str(cfg['portdetection.tcp.host_timeout'])))
            ])

        if self.udp:
            if cfg['portdetection.udp.defeat_icmp_ratelimit']:
                args.extend(('--min-rate', rate, '--defeat-icmp-ratelimit'))

            args.extend(('-sU', '--max-retries',
                         str(cfg['portdetection.udp.max_retries'])))

        scripts_dir = cfg['tools.nmap.scripts_dir']

        if scripts_dir:
            args.extend(["--datadir", scripts_dir])

        include_ports = NmapTool.list_to_ports_string(
            tcp=self.tcp and cfg['portdetection.tcp.ports.include'],
            udp=self.udp and cfg['portdetection.udp.ports.include'])

        exclude_ports = NmapTool.list_to_ports_string(
            tcp=self.tcp and cfg['portdetection.tcp.ports.exclude'],
            udp=self.udp and cfg['portdetection.udp.ports.exclude'])

        if not include_ports:
            raise StopCommandException("No ports for scan")
        args.extend(['-p', include_ports])

        if exclude_ports:
            args.extend(['--exclude-ports', exclude_ports])

        args.extend(('--max-rate', rate))

        args.extend([str(node.ip) for node in nodes])
        return args
Esempio n. 3
0
    def test_list_to_ports(self):
        tcp = [14, '16-18']
        udp = [87, '34-36']
        sctp = [19, '25-28']

        expected = 'T:14,16-18,U:87,34-36,S:19,25-28'
        result = NmapTool.list_to_ports_string(tcp=tcp, udp=udp, sctp=sctp)

        self.assertEqual(result, expected)