diff options
author | Achim Gottinger <achim@gentoo.org> | 2000-11-25 13:13:30 +0000 |
---|---|---|
committer | Achim Gottinger <achim@gentoo.org> | 2000-11-25 13:13:30 +0000 |
commit | 42fb48565fe58ed3ac5606ea9d243f4239657dbc (patch) | |
tree | 271e5cd14f1ce8b83bdd62b05db0974974a54d56 /net-analyzer/nmap | |
parent | *** empty log message *** (diff) | |
download | gentoo-2-42fb48565fe58ed3ac5606ea9d243f4239657dbc.tar.gz gentoo-2-42fb48565fe58ed3ac5606ea9d243f4239657dbc.tar.bz2 gentoo-2-42fb48565fe58ed3ac5606ea9d243f4239657dbc.zip |
*** empty log message ***
Diffstat (limited to 'net-analyzer/nmap')
-rw-r--r-- | net-analyzer/nmap/files/digest-nmap-2.53-r2 | 1 | ||||
-rw-r--r-- | net-analyzer/nmap/files/nmap.h | 379 | ||||
-rw-r--r-- | net-analyzer/nmap/files/tcpip.h | 367 | ||||
-rw-r--r-- | net-analyzer/nmap/nmap-2.53-r2.ebuild | 43 |
4 files changed, 790 insertions, 0 deletions
diff --git a/net-analyzer/nmap/files/digest-nmap-2.53-r2 b/net-analyzer/nmap/files/digest-nmap-2.53-r2 new file mode 100644 index 000000000000..6602d0ddf092 --- /dev/null +++ b/net-analyzer/nmap/files/digest-nmap-2.53-r2 @@ -0,0 +1 @@ +MD5 592ace3a758e31740d70d7ce4a2dd21c nmap-2.53.tgz diff --git a/net-analyzer/nmap/files/nmap.h b/net-analyzer/nmap/files/nmap.h new file mode 100644 index 000000000000..4242fcc57331 --- /dev/null +++ b/net-analyzer/nmap/files/nmap.h @@ -0,0 +1,379 @@ +#ifndef NMAP_H +#define NMAP_H + +/************************INCLUDES**********************************/ + + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <unistd.h> +#ifdef HAVE_GETOPT_H +#include <getopt.h> +#else +/* The next half-dozen lines are from gcc-2.95 ... -Fyodor */ +/* Include getopt.h for the sake of getopt_long. + We don't need the declaration of getopt, and it could conflict + with something from a system header file, so effectively nullify that. */ +#define getopt getopt_loser +#include "getopt.h" +#undef getopt +#endif + +#ifdef STDC_HEADERS +#include <stdlib.h> +#else +void *malloc(); +void *realloc(); +#endif + +#if STDC_HEADERS || HAVE_STRING_H +#include <string.h> +#if !STDC_HEADERS && HAVE_MEMORY_H +#include <memory.h> +#endif +#endif +#if HAVE_STRINGS_H +#include <strings.h> +#endif + +#ifdef HAVE_BSTRING_H +#include <bstring.h> +#endif + +#ifndef HAVE_BZERO +#define bzero(s, n) memset((s), 0, (n)) +#endif + +#ifndef HAVE_MEMCPY +#define memcpy(d, s, n) bcopy((s), (d), (n)) +#endif + +#include <ctype.h> +#include <sys/types.h> + +#include <sys/wait.h> + +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> /* Defines MAXHOSTNAMELEN on BSD*/ +#endif + +/* Linux uses these defines in netinet/ip.h and netinet/tcp.h to + use the correct struct ip and struct tcphdr */ +#ifndef __FAVOR_BSD +#define __FAVOR_BSD +#endif +#ifndef __USE_BSD +#define __USE_BSD +#endif +#ifndef __BSD_SOURCE +#define __BSD_SOURCE +#endif + +/* BSDI needs this to insure the correct struct ip */ +#undef _IP_VHL + +#if HAVE_STRINGS_H +#include <strings.h> +#endif + +#include <stdio.h> +#include <rpc/types.h> +#include <sys/socket.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <netinet/in.h> +#include <errno.h> +#include <netdb.h> + +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + +#include <fcntl.h> +#include <signal.h> +#include <signal.h> +#include <stdarg.h> +#include <pwd.h> +#ifndef NETINET_IN_SYSTEM_H /* why the HELL does OpenBSD not do this? */ +#include <netinet/in_systm.h> /* defines n_long needed for netinet/ip.h */ +#define NETINET_IN_SYSTEM_H +#endif +#ifndef NETINET_IP_H /* why the HELL does OpenBSD not do this? */ +#include <netinet/ip.h> +#define NETINET_IP_H +#endif +#include <netinet/ip_icmp.h> +#include <arpa/inet.h> +#include <math.h> +#include <assert.h> +#ifndef __FAVOR_BSD +#define __FAVOR_BSD +#endif +#ifndef NETINET_TCP_H /* why the HELL does OpenBSD not do this? */ +#include <netinet/tcp.h> /*#include <netinet/ip_tcp.h>*/ +#define NETINET_TCP_H +#endif +#include <sys/resource.h> +/*#include <net/if_arp.h> *//* defines struct arphdr needed for if_ether.h */ +#ifndef NET_IF_H /* why the HELL does OpenBSD not do this? */ +#include <net/if.h> +#define NET_IF_H +#endif +#if HAVE_NETINET_IF_ETHER_H +#ifndef NETINET_IF_ETHER_H +#include <netinet/if_ether.h> +#define NETINET_IF_ETHER_H +#endif /* NETINET_IF_ETHER_H */ +#endif /* HAVE_NETINET_IF_ETHER_H */ + +#if !HAVE_VSNPRINTF +#define vsnprintf(str, n, format, ap) vsprintf(str, format, ap) +#endif + + +/******* DEFINES ************/ + +/* User configurable #defines: */ +#ifndef VERSION +#define VERSION "1.60-Beta" +#endif +#ifndef DEBUGGING +#define DEBUGGING 0 +#endif +/* Default number of ports in parallel. Doesn't always involve actual + sockets. Can also adjust with the -M command line option. */ +#define MAX_SOCKETS 36 +/* As an optimisation we limit the maximum value of MAX_SOCKETS to a very + high value (avoids dynamic memmory allocation */ +#define MAX_SOCKETS_ALLOWED 1025 +/* How many hosts do we ping in parallel to see if they are up? */ +#define LOOKAHEAD 25 +/* If reads of a UDP port keep returning EAGAIN (errno 13), do we want to + count the port as valid? */ +#define RISKY_UDP_SCAN 0 +/* How many syn packets do we send to TCP sequence a host? */ +#define NUM_SEQ_SAMPLES 6 + /* This ideally should be a port that isn't in use for any protocol on our machine or on the target */ +#define MAGIC_PORT 49724 +/* How many udp sends without a ICMP port unreachable error does it take before we consider the port open? */ +#define UDP_MAX_PORT_RETRIES 4 + /*How many seconds before we give up on a host being alive? */ + +#define FAKE_ARGV "pine" /* What ps and w should show if you use -q */ +/* How do we want to log into ftp sites for */ +#define FTPUSER "anonymous" +#define FTPPASS "-wwwuser@" +#define FTP_RETRIES 2 /* How many times should we relogin if we lose control + connection? */ +#define MAX_TIMEOUTS MAX_SOCKETS /* How many timed out connection attempts + in a row before we decide the host is + dead? */ +#define MAX_DECOYS 128 /* How many decoys are allowed? */ + +#ifndef MAX_RTT_TIMEOUT +#define MAX_RTT_TIMEOUT 10000 /* Never allow more than 10 secs for packet round + trip */ +#endif + +#ifndef MIN_RTT_TIMEOUT +#define MIN_RTT_TIMEOUT 300 /* We will always wait at least 300 ms for a response */ +#endif + +#define INITIAL_RTT_TIMEOUT 6000 /* Allow 6 seconds at first for packet responses */ +#define HOST_TIMEOUT 0 /* By default allow unlimited time to scan each host */ + +/* If nmap is called with one of the names below, it will start up in interactive mode -- alternatively, you can rename Nmap any of the following names to have it start up interactivey by default. */ +#define INTERACTIVE_NAMES { "BitchX", "Calendar", "X", "awk", "bash", "bash2", "calendar", "cat", "csh", "elm", "emacs", "ftp", "fvwm", "g++", "gcc", "gimp", "httpd", "irc", "man", "mutt", "nc", "ncftp", "netscape", "perl", "pine", "ping", "sleep", "slirp", "ssh", "sshd", "startx", "tcsh", "telnet", "telnetd", "tia", "top", "vi", "vim", "xdvi", "xemacs", "xterm", "xv" } + +/* Number of hosts we pre-ping and then scan. We do a lot more if + randomize_hosts is set. Every one you add to this leads to ~1K of + extra always-resident memory in nmap */ +#define HOST_GROUP_SZ 256 + +/* DO NOT change stuff after this point */ +#define UC(b) (((int)b)&0xff) +#define SA struct sockaddr /*Ubertechnique from R. Stevens */ +/*#define fatal(x) { fprintf(stderr, "%s\n", x); exit(-1); } + #define error(x) fprintf(stderr, "%s\n", x);*/ +/* hoststruct->flags stuff */ +#define HOST_UP 1 +#define HOST_DOWN 2 +#define HOST_FIREWALLED 4 +#define HOST_BROADCAST 8 /* use the wierd_responses member of hoststruct instead */ + +#define PINGTYPE_UNKNOWN 0 +#define PINGTYPE_NONE 1 +#define PINGTYPE_ICMP 2 +#define PINGTYPE_TCP 4 +#define PINGTYPE_TCP_USE_ACK 8 +#define PINGTYPE_TCP_USE_SYN 16 +#define PINGTYPE_RAWTCP 32 +#define PINGTYPE_CONNECTTCP 64 + +#define SEQ_UNKNOWN 0 +#define SEQ_64K 1 +#define SEQ_TD 2 +#define SEQ_RI 4 +#define SEQ_TR 8 +#define SEQ_i800 16 +#define SEQ_CONSTANT 32 + +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 64 +#endif + +#ifndef BSDFIX +#if FREEBSD || BSDI || NETBSD +#define BSDFIX(x) x +#define BSDUFIX(x) x +#else +#define BSDFIX(x) htons(x) +#define BSDUFIX(x) ntohs(x) +#endif +#endif /* BSDFIX */ + +#define LOG_TYPES 4 +#define LOG_MASK 15 +#define LOG_NORMAL 1 +#define LOG_MACHINE 2 +#define LOG_HTML 4 +#define LOG_SKID 8 +#define LOG_STDOUT 1024 +#define LOG_SKID_NOXLT 2048 + +#define LOG_NAMES {"normal", "machine", "HTML", "$Cr!pT |<!dd!3"} +/********************** LOCAL INCLUDES *****************************/ + +#include "portlist.h" +#include "tcpip.h" +#include "global_structures.h" +#include "error.h" +#include "utils.h" +#include "services.h" +#include "rpc.h" +#include "targets.h" + +/***********************STRUCTURES**********************************/ + +/* Moved to global_structures.h */ + +/***********************PROTOTYPES**********************************/ + +/* print usage information and exit */ +void printusage(char *name, int rc); +/* print Interactive usage information */ +void printinteractiveusage(); + +/* our scanning functions */ +void super_scan(struct hoststruct *target, unsigned short *portarray, + stype scantype); +void pos_scan(struct hoststruct *target, unsigned short *portarray, + stype scantype); +void bounce_scan(struct hoststruct *target, unsigned short *portarray, + struct ftpinfo *ftp); + +/* Scan helper functions */ +unsigned long calculate_sleep(struct in_addr target); +int check_ident_port(struct in_addr target); +int getidentinfoz(struct in_addr target, int localport, int remoteport, + char *owner); +int parse_bounce(struct ftpinfo *ftp, char *url); +int ftp_anon_connect(struct ftpinfo *ftp); +/* Does the appropriate stuff when the port we are looking at is found + to be open trynum is the try number that was successful */ +void posportupdate(struct hoststruct *target, struct portinfo *current, + int trynum, struct portinfo *scan, + struct scanstats *ss ,stype scantype, int newstate, + struct portinfolist *pil, struct connectsockinfo *csi); +void get_syn_results(struct hoststruct *target, struct portinfo *scan, + struct scanstats *ss, struct portinfolist *pil, + int *portlookup, pcap_t *pd, unsigned long *sequences, stype scantype); +int get_connect_results(struct hoststruct *target, struct portinfo *scan, + struct scanstats *ss, struct portinfolist *pil, + int *portlookup, unsigned long *sequences, + struct connectsockinfo *csi); +inline void adjust_timeouts(struct timeval sent, struct timeout_info *to); +/* port manipulators */ +unsigned short *getpts(char *expr); /* someone stole the name getports()! */ + +void printportoutput(struct hoststruct *currenths, portlist *plist); + +/* socket manipulation functions */ +void init_socket(int sd); +int unblock_socket(int sd); +int block_socket(int sd); +void broadcast_socket(int sd); +int recvtime(int sd, char *buf, int len, int seconds); +void max_rcvbuf(int sd); +int max_sd(); +int log_open(int logt, int append, char *filename); +/* RAW packet building/dissasembling stuff */ +int isup(struct in_addr target); +int listen_icmp(int icmpsock, unsigned short outports[], + unsigned short numtries[], int *num_out, + struct in_addr target, portlist *ports); + +/* Renamed main so that interactive mode could preprocess when neccessary */ +int nmap_main(int argc, char *argv[]); + +/* general helper functions */ +void hdump(unsigned char *packet, int len); +void *safe_malloc(int size); +char *grab_next_host_spec(FILE *inputfd, int argc, char **fakeargv); +int parse_targets(struct targets *targets, char *h); +void options_init(); +void nmap_log(char *fmt, ...); +void nmap_machine_log(char *fmt, ...); +char *statenum2str(int state); +void sigdie(int signo); +void reaper(int signo); +char *seqreport(struct seq_info *seq); +char *seqclass2ascii(int clas); +int nmap_fetchfile(char *filename_returned, int bufferlen, char *file); +int fileexistsandisreadable(char *pathname); +void enforce_scan_delay(struct timeval *tv); +int check_firewallmode(struct hoststruct *target, struct scanstats *ss); +int gather_logfile_resumption_state(char *fname, int *myargc, char ***myargv); + +/* The items in ports should be + in sequential order for space savings and easier to read output */ +void output_rangelist_given_ports_to_machine_output(unsigned short *ports, + int numports); +/* Output the list of ports scanned to the top of machine parseable + logs (in a comment, unfortunately). The items in ports should be + in sequential order for space savings and easier to read output */ +void output_ports_to_machine_parseable_output(unsigned short *ports, + int numports, int tcpscan, + int udpscan); + +void log_write(int logt, char *fmt, ...); +void log_close(int logt); +void log_flush(int logt); +void log_flush_all(); +void skid_output(unsigned char *s); + +/* From glibc 2.0.6 because Solaris doesn't seem to have this function */ +#ifndef HAVE_INET_ATON +in_addr_t inet_aton(register const char *, struct in_addr *); +#endif +#ifndef HAVE_SNPRINTF +int snprintf ( char *str, size_t n, const char *format, ... ); +#endif +#endif /* NMAP_H */ + + + + + + + + diff --git a/net-analyzer/nmap/files/tcpip.h b/net-analyzer/nmap/files/tcpip.h new file mode 100644 index 000000000000..0d9853c9389f --- /dev/null +++ b/net-analyzer/nmap/files/tcpip.h @@ -0,0 +1,367 @@ +#ifndef TCPIP_H +#define TCPIP_H + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#ifdef STDC_HEADERS +#include <stdlib.h> +#else +void *malloc(); +void *realloc(); +#endif + +#if STDC_HEADERS || HAVE_STRING_H +#include <string.h> +#if !STDC_HEADERS && HAVE_MEMORY_H +#include <memory.h> +#endif +#endif +#if HAVE_STRINGS_H +#include <strings.h> +#endif + +#ifdef HAVE_BSTRING_H +#include <bstring.h> +#endif + +#ifndef HAVE_BZERO +#define bzero(s, n) memset((s), 0, (n)) +#endif + +#ifndef HAVE_MEMCPY +#define memcpy(d, s, n) bcopy((s), (d), (n)) +#endif + +#include <ctype.h> +#include <sys/types.h> + +#ifdef HAVE_SYS_PARAM_H +#include <sys/param.h> /* Defines MAXHOSTNAMELEN on BSD*/ +#endif + +/* Linux uses these defines in netinet/ip.h and netinet/tcp.h to + use the correct struct ip and struct tcphdr */ +#ifndef __FAVOR_BSD +#define __FAVOR_BSD 1 +#endif +#ifndef __BSD_SOURCE +#define __BSD_SOURCE 1 +#endif +#ifndef __USE_BSD +#define __USE_BSD 1 +#endif +/* BSDI needs this to insure the correct struct ip */ +#undef _IP_VHL + +#include <stdio.h> +#include <netinet/in.h> +#include <rpc/types.h> +#include <netdb.h> +#include <sys/socket.h> +#include <arpa/inet.h> +#ifndef NETINET_IN_SYSTEM_H /* why the HELL does OpenBSD not do this? */ +#include <netinet/in_systm.h> /* defines n_long needed for netinet/ip.h */ +#define NETINET_IN_SYSTEM_H +#endif +#ifndef NETINET_IP_H /* why the HELL does OpenBSD not do this? */ +#include <netinet/ip.h> +#define NETINET_IP_H +#endif +#ifndef __FAVOR_BSD +#define __FAVOR_BSD +#endif +#ifndef NETINET_TCP_H /* why the HELL does OpenBSD not do this? */ +#include <netinet/tcp.h> /*#include <netinet/ip_tcp.h>*/ +#define NETINET_TCP_H +#endif +#ifndef NETINET_UDP_H +#include <netinet/udp.h> +#define NETINET_UDP_H +#endif +#include <unistd.h> +#include <fcntl.h> +#ifndef NET_IF_H /* why the HELL does OpenBSD not do this? */ +#include <net/if.h> +#define NET_IF_H +#endif +#if HAVE_NETINET_IF_ETHER_H +#ifndef NETINET_IF_ETHER_H +#include <netinet/if_ether.h> +#define NETINET_IF_ETHER_H +#endif /* NETINET_IF_ETHER_H */ +#endif /* HAVE_NETINET_IF_ETHER_H */ + +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif + +#include <sys/ioctl.h> +#include <pcap.h> +#include <setjmp.h> +#include <errno.h> +#include <signal.h> +#include <pcap.h> +#if HAVE_SYS_SOCKIO_H +#include <sys/sockio.h> /* SIOCGIFCONF for Solaris */ +#endif +#include "error.h" +#include "utils.h" +#include "nmap.h" +#include "global_structures.h" + +#ifndef DEBUGGING +#define DEBUGGING 0 +#endif + +#ifndef TCPIP_DEBUGGING +#define TCPIP_DEBUGGING 0 +#endif + +#ifndef BSDFIX +#if FREEBSD || BSDI || NETBSD +#define BSDFIX(x) x +#define BSDUFIX(x) x +#else +#define BSDFIX(x) htons(x) +#define BSDUFIX(x) ntohs(x) +#endif +#endif + +/* Bogus TCP flag!!! Krad! */ +#define TH_BOGUS 64 +#define TH_BOG 64 + +#define MORE_FRAGMENTS 8192 /*NOT a user serviceable parameter*/ + +struct interface_info { + char name[64]; + struct in_addr addr; +}; + + + + +#ifndef HAVE_STRUCT_IP +#define HAVE_STRUCT_IP + +/* From Linux glibc, which apparently borrowed it from + BSD code. Slightly modified for portability --fyodor@dhp.com */ +/* + * Structure of an internet header, naked of options. + */ +struct ip + { +#if WORDS_BIGENDIAN + u_int8_t ip_v:4; /* version */ + u_int8_t ip_hl:4; /* header length */ +#else + u_int8_t ip_hl:4; /* header length */ + u_int8_t ip_v:4; /* version */ +#endif + u_int8_t ip_tos; /* type of service */ + u_short ip_len; /* total length */ + u_short ip_id; /* identification */ + u_short ip_off; /* fragment offset field */ +#define IP_RF 0x8000 /* reserved fragment flag */ +#define IP_DF 0x4000 /* dont fragment flag */ +#define IP_MF 0x2000 /* more fragments flag */ +#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ + u_int8_t ip_ttl; /* time to live */ + u_int8_t ip_p; /* protocol */ + u_short ip_sum; /* checksum */ + struct in_addr ip_src, ip_dst; /* source and dest address */ + }; + +#endif /* HAVE_STRUCT_IP */ + +#ifdef LINUX +typedef struct udphdr_bsd { + unsigned short uh_sport; /* source port */ + unsigned short uh_dport; /* destination port */ + unsigned short uh_ulen; /* udp length */ + unsigned short uh_sum; /* udp checksum */ +} udphdr_bsd; +#else + typedef struct udphdr udphdr_bsd; +#endif + + +#ifndef HAVE_STRUCT_ICMP +#define HAVE_STRUCT_ICMP +/* From Linux /usr/include/netinet/ip_icmp.h GLIBC */ + +/* + * Internal of an ICMP Router Advertisement + */ +struct icmp_ra_addr +{ + u_int32_t ira_addr; + u_int32_t ira_preference; +}; + +struct icmp +{ + u_int8_t icmp_type; /* type of message, see below */ + u_int8_t icmp_code; /* type sub code */ + u_int16_t icmp_cksum; /* ones complement checksum of struct */ + union + { + u_char ih_pptr; /* ICMP_PARAMPROB */ + struct in_addr ih_gwaddr; /* gateway address */ + struct ih_idseq /* echo datagram */ + { + u_int16_t icd_id; + u_int16_t icd_seq; + } ih_idseq; + u_int32_t ih_void; + + /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ + struct ih_pmtu + { + u_int16_t ipm_void; + u_int16_t ipm_nextmtu; + } ih_pmtu; + + struct ih_rtradv + { + u_int8_t irt_num_addrs; + u_int8_t irt_wpa; + u_int16_t irt_lifetime; + } ih_rtradv; + } icmp_hun; +#define icmp_pptr icmp_hun.ih_pptr +#define icmp_gwaddr icmp_hun.ih_gwaddr +#define icmp_id icmp_hun.ih_idseq.icd_id +#define icmp_seq icmp_hun.ih_idseq.icd_seq +#define icmp_void icmp_hun.ih_void +#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void +#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu +#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs +#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa +#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime + union + { + struct + { + u_int32_t its_otime; + u_int32_t its_rtime; + u_int32_t its_ttime; + } id_ts; + struct + { + struct ip idi_ip; + /* options and then 64 bits of data */ + } id_ip; + struct icmp_ra_addr id_radv; + u_int32_t id_mask; + u_int8_t id_data[1]; + } icmp_dun; +#define icmp_otime icmp_dun.id_ts.its_otime +#define icmp_rtime icmp_dun.id_ts.its_rtime +#define icmp_ttime icmp_dun.id_ts.its_ttime +#define icmp_ip icmp_dun.id_ip.idi_ip +#define icmp_radv icmp_dun.id_radv +#define icmp_mask icmp_dun.id_mask +#define icmp_data icmp_dun.id_data +}; +#endif /* HAVE_STRUCT_ICMP */ + + /* This ideally should be a port that isn't in use for any protocol on our machine or on the target */ +#define MAGIC_PORT 49724 +#define TVAL2LONG(X) X.tv_sec * 1e6 + X.tv_usec +#define SA struct sockaddr + +/* Prototypes */ + +/* Tries to resolve given hostname and stores + result in ip . returns 0 if hostname cannot + be resolved */ +int resolve(char *hostname, struct in_addr *ip); +/* An awesome function to determine what interface a packet to a given + destination should be routed through. It returns NULL if no appropriate + interface is found, oterwise it returns the device name and fills in the + source parameter */ +char *routethrough(struct in_addr *dest, struct in_addr *source); +unsigned short in_cksum(unsigned short *ptr,int nbytes); +int send_tcp_raw( int sd, struct in_addr *source, + struct in_addr *victim, unsigned short sport, + unsigned short dport, unsigned int seq, + unsigned int ack, unsigned char flags, + unsigned short window, char *options, int optlen, + char *data, unsigned short datalen); +int send_udp_raw( int sd, struct in_addr *source, + struct in_addr *victim, unsigned short sport, + unsigned short dport, char *data, unsigned short datalen); +int send_small_fragz(int sd, struct in_addr *source, struct in_addr *victim, + unsigned long seq, int sport, int dport, int flags); +int send_ip_raw( int sd, struct in_addr *source, + struct in_addr *victim, unsigned char proto, + char *data, unsigned short datalen); + +/* Decoy versions of the raw packet sending functions ... */ +int send_tcp_raw_decoys( int sd, struct in_addr *victim, unsigned short sport, + unsigned short dport, unsigned int seq, + unsigned int ack, unsigned char flags, + unsigned short window, char *options, int optlen, + char *data, unsigned short datalen); + +int send_udp_raw_decoys( int sd, struct in_addr *victim, unsigned short sport, + unsigned short dport, char *data, + unsigned short datalen); + +int send_small_fragz_decoys(int sd, struct in_addr *victim, unsigned long seq, + int sport, int dport, int flags); + + +int send_ip_raw_decoys( int sd, struct in_addr *victim, unsigned char proto, + char *data, unsigned short datalen); + +/* Calls pcap_open_live and spits out an error (and quits) if the call fails. + So a valid pcap_t will always be returned. */ +pcap_t *my_pcap_open_live(char *device, int snaplen, int promisc, int to_ms); + +/* A simple function I wrote to help in debugging, shows the important fields + of a TCP packet*/ +int readtcppacket(char *packet, int readdata); +int readudppacket(char *packet, int readdata); +/* Convert an IP address to the device (IE ppp0 eth0) using that address */ +int ipaddr2devname( char *dev, struct in_addr *addr ); +/* And vice versa */ +int devname2ipaddr(char *dev, struct in_addr *addr); +/* Where the above 2 functions get their info */ +struct interface_info *getinterfaces(int *howmany); +inline void sethdrinclude(int sd); +int getsourceip(struct in_addr *src, struct in_addr *dst); +/* Get the source IP and interface name that a packet + to dst should be sent to. Interface name is dynamically + assigned and thus should be freed */ +char *getsourceif(struct in_addr *src, struct in_addr *dst); +int islocalhost(struct in_addr *addr); +int unblock_socket(int sd); +inline int Sendto(char *functionname, int sd, char *packet, int len, + unsigned int flags, struct sockaddr *to, int tolen); +/* Standard swiped internet checksum routine */ +unsigned short in_cksum(unsigned short *ptr,int nbytes); +/* Hex dump */ +int get_link_offset(char *device); +char *readip_pcap(pcap_t *pd, unsigned int *len, long to_usec); +#ifndef HAVE_INET_ATON +in_addr_t inet_aton(register const char *, struct in_addr *); +#endif + + +#endif /*TCPIP_H*/ + + + + + diff --git a/net-analyzer/nmap/nmap-2.53-r2.ebuild b/net-analyzer/nmap/nmap-2.53-r2.ebuild new file mode 100644 index 000000000000..52451e2608e7 --- /dev/null +++ b/net-analyzer/nmap/nmap-2.53-r2.ebuild @@ -0,0 +1,43 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Achim Gottinger <achim@gentoo.org> +# $Heade + +P=nmap-2.53 +A=${P}.tgz +S=${WORKDIR}/${P} +DESCRIPTION="Portscanner" +SRC_URI="http://www.insecure.org/nmap/dist/"${A} +HOMEPAGE="http://www.insecure.org/nmap/" + +DEPEND=">=x11-libs/gtk+-1.2.8" + +src_unpack() { + unpack ${A} + if [ -n "`use glibc22`" ] + then + cd ${S} + cp ${FILESDIR}/tcpip.h ${S}/tcpip.h + cp ${FILESDIR}/nmap.h ${S}/nmap.h + fi +} +src_compile() { + cd ${S} + try ./configure --host=${CHOST} --prefix=/opt/gnome + try make +} + +src_install() { + cd ${S} + try make prefix=${D}/opt/gnome install + prepman /opt/gnome + + dodoc CHANGELOG COPYING README + cd docs + dodoc *.txt + docinto html + dodoc *.html +} + + + |