diff --git a/NmapOps.cc b/NmapOps.cc index 1d3821676..650c03896 100644 --- a/NmapOps.cc +++ b/NmapOps.cc @@ -129,14 +129,14 @@ ***************************************************************************/ /* $Id$ */ +#ifdef WIN32 +#include "winfix.h" +#endif #include "nmap.h" #include "nbase.h" #include "NmapOps.h" #include "osscan.h" #include "nmap_error.h" -#ifdef WIN32 -#include "winfix.h" -#endif NmapOps o; diff --git a/mswin32/IPExport.h b/mswin32/IPExport.h deleted file mode 100644 index 1e3022ad0..000000000 --- a/mswin32/IPExport.h +++ /dev/null @@ -1,218 +0,0 @@ -/********************************************************************/ -/** Microsoft LAN Manager **/ -/** Copyright(c) Microsoft Corp., 1990-1999 **/ -/********************************************************************/ -/* :ts=4 */ - -//** IPEXPORT.H - IP public definitions. -// -// This file contains public definitions exported to transport layer and -// application software. -// - -#ifndef IP_EXPORT_INCLUDED -#define IP_EXPORT_INCLUDED 1 - -#if _MSC_VER > 1000 -#pragma once -#endif - -//#include // for FAR decl -#undef FAR -#define FAR - -// -// IP type definitions. -// -typedef unsigned long IPAddr; // An IP address. -typedef unsigned long IPMask; // An IP subnet mask. -typedef unsigned long IP_STATUS; // Status code returned from IP APIs. - - -/*INC*/ - -// -// The ip_option_information structure describes the options to be -// included in the header of an IP packet. The TTL, TOS, and Flags -// values are carried in specific fields in the header. The OptionsData -// bytes are carried in the options area following the standard IP header. -// With the exception of source route options, this data must be in the -// format to be transmitted on the wire as specified in RFC 791. A source -// route option should contain the full route - first hop thru final -// destination - in the route data. The first hop will be pulled out of the -// data and the option will be reformatted accordingly. Otherwise, the route -// option should be formatted as specified in RFC 791. -// -struct ip_option_information { - unsigned char Ttl; // Time To Live - unsigned char Tos; // Type Of Service - unsigned char Flags; // IP header flags - unsigned char OptionsSize; // Size in bytes of options data - unsigned char FAR *OptionsData; // Pointer to options data -}; /* ip_option_information */ - -// -// The icmp_echo_reply structure describes the data returned in response -// to an echo request. -// -struct icmp_echo_reply { - IPAddr Address; // Replying address - unsigned long Status; // Reply IP_STATUS - unsigned long RoundTripTime; // RTT in milliseconds - unsigned short DataSize; // Reply data size in bytes - unsigned short Reserved; // Reserved for system use - void FAR *Data; // Pointer to the reply data - struct ip_option_information Options; // Reply options -}; /* icmp_echo_reply */ - - -/*NOINC*/ - -typedef struct ip_option_information IP_OPTION_INFORMATION, - FAR *PIP_OPTION_INFORMATION; - -typedef struct icmp_echo_reply ICMP_ECHO_REPLY, - FAR *PICMP_ECHO_REPLY; - -/*INC*/ - - - -struct ArpRequestBuffer { - IPAddr DestAddress; - IPAddr SrcAddress; -}; /* ArpRequestBuffer */ - -/*NOINC*/ - -typedef struct ArpRequestBuffer ARP_SEND_REPLY, - FAR *PARP_SEND_REPLY; - -typedef struct _TCP_RESERVE_PORT_RANGE -{ - - USHORT UpperRange; - USHORT LowerRange; -}TCP_RESERVE_PORT_RANGE, *PTCP_RESERVE_PORT_RANGE; - -#define MAX_ADAPTER_NAME 128 - -typedef struct _IP_ADAPTER_INDEX_MAP -{ - ULONG Index; - WCHAR Name[MAX_ADAPTER_NAME]; -}IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP; - -typedef struct _IP_INTERFACE_INFO -{ - LONG NumAdapters; - IP_ADAPTER_INDEX_MAP Adapter[1]; -} IP_INTERFACE_INFO,*PIP_INTERFACE_INFO; - -typedef struct _IP_UNIDIRECTIONAL_ADAPTER_ADDRESS -{ - ULONG NumAdapters; - IPAddr Address[1]; -} IP_UNIDIRECTIONAL_ADAPTER_ADDRESS, *PIP_UNIDIRECTIONAL_ADAPTER_ADDRESS; - -typedef struct _IP_ADAPTER_ORDER_MAP -{ - ULONG NumAdapters; - ULONG AdapterOrder[1]; -} IP_ADAPTER_ORDER_MAP, *PIP_ADAPTER_ORDER_MAP; - -// -// IP_STATUS codes returned from IP APIs -// - -#define IP_STATUS_BASE 11000 - -#define IP_SUCCESS 0 -#define IP_BUF_TOO_SMALL (IP_STATUS_BASE + 1) -#define IP_DEST_NET_UNREACHABLE (IP_STATUS_BASE + 2) -#define IP_DEST_HOST_UNREACHABLE (IP_STATUS_BASE + 3) -#define IP_DEST_PROT_UNREACHABLE (IP_STATUS_BASE + 4) -#define IP_DEST_PORT_UNREACHABLE (IP_STATUS_BASE + 5) -#define IP_NO_RESOURCES (IP_STATUS_BASE + 6) -#define IP_BAD_OPTION (IP_STATUS_BASE + 7) -#define IP_HW_ERROR (IP_STATUS_BASE + 8) -#define IP_PACKET_TOO_BIG (IP_STATUS_BASE + 9) -#define IP_REQ_TIMED_OUT (IP_STATUS_BASE + 10) -#define IP_BAD_REQ (IP_STATUS_BASE + 11) -#define IP_BAD_ROUTE (IP_STATUS_BASE + 12) -#define IP_TTL_EXPIRED_TRANSIT (IP_STATUS_BASE + 13) -#define IP_TTL_EXPIRED_REASSEM (IP_STATUS_BASE + 14) -#define IP_PARAM_PROBLEM (IP_STATUS_BASE + 15) -#define IP_SOURCE_QUENCH (IP_STATUS_BASE + 16) -#define IP_OPTION_TOO_BIG (IP_STATUS_BASE + 17) -#define IP_BAD_DESTINATION (IP_STATUS_BASE + 18) - - -// -// The next group are status codes passed up on status indications to -// transport layer protocols. -// -#define IP_ADDR_DELETED (IP_STATUS_BASE + 19) -#define IP_SPEC_MTU_CHANGE (IP_STATUS_BASE + 20) -#define IP_MTU_CHANGE (IP_STATUS_BASE + 21) -#define IP_UNLOAD (IP_STATUS_BASE + 22) -#define IP_ADDR_ADDED (IP_STATUS_BASE + 23) -#define IP_MEDIA_CONNECT (IP_STATUS_BASE + 24) -#define IP_MEDIA_DISCONNECT (IP_STATUS_BASE + 25) -#define IP_BIND_ADAPTER (IP_STATUS_BASE + 26) -#define IP_UNBIND_ADAPTER (IP_STATUS_BASE + 27) -#define IP_DEVICE_DOES_NOT_EXIST (IP_STATUS_BASE + 28) -#define IP_DUPLICATE_ADDRESS (IP_STATUS_BASE + 29) -#define IP_INTERFACE_METRIC_CHANGE (IP_STATUS_BASE + 30) -#define IP_RECONFIG_SECFLTR (IP_STATUS_BASE + 31) -#define IP_NEGOTIATING_IPSEC (IP_STATUS_BASE + 32) -#define IP_INTERFACE_WOL_CAPABILITY_CHANGE (IP_STATUS_BASE + 33) -#define IP_DUPLICATE_IPADD (IP_STATUS_BASE + 34) - -#define IP_GENERAL_FAILURE (IP_STATUS_BASE + 50) -#define MAX_IP_STATUS IP_GENERAL_FAILURE -#define IP_PENDING (IP_STATUS_BASE + 255) - - -// -// Values used in the IP header Flags field. -// -#define IP_FLAG_DF 0x2 // Don't fragment this packet. - -// -// Supported IP Option Types. -// -// These types define the options which may be used in the OptionsData field -// of the ip_option_information structure. See RFC 791 for a complete -// description of each. -// -/* THESE ARE DEFINED IN DNET -- SO EXCLUDED -#define IP_OPT_EOL 0 // End of list option -#define IP_OPT_NOP 1 // No operation -#define IP_OPT_SECURITY 0x82 // Security option -#define IP_OPT_LSRR 0x83 // Loose source route -#define IP_OPT_SSRR 0x89 // Strict source route -#define IP_OPT_RR 0x7 // Record route -#define IP_OPT_TS 0x44 // Timestamp -#define IP_OPT_SID 0x88 // Stream ID (obsolete) -#define IP_OPT_ROUTER_ALERT 0x94 // Router Alert Option -*/ - -#define MAX_OPT_SIZE 40 // Maximum length of IP options in bytes - -#ifdef CHICAGO - -// Ioctls code exposed by Memphis tcpip stack. -// For NT these ioctls are define in ntddip.h (private\inc) - -#define IOCTL_IP_RTCHANGE_NOTIFY_REQUEST 101 -#define IOCTL_IP_ADDCHANGE_NOTIFY_REQUEST 102 -#define IOCTL_ARP_SEND_REQUEST 103 -#define IOCTL_IP_INTERFACE_INFO 104 -#define IOCTL_IP_GET_BEST_INTERFACE 105 -#define IOCTL_IP_UNIDIRECTIONAL_ADAPTER_ADDRESS 106 - -#endif - - -#endif // IP_EXPORT_INCLUDED diff --git a/mswin32/ifaddrlist.h b/mswin32/ifaddrlist.h deleted file mode 100644 index dfec77040..000000000 --- a/mswin32/ifaddrlist.h +++ /dev/null @@ -1,44 +0,0 @@ -#if !(__solaris__) -/* - * Copyright (c) 1997 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - */ - -struct ifaddrlist -{ - u_int32_t addr; - char *device; -}; - - -int -ifaddrlist( - struct ifaddrlist **, - char * - ); - - -int -set_up_interface( - struct sockaddr_in **, - u_char ** - ); - -#endif /* __solaris__ */ diff --git a/mswin32/packet_types.h b/mswin32/packet_types.h deleted file mode 100644 index d2979d312..000000000 --- a/mswin32/packet_types.h +++ /dev/null @@ -1,698 +0,0 @@ - -// IP packet structures... -// ----------------------- -// Note: All of this is hard coded little endian! - - -typedef long n_long; -typedef long n_time; - - -struct ip - { - unsigned int ip_hl:4; /* header length */ - unsigned int ip_v:4; /* version */ - u_char 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 /* don't fragment flag */ -#define IP_MF 0x2000 /* more fragments flag */ -#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ - u_char ip_ttl; /* time to live */ - u_char ip_p; /* protocol */ - u_short ip_sum; /* checksum */ - struct in_addr ip_src, ip_dst; /* source and dest address */ - }; - -#define MAX_IPOPTLEN 40 - -/* - * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble - * and FCS/CRC (frame check sequence). - */ - -#define ETH_ALEN 6 /* Octets in one ethernet addr */ -#define ETH_HLEN 14 /* Total octets in header. */ -#define ETH_ZLEN 60 /* Min. octets in frame sans FCS */ -#define ETH_DATA_LEN 1500 /* Max. octets in payload */ -#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */ - -/* - * These are the defined Ethernet Protocol ID's. - */ - -#define ETH_P_LOOP 0x0060 /* Ethernet Loopback packet */ -#define ETH_P_ECHO 0x0200 /* Ethernet Echo packet */ -#define ETH_P_PUP 0x0400 /* Xerox PUP packet */ -#define ETH_P_IP 0x0800 /* Internet Protocol packet */ -#define ETH_P_X25 0x0805 /* CCITT X.25 */ -#define ETH_P_ARP 0x0806 /* Address Resolution packet */ -#define ETH_P_BPQ 0x08FF /* G8BPQ AX.25 Ethernet Packet [ NOT AN OFFICIALLY REGISTERED ID ] */ -#define ETH_P_DEC 0x6000 /* DEC Assigned proto */ -#define ETH_P_DNA_DL 0x6001 /* DEC DNA Dump/Load */ -#define ETH_P_DNA_RC 0x6002 /* DEC DNA Remote Console */ -#define ETH_P_DNA_RT 0x6003 /* DEC DNA Routing */ -#define ETH_P_LAT 0x6004 /* DEC LAT */ -#define ETH_P_DIAG 0x6005 /* DEC Diagnostics */ -#define ETH_P_CUST 0x6006 /* DEC Customer use */ -#define ETH_P_SCA 0x6007 /* DEC Systems Comms Arch */ -#define ETH_P_RARP 0x8035 /* Reverse Addr Res packet */ -#define ETH_P_ATALK 0x809B /* Appletalk DDP */ -#define ETH_P_AARP 0x80F3 /* Appletalk AARP */ -#define ETH_P_IPX 0x8137 /* IPX over DIX */ -#define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ - -/* - * Non DIX types. Won't clash for 1500 types. - */ - -#define ETH_P_802_3 0x0001 /* Dummy type for 802.3 frames */ -#define ETH_P_AX25 0x0002 /* Dummy protocol id for AX.25 */ -#define ETH_P_ALL 0x0003 /* Every packet (be careful!!!) */ -#define ETH_P_802_2 0x0004 /* 802.2 frames */ -#define ETH_P_SNAP 0x0005 /* Internal only */ -#define ETH_P_DDCMP 0x0006 /* DEC DDCMP: Internal only */ -#define ETH_P_WAN_PPP 0x0007 /* Dummy type for WAN PPP frames*/ -#define ETH_P_PPP_MP 0x0008 /* Dummy type for PPP MP frames */ -#define ETH_P_LOCALTALK 0x0009 /* Localtalk pseudo type */ -#define ETH_P_PPPTALK 0x0010 /* Dummy type for Atalk over PPP*/ -#define ETH_P_TR_802_2 0x0011 /* 802.2 frames */ - -struct etherproto { - char *s; - u_short p; -}; -extern struct etherproto etherproto_db[]; - -// Ethernet Header -struct ether_header -{ - unsigned char h_dest[ETH_ALEN]; /* destination eth addr */ - unsigned char h_source[ETH_ALEN]; /* source ether addr */ - unsigned short h_proto; /* packet type ID field */ -}; - -// ARP/RARP -/////////////////////////////////////////////////////////////////////// -static u_char bcastaddr[] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; - -/* - * This structure defines an ethernet arp header. - */ - -struct arphdr -{ - unsigned short ar_hrd; /* format of hardware address */ - unsigned short ar_pro; /* format of protocol address */ - unsigned char ar_hln; /* length of hardware address */ - unsigned char ar_pln; /* length of protocol address */ - unsigned short ar_op; /* ARP opcode (command) */ -}; - -#define ARPD_UPDATE 0x01 -#define ARPD_LOOKUP 0x02 -#define ARPD_FLUSH 0x03 - -/*#define ARPHRD_ETHER 0x01 - -#define ARPOP_REQUEST 0x01 -#define ARPOP_REPLY 0x02 -#define ARPOP_REVREQUEST 0x03 -#define ARPOP_REVREPLY 0x04 -*/ -/* - * Ethernet Address Resolution Protocol. - * - * See RFC 826 for protocol description. Structure below is adapted - * to resolving internet addresses. Field names used correspond to - * RFC 826. - */ -struct ether_arp { - struct arphdr ea_hdr; /* fixed-size header */ - u_char arp_sha[ETH_ALEN]; /* sender hardware address */ - u_char arp_spa[4]; /* sender protocol address */ - u_char arp_tha[ETH_ALEN]; /* target hardware address */ - u_char arp_tpa[4]; /* target protocol address */ -}; -#define arp_hrd ea_hdr.ar_hrd -#define arp_pro ea_hdr.ar_pro -#define arp_hln ea_hdr.ar_hln -#define arp_pln ea_hdr.ar_pln -#define arp_op ea_hdr.ar_op - -// IP Header in Little Endian -////////////////////////////// -struct iphdr { - u_char ip_hl:4, /* header length */ - ip_v:4; /* version */ - u_char ip_tos; /* type of service */ - short ip_len; /* total length */ - u_short ip_id; /* identification */ - short ip_off; /* fragment offset field */ -#define IP_DF 0x4000 /* don't fragment flag */ -#define IP_MF 0x2000 /* more fragments flag */ - u_char ip_ttl; /* time to live */ - u_char ip_p; /* protocol */ - u_short ip_sum; /* checksum */ - struct in_addr ip_src,ip_dst; /* source and dest address */ -}; - -#define IP_MAXPACKET 65535 /* maximum packet size */ - -// Definitions for options. -#define IPOPT_COPIED(o) ((o)&0x80) -#define IPOPT_CLASS(o) ((o)&0x60) -#define IPOPT_NUMBER(o) ((o)&0x1f) - -#define IPOPT_CONTROL 0x00 -#define IPOPT_RESERVED1 0x20 -#define IPOPT_DEBMEAS 0x40 -#define IPOPT_RESERVED2 0x60 - -#define IPOPT_EOL 0 /* end of option list */ -#define IPOPT_NOP 1 /* no operation */ - -#define IPOPT_RR 7 /* record packet route */ -#define IPOPT_TS 68 /* timestamp */ -#define IPOPT_SECURITY 130 /* provide s,c,h,tcc */ -#define IPOPT_LSRR 131 /* loose source route */ -#define IPOPT_SATID 136 /* satnet id */ -#define IPOPT_SSRR 137 /* strict source route */ - - -// Time stamp option structure. -struct ip_timestamp { - u_char ipt_code; /* IPOPT_TS */ - u_char ipt_len; /* size of structure (variable) */ - u_char ipt_ptr; /* index of current entry */ - u_char ipt_flg:4, /* flags, see below */ - ipt_oflw:4; /* overflow counter */ - union ipt_timestamp { - n_long ipt_time[1]; - struct ipt_ta { - struct in_addr ipt_addr; - n_long ipt_time; - } ipt_ta[1]; - } ipt_timestamp; -}; - -/* flag bits for ipt_flg */ -#define IPOPT_TS_TSONLY 0 /* timestamps only */ -#define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ -#define IPOPT_TS_PRESPEC 2 /* specified modules only */ - -/* bits for security (not byte swapped) */ -#define IPOPT_SECUR_UNCLASS 0x0000 -#define IPOPT_SECUR_CONFID 0xf135 -#define IPOPT_SECUR_EFTO 0x789a -#define IPOPT_SECUR_MMMM 0xbc4d -#define IPOPT_SECUR_RESTR 0xaf13 -#define IPOPT_SECUR_SECRET 0xd788 -#define IPOPT_SECUR_TOPSECRET 0x6bc5 - -// ICMP Header -//////////////////////////////////////////////////////////////////////// -//struct icmphdr { -// u_char icmp_type; /* type of message, see below */ -// u_char icmp_code; /* type sub code */ -// u_short icmp_cksum; /* ones complement cksum of struct */ -// union { -// u_char ih_pptr; /* ICMP_PARAMPROB */ -// struct in_addr ih_gwaddr; /* ICMP_REDIRECT */ -// struct ih_idseq { -// n_short icd_id; -// n_short icd_seq; -// } ih_idseq; -// int ih_void; -// } 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 -// union { -// struct id_ts { -// n_time its_otime; -// n_time its_rtime; -// n_time its_ttime; -// } id_ts; -// struct id_ip { -// struct iphdr idi_ip; -// /* options and then 64 bits of data */ -// } id_ip; -// u_long id_mask; -// char 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_mask icmp_dun.id_mask -//#define icmp_data icmp_dun.id_data -//}; - -//typedef struct icmp_hdr icmp; -/* - * Lower bounds on packet lengths for various types. - * For the error advice packets must first insure that the - * packet is large enought to contain the returned ip header. - * Only then can we do the check to see if 64 bits of packet - * data have been returned, since we need to check the returned - * ip header length. - */ -#define ICMP_MINLEN 8 /* abs minimum */ -#define ICMP_TSLEN (8 + 3 * sizeof (n_time)) /* timestamp */ -#define ICMP_MASKLEN 12 /* address mask */ -#define ICMP_ADVLENMIN (8 + sizeof (struct ip) + 8) /* min */ -#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8) - /* N.B.: must separately check that ip_hl >= 5 */ - -/* - * Definition of type and code field values. - */ -#define ICMP_ECHOREPLY 0 /* echo reply */ - -/* UNREACH codes */ -#define ICMP_UNREACH 3 /* dest unreachable, codes: */ -#define ICMP_UNREACH_NET 0 /* bad net */ -#define ICMP_UNREACH_HOST 1 /* bad host */ -#define ICMP_UNREACH_PROTOCOL 2 /* bad protocol */ -#define ICMP_UNREACH_PORT 3 /* bad port */ -#define ICMP_UNREACH_NEEDFRAG 4 /* IP_DF caused drop */ -#define ICMP_UNREACH_SRCFAIL 5 /* src route failed */ -#define ICMP_UNREACH_NET_UNKNOWN 6 /* unknown net */ -#define ICMP_UNREACH_HOST_UNKNOWN 7 /* unknown host */ -#define ICMP_UNREACH_ISOLATED 8 /* src host isolated */ -#define ICMP_UNREACH_NET_PROHIB 9 /* net denied */ -#define ICMP_UNREACH_HOST_PROHIB 10 /* host denied */ -#define ICMP_UNREACH_TOSNET 11 /* bad tos for net */ -#define ICMP_UNREACH_TOSHOST 12 /* bad tos for host */ -#define ICMP_UNREACH_FILTER_PROHIB 13 /* admin prohib */ -#define ICMP_UNREACH_HOST_PRECEDENCE 14 /* host prec vio. */ -#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15 /* prec cutoff */ - - -#define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ -#define ICMP_ROUTERADVERT 9 /* router advertisement */ -#define ICMP_ROUTERSOLICIT 10 /* router solicitation */ -#define ICMP_REDIRECT 5 /* shorter route, codes: */ -#define ICMP_REDIRECT_NET 0 /* for network */ -#define ICMP_REDIRECT_HOST 1 /* for host */ -#define ICMP_REDIRECT_TOSNET 2 /* for tos and net */ -#define ICMP_REDIRECT_TOSHOST 3 /* for tos and host */ -#define ICMP_ECHO 8 /* echo service */ -#define ICMP_TIMXCEED 11 /* time exceeded, code: */ -#define ICMP_TIMXCEED_INTRANS 0 /* ttl==0 in transit */ -#define ICMP_TIMXCEED_REASS 1 /* ttl==0 in reass */ -#define ICMP_PARAMPROB 12 /* ip header bad */ -#define ICMP_TSTAMP 13 /* timestamp request */ -#define ICMP_TSTAMPREPLY 14 /* timestamp reply */ -#define ICMP_IREQ 15 /* information request */ -#define ICMP_IREQREPLY 16 /* information reply */ -#define ICMP_MASKREQ 17 /* address mask request */ -#define ICMP_MASKREPLY 18 /* address mask reply */ - -#define ICMP_MAXTYPE 18 - -#define ICMP_INFOTYPE(type) \ - ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \ - (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \ - (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ - (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) - -/*** ICMP types ********************************************************/ -#define ICMP_TYPE_0 "Echo reply" -#define ICMP_TYPE_3 "Destination unreachable" -#define ICMP_TYPE_4 "Source quench" -#define ICMP_TYPE_5 "Redirect" -#define ICMP_TYPE_8 "Echo" -#define ICMP_TYPE_11 "Time exceeded" -#define ICMP_TYPE_12 "Parameter problem" -#define ICMP_TYPE_13 "Timestamp" -#define ICMP_TYPE_14 "Timestamp reply" -#define ICMP_TYPE_15 "Information request" -#define ICMP_TYPE_16 "Information reply" -#define ICMP_TYPE_17 "Address mask request" -#define ICMP_TYPE_18 "Adress mask reply" - -/* pulled token stuff from tcpdump */ -struct tok { - int v; /* value */ - char *s; /* string */ -}; - -// TCP -///////////////////////////////////////////////////////////////////////// -typedef u_long tcp_seq; - -// TCP header. Per RFC 793, September, 1981. In Little Endian -struct tcphdr { - u_short th_sport; /* source port */ - u_short th_dport; /* destination port */ - tcp_seq th_seq; /* sequence number */ - tcp_seq th_ack; /* acknowledgement number */ - u_char th_x2:4, /* (unused) */ - th_off:4; /* data offset */ - u_char th_flags; -#define TH_FIN 0x01 -#define TH_SYN 0x02 -#define TH_RST 0x04 -#define TH_PSH 0x08 -#define TH_PUSH 0x08 -#define TH_ACK 0x10 -#define TH_URG 0x20 -#define TH_ECE 0x40 -#define TH_CWR 0x80 - u_short th_win; /* window */ - u_short th_sum; /* checksum */ - u_short th_urp; /* urgent pointer */ -}; - -#define TCPOPT_EOL 0 -#define TCPOPT_NOP 1 -#define TCPOPT_MAXSEG 2 - -enum { - TCP_ESTABLISHED = 1, - TCP_SYN_SENT, - TCP_SYN_RECV, - TCP_FIN_WAIT1, - TCP_FIN_WAIT2, - TCP_TIME_WAIT, - TCP_CLOSE, - TCP_CLOSE_WAIT, - TCP_LAST_ACK, - TCP_LISTEN, - TCP_CLOSING /* now a valid state */ -}; - -// UDP Header -////////////////////////////////////////////////////////////////////////////// -struct udphdr { - unsigned short source; - unsigned short dest; - unsigned short len; - unsigned short check; -}; - - -// Netbios/SAMBA -////////////////////////////////////////////////////////////////////////////// -/* the basic packet size, assuming no words or bytes */ -#define smb_size 39 - -/* offsets into message for common items */ -#define smb_com 8 -#define smb_rcls 9 -#define smb_reh 10 -#define smb_err 11 -#define smb_flg 13 -#define smb_flg2 14 -#define smb_reb 13 -#define smb_tid 28 -#define smb_pid 30 -#define smb_uid 32 -#define smb_mid 34 -#define smb_wct 36 -#define smb_vwv 37 -#define smb_vwv0 37 -#define smb_vwv1 39 -#define smb_vwv2 41 -#define smb_vwv3 43 -#define smb_vwv4 45 -#define smb_vwv5 47 -#define smb_vwv6 49 -#define smb_vwv7 51 -#define smb_vwv8 53 -#define smb_vwv9 55 -#define smb_vwv10 57 -#define smb_vwv11 59 -#define smb_vwv12 61 -#define smb_vwv13 63 -#define smb_vwv14 65 -#define smb_vwv15 67 -#define smb_vwv16 69 -#define smb_vwv17 71 - -/* the complete */ -#define SMBmkdir 0x00 /* create directory */ -#define SMBrmdir 0x01 /* delete directory */ -#define SMBopen 0x02 /* open file */ -#define SMBcreate 0x03 /* create file */ -#define SMBclose 0x04 /* close file */ -#define SMBflush 0x05 /* flush file */ -#define SMBunlink 0x06 /* delete file */ -#define SMBmv 0x07 /* rename file */ -#define SMBgetatr 0x08 /* get file attributes */ -#define SMBsetatr 0x09 /* set file attributes */ -#define SMBread 0x0A /* read from file */ -#define SMBwrite 0x0B /* write to file */ -#define SMBlock 0x0C /* lock byte range */ -#define SMBunlock 0x0D /* unlock byte range */ -#define SMBctemp 0x0E /* create temporary file */ -#define SMBmknew 0x0F /* make new file */ -#define SMBchkpth 0x10 /* check directory path */ -#define SMBexit 0x11 /* process exit */ -#define SMBlseek 0x12 /* seek */ -#define SMBtcon 0x70 /* tree connect */ -#define SMBtconX 0x75 /* tree connect and X*/ -#define SMBtdis 0x71 /* tree disconnect */ -#define SMBnegprot 0x72 /* negotiate protocol */ -#define SMBdskattr 0x80 /* get disk attributes */ -#define SMBsearch 0x81 /* search directory */ -#define SMBsplopen 0xC0 /* open print spool file */ -#define SMBsplwr 0xC1 /* write to print spool file */ -#define SMBsplclose 0xC2 /* close print spool file */ -#define SMBsplretq 0xC3 /* return print queue */ -#define SMBsends 0xD0 /* send single block message */ -#define SMBsendb 0xD1 /* send broadcast message */ -#define SMBfwdname 0xD2 /* forward user name */ -#define SMBcancelf 0xD3 /* cancel forward */ -#define SMBgetmac 0xD4 /* get machine name */ -#define SMBsendstrt 0xD5 /* send start of multi-block message */ -#define SMBsendend 0xD6 /* send end of multi-block message */ -#define SMBsendtxt 0xD7 /* send text of multi-block message */ - -/* Core+ protocol */ -#define SMBlockread 0x13 /* Lock a range and read */ -#define SMBwriteunlock 0x14 /* Unlock a range then write */ -#define SMBreadbraw 0x1a /* read a block of data with no smb header */ -#define SMBwritebraw 0x1d /* write a block of data with no smb header */ -#define SMBwritec 0x20 /* secondary write request */ -#define SMBwriteclose 0x2c /* write a file then close it */ - -/* dos extended protocol */ -#define SMBreadBraw 0x1A /* read block raw */ -#define SMBreadBmpx 0x1B /* read block multiplexed */ -#define SMBreadBs 0x1C /* read block (secondary response) */ -#define SMBwriteBraw 0x1D /* write block raw */ -#define SMBwriteBmpx 0x1E /* write block multiplexed */ -#define SMBwriteBs 0x1F /* write block (secondary request) */ -#define SMBwriteC 0x20 /* write complete response */ -#define SMBsetattrE 0x22 /* set file attributes expanded */ -#define SMBgetattrE 0x23 /* get file attributes expanded */ -#define SMBlockingX 0x24 /* lock/unlock byte ranges and X */ -#define SMBtrans 0x25 /* transaction - name, bytes in/out */ -#define SMBtranss 0x26 /* transaction (secondary request/response) */ -#define SMBioctl 0x27 /* IOCTL */ -#define SMBioctls 0x28 /* IOCTL (secondary request/response) */ -#define SMBcopy 0x29 /* copy */ -#define SMBmove 0x2A /* move */ -#define SMBecho 0x2B /* echo */ -#define SMBopenX 0x2D /* open and X */ -#define SMBreadX 0x2E /* read and X */ -#define SMBwriteX 0x2F /* write and X */ -#define SMBsesssetupX 0x73 /* Session Set Up & X (including User Logon) */ -#define SMBffirst 0x82 /* find first */ -#define SMBfunique 0x83 /* find unique */ -#define SMBfclose 0x84 /* find close */ -#define SMBinvalid 0xFE /* invalid command */ - -/* Extended 2.0 protocol */ -#define SMBtrans2 0x32 /* TRANS2 protocol set */ -#define SMBtranss2 0x33 /* TRANS2 protocol set, secondary command */ -#define SMBfindclose 0x34 /* Terminate a TRANSACT2_FINDFIRST */ -#define SMBfindnclose 0x35 /* Terminate a TRANSACT2_FINDNOTIFYFIRST */ -#define SMBulogoffX 0x74 /* user logoff */ - - -/* these are the TRANS2 sub commands */ -#define TRANSACT2_OPEN 0 -#define TRANSACT2_FINDFIRST 1 -#define TRANSACT2_FINDNEXT 2 -#define TRANSACT2_QFSINFO 3 -#define TRANSACT2_SETFSINFO 4 -#define TRANSACT2_QPATHINFO 5 -#define TRANSACT2_SETPATHINFO 6 -#define TRANSACT2_QFILEINFO 7 -#define TRANSACT2_SETFILEINFO 8 -#define TRANSACT2_FSCTL 9 -#define TRANSACT2_IOCTL 10 -#define TRANSACT2_FINDNOTIFYFIRST 11 -#define TRANSACT2_FINDNOTIFYNEXT 12 -#define TRANSACT2_MKDIR 13 - - -/* these are the trans2 sub fields for primary requests */ -#define smb_tpscnt smb_vwv0 -#define smb_tdscnt smb_vwv1 -#define smb_mprcnt smb_vwv2 -#define smb_mdrcnt smb_vwv3 -#define smb_msrcnt smb_vwv4 -#define smb_flags smb_vwv5 -#define smb_timeout smb_vwv6 -#define smb_pscnt smb_vwv9 -#define smb_psoff smb_vwv10 -#define smb_dscnt smb_vwv11 -#define smb_dsoff smb_vwv12 -#define smb_suwcnt smb_vwv13 -#define smb_setup smb_vwv14 -#define smb_setup0 smb_setup -#define smb_setup1 (smb_setup+2) -#define smb_setup2 (smb_setup+4) - -/* these are for the secondary requests */ -#define smb_spscnt smb_vwv2 -#define smb_spsoff smb_vwv3 -#define smb_spsdisp smb_vwv4 -#define smb_sdscnt smb_vwv5 -#define smb_sdsoff smb_vwv6 -#define smb_sdsdisp smb_vwv7 -#define smb_sfid smb_vwv8 - -/* and these for responses */ -#define smb_tprcnt smb_vwv0 -#define smb_tdrcnt smb_vwv1 -#define smb_prcnt smb_vwv3 -#define smb_proff smb_vwv4 -#define smb_prdisp smb_vwv5 -#define smb_drcnt smb_vwv6 -#define smb_droff smb_vwv7 -#define smb_drdisp smb_vwv8 - -/* where to find the base of the SMB packet proper */ -#define smb_base(buf) (((char *)(buf))+4) - - -#define SUCCESS 0 /* The request was successful. */ -#define ERRDOS 0x01 /* Error is from the core DOS operating system set. */ -#define ERRSRV 0x02 /* Error is generated by the server network file manager.*/ -#define ERRHRD 0x03 /* Error is an hardware error. */ -#define ERRCMD 0xFF /* Command was not in the "SMB" format. */ - -/* structure used to hold the incoming hosts info */ -struct from_host { - char *name; /* host name */ - char *addr; /* host address */ - struct sockaddr_in *sin; /* their side of the link */ -}; - -#define MAX_DGRAM_SIZE 576 -#define MIN_DGRAM_SIZE 12 - -#define NMB_PORT 137 -#define DGRAM_PORT 138 -#define SMB_PORT 139 - -enum name_source {LMHOSTS, REGISTER, SELF, DNS, DNSFAIL}; -enum node_type {B_NODE=0, P_NODE=1, M_NODE=2, NBDD_NODE=3}; -enum packet_type {NMB_PACKET, DGRAM_PACKET}; - -/* a netbios name structure */ -struct nmb_name { - char name[17]; - char scope[64]; - int name_type; -}; - -/* a resource record */ -struct res_rec { - struct nmb_name rr_name; - int rr_type; - int rr_class; - int ttl; - int rdlength; - char rdata[MAX_DGRAM_SIZE]; -}; - -/* define a nmb packet. */ -struct nmb_packet -{ - struct { - int name_trn_id; - int opcode; - BOOL response; - struct { - BOOL bcast; - BOOL recursion_available; - BOOL recursion_desired; - BOOL trunc; - BOOL authoritative; - } nm_flags; - int rcode; - int qdcount; - int ancount; - int nscount; - int arcount; - } header; - - struct { - struct nmb_name question_name; - int question_type; - int question_class; - } question; - - struct res_rec *answers; - struct res_rec *nsrecs; - struct res_rec *additional; -}; - -/* rfc1191 */ -struct mtu_discovery { - short unused; - short nexthopmtu; -}; - -#define EXTRACT_SHORT(p) ((u_short)ntohs(*(u_short *)p)) -#define EXTRACT_LONG(p) (ntohl(*(u_int32 *)p)) - - -/* pulled from tcpdump */ -/* XXX probably should use getservbyname() and cache answers */ -#define TFTP_PORT 69 /*XXX*/ -#define NAMESERVER_PORT 53 -#define KERBEROS_PORT 88 /*XXX*/ -#define SUNRPC_PORT 111 /*XXX*/ -#define SNMP_PORT 161 /*XXX*/ -#define NTP_PORT 123 /*XXX*/ -#define SNMPTRAP_PORT 162 /*XXX*/ -#define RIP_PORT 520 /*XXX*/ -#define KERBEROS_SEC_PORT 750 /*XXX*/ - - -/* TICK_TIME in ms - * time to wait between Read Requests - * if no packet has been sniffed.. - */ -#define TICK_TIME 10 -#define OUR_IP (gOurIP ? gOurIP : rkGetOurIP()) -#define OUR_MAC (gOurMAC ? gOurMAC : rkGetOurMAC()) -#define MAXHOSTNAMELEN 64 /* max length of hostname */ - -typedef struct _RIPDERM { - char *mBuf; - int mLen; -} RIPDERM, *PRIPDERM; - - - -//typedef list VRIP; -//typedef list NAMELIST; -//typedef map LMHOSTLIST; -//typedef map MACMAP; /* note that masking is required */ - -//void SendThruFilterRaw(const char * p, int len); -//void SendHex(char *theAsciiString); -//void SendRaw(const char * theData, int theLen); diff --git a/ncat/ncat.vcxproj b/ncat/ncat.vcxproj index 1b52d6f9e..832be3533 100644 --- a/ncat/ncat.vcxproj +++ b/ncat/ncat.vcxproj @@ -212,7 +212,6 @@ - @@ -221,7 +220,6 @@ - @@ -259,4 +257,4 @@ - + \ No newline at end of file diff --git a/nmap.cc b/nmap.cc index 9307de6ba..9b1662726 100644 --- a/nmap.cc +++ b/nmap.cc @@ -130,6 +130,13 @@ /* $Id$ */ +#ifdef WIN32 +#include "winfix.h" +/* This name collides in the following include. */ +#undef PS_NONE +#include +#endif + #include "nmap.h" #include "osscan.h" #include "scan_engine.h" @@ -166,13 +173,6 @@ #include #endif -#ifdef WIN32 -#include "winfix.h" -/* This name collides in the following include. */ -#undef PS_NONE -#include -#endif - #ifndef IPPROTO_SCTP #include "libnetutil/netutil.h" #endif diff --git a/nping/NpingOps.cc b/nping/NpingOps.cc index 52fefce7a..9c94af62f 100644 --- a/nping/NpingOps.cc +++ b/nping/NpingOps.cc @@ -128,6 +128,10 @@ * * ***************************************************************************/ +#ifdef WIN32 +#include "winfix.h" +#endif + #include "nping.h" #include "nbase.h" #include "NpingOps.h" @@ -137,9 +141,6 @@ #include "output.h" #include "common.h" -#ifdef WIN32 -#include "winfix.h" -#endif /****************************************************************************** * Constructors and destructors * diff --git a/nping/nping.cc b/nping/nping.cc index 5493e775e..273ab1225 100644 --- a/nping/nping.cc +++ b/nping/nping.cc @@ -128,6 +128,10 @@ * * ***************************************************************************/ +#ifdef WIN32 +#include "winfix.h" +#endif + #include "nping.h" #include "output.h" #include "NpingOps.h" @@ -145,9 +149,7 @@ #include "pcap.h" #include #include -#ifdef WIN32 -#include "winfix.h" -#endif + using namespace std; NpingOps o; EchoClient ec; diff --git a/nping/winfix.cc b/nping/winfix.cc index 2a56326db..ea30ceea0 100644 --- a/nping/winfix.cc +++ b/nping/winfix.cc @@ -131,9 +131,9 @@ /* $Id: */ +#include "winfix.h" #include "nping.h" //#include "tcpip.h" -#include "winfix.h" #include "NpingOps.h" #include "output.h" #include diff --git a/portreasons.cc b/portreasons.cc index ea7ab19ec..b6bcdcd90 100644 --- a/portreasons.cc +++ b/portreasons.cc @@ -131,15 +131,15 @@ * Modified by Colin Rice 2011 */ +#ifdef WIN32 +#include "winfix.h" +#endif #include "portlist.h" #include "output.h" #include "NmapOps.h" #include "portreasons.h" #include "Target.h" #include "xml.h" -#ifdef WIN32 -#include "winfix.h" -#endif extern NmapOps o;