42-archive/nmap/srcs/main.c
Jack Halford c5a9ac9970 stuff
2017-08-25 19:17:46 +02:00

60 lines
1.2 KiB
C

#include "nmap.h"
#define NMAP_USAGE1 " [--ip HOST] [--file FILE]"
#define NMAP_USAGE2 " [--ports PORTS] [--speedup [NOMBRE]] [--scan [TYPE]] HOST"
static t_cliopts g_opts[] =
{
{'i', "ip", 0, 0, nmap_get_host, 0},
/* {'f', "file", 0, 0, nmap_get_file, 0}, */
/* {'p', "ports", 0, 0, nmap_get_ports, 0}, */
{'t', "threads", 0, 0, nmap_get_threads, 0},
{'s', "scan", 0, 0, nmap_get_scan, 0},
{0, 0, 0, 0, 0, 0},
};
int nmap_parse(int ac, char **av, t_data *data)
{
(void)ac;
data->host = NULL;
data->port = 0;
data->threads = 0;
data->scan = 0;
if (cliopts_get(av, g_opts, data))
return (ft_perror("nmap"));
if (!data->host && data->av_data && data->av_data)
nmap_get_host(*data->av_data, data);
if (!data->scan)
data->scan = SCAN_TCP;
return (0);
}
int main(int ac, char **av)
{
t_data data;
if (getuid() != 0)
{
fprintf(stderr, "You must have root privileges to use nmap!\n");
return(1);
}
if (nmap_parse(ac, av, &data))
{
printf("usage: nmap --help\n");
printf("or nmap"NMAP_USAGE1 NMAP_USAGE2"\n");
exit(1);
}
if (reserve_port(&data.src_port))
{
fprintf(stderr, "couldn't reserve port\n");
exit(1);
}
pthread_t listener;
pthread_create(&listener, NULL, &nmap_listener, &data);
nmap(&data);
return (0);
}