⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hping2.h

📁 VC++源代码
💻 H
字号:
/* * $smu-mark$ * $name: hping2.h$ * $author: Salvatore Sanfilippo <antirez@invece.org>$ * $copyright: Copyright (C) 1999 by Salvatore Sanfilippo$ * $license: This software is under GPL version 2 of license$ * $date: Fri Nov  5 11:55:48 MET 1999$ * $rev: 9$ */ /* $Id: hping2.h,v 1.19 2003/08/07 23:55:55 antirez Exp $ *//* * Revised for Windows: Rob Turpin <rgturpin@epop3.com> *                      7/03/2004 */#ifndef _HPING2_H#define _HPING2_H#ifndef WIN32#include <sys/socket.h>#include <netinet/in.h>#else#include <winsock2.h>#include <windows.h>#include <pcap.h>#endif#include "byteorder.h"#include "systype.h"#ifdef __sun__typedef char                   int_8_t;typedef unsigned char          u_int8_t;typedef short                  int_16_t;typedef unsigned short         u_int16_t;typedef int                    int_32_t;typedef unsigned int           u_int32_t;#endif#ifdef WIN32typedef char                   int_8_t;typedef short                  int_16_t;typedef int                    int_32_t;#endif/* types */#ifndef __u8#define __u8		u_int8_t#endif /* __u8 */#ifndef __u16#define __u16		u_int16_t#endif /* __u16 */#ifndef __u32#define __u32		u_int32_t#endif /* __u32 */#ifndef __uint8_t#define __uint8_t	u_int8_t#endif /* __uint8_t */#ifndef __uint16_t#define __uint16_t	u_int16_t#endif /* __uint16_t */#ifndef __uint32_t#define __uint32_t	u_int32_t#endif /* __uint32_t */#include "hcmp.h" /* Hping Control Message Protocol *//* protocols header size */#ifndef ICMPHDR_SIZE#define ICMPHDR_SIZE	sizeof(struct myicmphdr)#endif#ifndef UDPHDR_SIZE#define UDPHDR_SIZE	sizeof(struct myudphdr)#endif#ifndef TCPHDR_SIZE#define TCPHDR_SIZE	sizeof(struct mytcphdr)#endif#ifndef IPHDR_SIZE#define IPHDR_SIZE	sizeof(struct myiphdr)#endif/* wait X seconds after reached to sent packets in oreder to display replies */#define COUNTREACHED_TIMEOUT 1/* requests status table stuffs *//* Warning, TABLESIZE 0 == floating point exception */#define TABLESIZE	400#define S_SENT		0#define S_RECV		1/* usefull defines */#ifndef TRUE#define TRUE	1#define FALSE	0#endif#ifndef IFNAMSIZ#define IFNAMSIZ 16#endif#ifndef PF_PACKET#define PF_PACKET 17		/* kernel 2.[12].* with 2.0.* kernel headers? */#endif#ifndef ETH_P_IP#define ETH_P_IP  0x0800	/* Internet Protocol packet     */#endif#ifndef ABS#define ABS(x) (((x)>0) ? (x) : -(x))#endif/* header size of some physical layer type */#define PPPHDR_SIZE_LINUX	0#define PPPHDR_SIZE_FREEBSD	4#define PPPHDR_SIZE_OPENBSD	4#define PPPHDR_SIZE_NETBSD	4#define PPPHDR_SIZE_BSDI	4#define ETHHDR_SIZE		14#define LOHDR_SIZE		14#define WLANHDR_SIZE		14#define TRHDR_SIZE		20/* packet size (physical header size + ip header + tcp header + 0 data bytes) */#ifndef IP_MAX_SIZE#define IP_MAX_SIZE	65535#endif/* absolute offsets */#define ABS_OFFSETIP	linkhdr_size#define ABS_OFFSETTCP	( linkhdr_size + IPHDR_SIZE )#define ABS_OFFSETICMP	( linkhdr_size + IPHDR_SIZE )#define ABS_OFFSETUDP	( linkhdr_size + IPHDR_SIZE )/* defaults and misc */#define DEFAULT_SENDINGWAIT 1	/* wait 1 sec. between sending each packets */#define DEFAULT_DPORT	    0	/* default dest. port */#define DEFAULT_INITSPORT  -1	/* default initial source port: -1 means random */#define DEFAULT_COUNT      -1	/* default packets count: -1 means forever */#define DEFAULT_TTL	   64	/* default ip->ttl value */#define DEFAULT_SRCWINSIZE 512	/* default tcp windows size */#define DEFAULT_VIRTUAL_MTU 16  /* tiny fragments */#define DEFAULT_ICMP_TYPE   8	/* echo request */#define DEFAULT_ICMP_CODE   0	/* icmp-type relative */#define DEFAULT_ICMP_IP_VERSION		4#define DEFAULT_ICMP_IP_IHL		(IPHDR_SIZE >> 2)#define	DEFAULT_ICMP_IP_TOS		0#define DEFAULT_ICMP_IP_TOT_LEN		0 /* computed by send_icmp_*() */#define DEFAULT_ICMP_IP_ID		0 /* rand */#define DEFAULT_ICMP_CKSUM		-1 /* -1 means compute the cksum */#define DEFAULT_ICMP_IP_PROTOCOL	6 /* TCP */#define DEFAULT_RAW_IP_PROTOCOL		6 /* TCP */#define DEFAULT_TRACEROUTE_TTL		1#define BIND_NONE	0		/* no bind */#define BIND_DPORT	1		/* bind destination port */#define BIND_TTL	2		/* bind ip->ttl */#define DEFAULT_BIND	BIND_DPORT/* fragmentation defines */#define MF ((unsigned short)0x2000)	/* more fragments */#define DF ((unsigned short)0x4000)	/* dont fragment */#define NF ((unsigned short)0x0000)	/* no more fragments *//* ip options defines */#define IPOPT_COPY		0x80#define IPOPT_CLASS_MASK	0x60#define IPOPT_NUMBER_MASK	0x1f#define	IPOPT_COPIED(o)		((o)&IPOPT_COPY)#define	IPOPT_CLASS(o)		((o)&IPOPT_CLASS_MASK)#define	IPOPT_NUMBER(o)		((o)&IPOPT_NUMBER_MASK)#define	IPOPT_CONTROL		0x00#define	IPOPT_RESERVED1		0x20#define	IPOPT_MEASUREMENT	0x40#define	IPOPT_RESERVED2		0x60#define IPOPT_END	(0 |IPOPT_CONTROL)#define IPOPT_NOOP	(1 |IPOPT_CONTROL)#define IPOPT_SEC	(2 |IPOPT_CONTROL|IPOPT_COPY)#define IPOPT_LSRR	(3 |IPOPT_CONTROL|IPOPT_COPY)#define IPOPT_TIMESTAMP	(4 |IPOPT_MEASUREMENT)#define IPOPT_RR	(7 |IPOPT_CONTROL)#define IPOPT_SID	(8 |IPOPT_CONTROL|IPOPT_COPY)#define IPOPT_SSRR	(9 |IPOPT_CONTROL|IPOPT_COPY)#define IPOPT_RA	(20|IPOPT_CONTROL|IPOPT_COPY)#define IPOPT_OPTVAL 0#define IPOPT_OLEN   1#define IPOPT_OFFSET 2#define IPOPT_MINOFF 4#define MAX_IPOPTLEN 40#define IPOPT_NOP IPOPT_NOOP#define IPOPT_EOL IPOPT_END#define IPOPT_TS  IPOPT_TIMESTAMP#define	IPOPT_TS_TSONLY		0		/* timestamps only */#define	IPOPT_TS_TSANDADDR	1		/* timestamps and addresses */#define	IPOPT_TS_PRESPEC	3		/* specified modules only *//* tcp flags */#ifndef	TH_FIN#define TH_FIN  0x01#endif#ifndef TH_SYN#define TH_SYN  0x02#endif#ifndef TH_RST#define TH_RST  0x04#endif#ifndef TH_PUSH#define TH_PUSH 0x08#endif#ifndef TH_ACK#define TH_ACK  0x10#endif#ifndef TH_URG#define TH_URG  0x20#endif#ifndef TH_X#define	TH_X 0x40	/* X tcp flag */#endif#ifndef TH_Y#define TH_Y 0x80	/* Y tcp flag */#endif/* ICMP TYPE */#define ICMP_ECHOREPLY          0       /* Echo Reply                   */#define ICMP_DEST_UNREACH       3       /* Destination Unreachable      */#define ICMP_SOURCE_QUENCH      4       /* Source Quench                */#define ICMP_REDIRECT           5       /* Redirect (change route)      */#define ICMP_ECHO               8       /* Echo Request                 */#define ICMP_TIME_EXCEEDED      11      /* Time Exceeded                */#define ICMP_PARAMETERPROB      12      /* Parameter Problem            */#define ICMP_TIMESTAMP          13      /* Timestamp Request            */#define ICMP_TIMESTAMPREPLY     14      /* Timestamp Reply              */#define ICMP_INFO_REQUEST       15      /* Information Request          */#define ICMP_INFO_REPLY         16      /* Information Reply            */#define ICMP_ADDRESS            17      /* Address Mask Request         */#define ICMP_ADDRESSREPLY       18      /* Address Mask Reply           *//* Codes for UNREACHABLE */#define ICMP_NET_UNREACH        0       /* Network Unreachable          */#define ICMP_HOST_UNREACH       1       /* Host Unreachable             */#define ICMP_PROT_UNREACH       2       /* Protocol Unreachable         */#define ICMP_PORT_UNREACH       3       /* Port Unreachable             */#define ICMP_FRAG_NEEDED        4       /* Fragmentation Needed/DF set  */#define ICMP_SR_FAILED          5       /* Source Route failed          */#define ICMP_NET_UNKNOWN        6#define ICMP_HOST_UNKNOWN       7#define ICMP_HOST_ISOLATED      8#define ICMP_NET_ANO            9#define ICMP_HOST_ANO           10#define ICMP_NET_UNR_TOS        11#define ICMP_HOST_UNR_TOS       12#define ICMP_PKT_FILTERED       13      /* Packet filtered */#define ICMP_PREC_VIOLATION     14      /* Precedence violation */#define ICMP_PREC_CUTOFF        15      /* Precedence cut off */#define NR_ICMP_UNREACH 15        /* instead of hardcoding immediate value *//* Codes for REDIRECT */#define ICMP_REDIR_NET          0       /* Redirect Net                 */#define ICMP_REDIR_HOST         1       /* Redirect Host                */#define ICMP_REDIR_NETTOS       2       /* Redirect Net for TOS         */#define ICMP_REDIR_HOSTTOS      3       /* Redirect Host for TOS        *//* Codes for TIME_EXCEEDED */#define ICMP_EXC_TTL            0       /* TTL count exceeded           */#define ICMP_EXC_FRAGTIME       1       /* Fragment Reass time exceeded */#ifdef WIN32#include <pshpack1.h>#endif/* * IP header */struct myiphdr {#if defined(__LITTLE_ENDIAN_BITFIELD)        __u8    ihl:4,                version:4;#elif defined (__BIG_ENDIAN_BITFIELD)        __u8    version:4,                ihl:4;#else#error  "Please, edit Makefile and add -D__(LITTLE|BIG)_ENDIAN_BITFIEND"#endif        __u8    tos;        __u16   tot_len;        __u16   id;        __u16   frag_off;        __u8    ttl;        __u8    protocol;        __u16   check;        __u32   saddr;        __u32   daddr;};/* * UDP header */struct myudphdr {	__u16 uh_sport;     /* source port */	__u16 uh_dport;     /* destination port */	__u16 uh_ulen;      /* udp length */	__u16 uh_sum;       /* udp checksum */};/* * TCP header. * Per RFC 793, September, 1981. */struct mytcphdr {	__u16	th_sport;               /* source port */	__u16	th_dport;               /* destination port */	__u32	th_seq;                 /* sequence number */	__u32	th_ack;                 /* acknowledgement number */#if defined (__LITTLE_ENDIAN_BITFIELD)	__u8    th_x2:4,                /* (unused) */		th_off:4;               /* data offset */#elif defined (__BIG_ENDIAN_BITFIELD)	__u8    th_off:4,               /* data offset */		th_x2:4;                /* (unused) */#else#error  "Please, edit Makefile and add -D__(LITTLE|BIG)_ENDIAN_BITFIEND"#endif	__u8    th_flags;	__u16   th_win;                 /* window */	__u16   th_sum;                 /* checksum */	__u16   th_urp;                 /* urgent pointer */};/* * ICMP header */struct myicmphdr{	__u8          type;	__u8          code;	__u16         checksum;	union	{		struct		{			__u16   id;			__u16   sequence;		} echo;		__u32   gateway;	} un;};struct icmp_tstamp_data {	__u32 orig;	__u32 recv;	__u32 tran;};/* * UDP/TCP pseudo header * for cksum computing */struct pseudohdr{	__u32 saddr;	__u32 daddr;	__u8  zero;	__u8  protocol;	__u16 lenght;};#ifdef WIN32#include <poppack.h>#endif#define PSEUDOHDR_SIZE sizeof(struct pseudohdr)/* * hping replies delay table */struct delaytable_element {	int seq;	int src;	time_t sec;#ifndef WIN32  time_t usec;#else  short msec;#endif	int status;};volatile struct delaytable_element delaytable[TABLESIZE];/* protos */void	nop(void);				/* nop */int	parse_options(int, char**);		/* option parser */int	get_if_name(void);			/* get interface (see source) */int	get_linkhdr_size(char*);		/* get link layer hdr size */int	open_sockpacket(void);			/* open SOCK_PACKET socket */int	close_sockpacket(int);			/* close SOCK_PACKET socket */int	open_sockraw(void);			/* open raw socket */#ifndef WIN32void	send_packet (int signal_id);#elsevoid CALLBACK send_packet(UINT wTimerID, UINT msg, DWORD dwUser, DWORD dw1,                          DWORD dw2);#endifvoid	send_rawip (void);void	send_tcp(void);void	send_udp(void);void	send_icmp(void);void	send_hcmp(__u8 type, __u32 arg);	/* send hcmp packets */void	send_ip (char*, char*, char*, unsigned int, int, unsigned short,		 char*, char);void	send_ip_handler(char *packet, unsigned int size); /* fragmentation                                                             handler */void	wait_packet(void);			/* handle incoming packets */#ifndef WIN32void	print_statistics(int);#elsevoid win_print_statistics(int);void CALLBACK print_statistics(UINT, UINT, DWORD, DWORD, DWORD);#endifvoid	show_usage(void);void	show_version(void);void	resolve(struct sockaddr*, char*);	/* resolver */void	log_icmp_unreach(char*, unsigned short);/* ICMP unreachable logger */void	log_icmp_timeexc(char*, unsigned short);/* ICMP time exceeded logger */#ifndef WIN32time_t	get_usec(void);				/* return current usec */#elseshort   get_msec(void);             /* return current msec for windows */#endiftime_t	get_midnight_ut_ms(void);		/* ms from UT midnight */__u16	cksum(__u16 *buf, int nwords);		/* compute 16bit checksum */#ifndef WIN32void	inc_destparm(int sid);			/* inc dst port or ttl */#elsevoid win_ctrl_z(HANDLE ctrlz);#endifchar	*get_hostname(char*);			/* get host from addr */void	datafiller(char *p, int size);		/* fill data from file */void	data_handler(char *data, int data_size);/* handle data filling */void	socket_broadcast(int sd);		/* set SO_BROADCAST option */void	socket_iphdrincl(int sd);		/* set SO_IPHDRINCL option */void	listenmain(void);			/* main for listen mode */char	*memstr(char *haystack, char *needle, int size); /* memstr */void	tos_help(void);				/* show the TOS help */int	rtt(int *seqp, int recvport, float *ms_delay);	/* compute round trip time */int	relativize_id(int seqnum, int *ip_id);	/* compute relative id */int	if_promisc_on(int s);			/* promisc. mode ON */int	if_promisc_off(int s);			/* promisc. mode OFF */int	open_pcap(void);			/* open libpcap socket */int	close_pcap(void);			/* close libpcap socket */int	pcap_recv(char *, unsigned int);	/* libpcap api wrapper */int	memlock(char *addr, size_t size);	/* disable paging */int	memunlock(char *addr, size_t size);	/* enable paging */int	memlockall(void);			/* disable paging (all pages) */int	memunlockall(void);			/* enable paging (all pages) */unsigned char ip_opt_build(char *ip_opt);		/* build ip options */void	display_ipopt(char* buf);		/* display ip options */void	icmp_help(void);			/* show the ICMP help */void	route_help(void);			/* show the route help */void	(*Signal(int signo, void (*func)(int)))(int);#ifndef WIN32void	delaytable_add(int seq, int src, time_t sec, time_t usec, int status);#elsevoid    delaytable_add(int seq, int src, time_t sec, short msec, int status);#endifint	read_packet(void *packet, int size);void	scanmain(void);u_int32_t hp_rand(void);#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__NetBSD__) && \    !defined(__bsdi__) && !defined(__APPLE__)size_t strlcpy(char *dst, const char *src, size_t siz);#endif/* ARS glue */void hping_ars_send(char *s);#endif /* _HPING2_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -