From ae6c98a48da409d040604aeffb84a38155fb5bac Mon Sep 17 00:00:00 2001 From: Marc Date: Tue, 30 Nov 2021 22:39:26 +0000 Subject: Initial Commit Signed-off-by: Marc --- examples/generate_rtscts/generate_rtscts.c | 78 ++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 examples/generate_rtscts/generate_rtscts.c (limited to 'examples/generate_rtscts/generate_rtscts.c') diff --git a/examples/generate_rtscts/generate_rtscts.c b/examples/generate_rtscts/generate_rtscts.c new file mode 100644 index 0000000..f449a06 --- /dev/null +++ b/examples/generate_rtscts/generate_rtscts.c @@ -0,0 +1,78 @@ +#include + +#include + +#include +#include +#include +#include +#include +#include + +pcap_dumper_t *filedumper = NULL; + +void create_write_rtscts() { + printf("[*] Creating RTS Frame\n"); + struct libwifi_rts rts = {0}; + unsigned char transmitter[6] = "\x00\x20\x91\xAA\xBB\xCC"; + unsigned char receiver[6] = "\xFF\xFF\xFF\xFF\xFF\xFF"; + libwifi_create_rts(&rts, transmitter, receiver, 32); + + printf("[*] Writing RTS Frame to pcap\n"); + struct pcap_pkthdr pkt_hdr = {0}; + struct timeval tv = {0}; + pkt_hdr.caplen = sizeof(struct libwifi_rts); + pkt_hdr.len = sizeof(struct libwifi_rts); + gettimeofday(&tv, NULL); + pkt_hdr.ts = tv; + pcap_dump((unsigned char *) filedumper, &pkt_hdr, (const unsigned char *) &rts); + + printf("[*] Creating CTS Frame\n"); + struct libwifi_cts cts = {0}; + libwifi_create_cts(&cts, receiver, 32); + + printf("[*] Writing CTS Frame to pcap\n"); + memset(&pkt_hdr, 0, sizeof(struct pcap_pkthdr)); + memset(&tv, 0, sizeof(struct timeval)); + pkt_hdr.caplen = sizeof(struct libwifi_cts); + pkt_hdr.len = sizeof(struct libwifi_cts); + gettimeofday(&tv, NULL); + pkt_hdr.ts = tv; + pcap_dump((unsigned char *) filedumper, &pkt_hdr, (const unsigned char *) &cts); +} + +void helpexit() { + fprintf(stderr, "[!] Usage: ./generate_beacon --file \n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char **argv) { + pcap_t *handle = NULL; + char errbuf[PCAP_ERRBUF_SIZE] = {0}; + FILE *pcapfile = NULL; + + if (argc < 2) { + helpexit(); + } + if (strcmp(argv[1], "--file") == 0) { + pcapfile = fopen(argv[2], "w+"); + if ((handle = pcap_open_dead(DLT_IEEE802_11, BUFSIZ)) == NULL) { + fprintf(stderr, "[!] Error opening dead capture (%s)\n", errbuf); + exit(EXIT_FAILURE); + } + if ((filedumper = pcap_dump_fopen(handle, pcapfile)) == NULL) { + fprintf(stderr, "[!] Error opening file %s (%s)\n", argv[2], errbuf); + exit(EXIT_FAILURE); + } + } else { + helpexit(); + } + + printf("[+] Setup Complete\n"); + + create_write_rtscts(); + + pcap_dump_close(filedumper); + pcap_close(handle); + return 0; +} -- cgit 1.4.1