1 #include <sys/stat.h>
2 #include <netinet/in.h>      // struct ip6_hdr
3 
4 
5 #define VERSION         "1.29"
6 
7 #define INTERVAL        13000   //About 70 packets per second
8 #define READ_SIZE	1200
9 
10 
11 #define TO_SERVER       0
12 #define FROM_SERVER     1
13 
14 #define SRC_ETHER 	"\x00\x11\x22\x33\x44\x55"
15 #define DST_ETHER 	"\x00\x55\x44\x33\x22\x11"
16 #define PROTO_ETHER 	"\x08\x00"
17 #define PROTO_ETHER6	"\x86\xDD"
18 
19 #define SRC_IP4		"192.168.0.1"
20 #define DST_IP4		"173.37.145.84"
21 
22 #define SRC_IP6		"2001:db8::214:51ff:fe2f:1556"
23 #define DST_IP6		"2a00:1450:4007:80d::200e"
24 
25 #define SRC_EMAIL	"abc@cisco.com"
26 #define DST_EMAIL	"def@cisco.com"
27 #define MAILHOST	"cisco.com"
28 
29 #define ENC_BASE64 		0x00
30 #define ENC_QUOTED_PRINTABLE 	0x01
31 #define ENC_UU			0x02
32 
33 #define ENC_HTTP_DEFAULT	0x10
34 #define ENC_HTTP_GZIP		0x11
35 #define ENC_HTTP_CHUNKED	0x12
36 #define ENC_HTTP_GZIP_CHUNKED	0x13
37 
38 #define ACTIVE_FTP		0
39 #define PASSIVE_FTP		1
40 
41 #define TRUE 			1
42 #define FALSE 			0
43 
44 #define TMP_FILE		"file2pcap.tmp"
45 
46 struct handover
47 {
48 	unsigned int srcIP;
49 	unsigned int dstIP;
50 	struct in6_addr srcIP6[16];
51 	struct in6_addr dstIP6[16];
52 	unsigned short srcPort;
53 	unsigned short dstPort;
54 	int seq, ack_seq;
55 	int blockSize;
56 //	int chunkSize;
57 	int inFileSize;
58 	char srcEther[6];
59 	char dstEther[6];
60 	char protoEther[2];
61 	char srcFile[200];
62 	char dstFile[200];
63 	char srcEmail[255];
64 	char dstEmail[255];
65 	char toEther[15];
66 	char fromEther[15];
67 	FILE *inFile;
68 	FILE *outFile;
69 	FILE *tmpFile;
70 	char encoder;
71 	char httpEncoder;
72 	char direction;
73 	char verbose;
74 	int time;
75 	int usec;
76 	char ipV;	//IP version - 4 or 6
77 };
78 
79 extern struct pcap_packet_header
80 {
81 	int time;
82 	int usec;
83 	int length1;
84 	int length2;
85 } ph;
86 
87 extern struct v6_pseudo_header
88 {
89 	char src[16];
90 	char dst[16];
91 	int length;
92 	char zeroes[3];
93 	char next_header;
94 } v6ph;
95 
96 
97 extern unsigned short 	srcport, dstport;
98 
99 
100 int craftTcp(char *payload, int payloadSize, char direction, unsigned char flags, struct handover *ho);
101 
102 int craftIpv4(char *payload, int payloadSize, char direction, struct handover *ho);
103 int craftIpv6(char *payload, int payloadSize, char direction, struct handover *ho);
104 
105 
106 
107 int tcpSendString(struct handover *ho, char *string, char direction);
108 int tcpSendData(struct handover *ho, char *buffer, int length, char direction);
109 
110 
111 int ftp(struct handover *ho, char mode);
112 
113