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