diff options
author | Marc <foxtrot@malloc.me> | 2021-11-30 22:39:26 +0000 |
---|---|---|
committer | Marc <foxtrot@malloc.me> | 2021-12-01 16:54:44 +0000 |
commit | ae6c98a48da409d040604aeffb84a38155fb5bac (patch) | |
tree | c27a8e28972209581ce3fba2130bf0c2b4f9c9c0 /examples/generate_rtscts/generate_rtscts.c | |
download | libwifi-ae6c98a48da409d040604aeffb84a38155fb5bac.tar.gz libwifi-ae6c98a48da409d040604aeffb84a38155fb5bac.tar.bz2 libwifi-ae6c98a48da409d040604aeffb84a38155fb5bac.zip |
Initial Commit
Signed-off-by: Marc <foxtrot@malloc.me>
Diffstat (limited to 'examples/generate_rtscts/generate_rtscts.c')
-rw-r--r-- | examples/generate_rtscts/generate_rtscts.c | 78 |
1 files changed, 78 insertions, 0 deletions
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 @@ | |||
1 | #include <libwifi.h> | ||
2 | |||
3 | #include <pcap.h> | ||
4 | |||
5 | #include <bits/types/struct_timeval.h> | ||
6 | #include <stddef.h> | ||
7 | #include <stdio.h> | ||
8 | #include <stdlib.h> | ||
9 | #include <string.h> | ||
10 | #include <sys/time.h> | ||
11 | |||
12 | pcap_dumper_t *filedumper = NULL; | ||
13 | |||
14 | void create_write_rtscts() { | ||
15 | printf("[*] Creating RTS Frame\n"); | ||
16 | struct libwifi_rts rts = {0}; | ||
17 | unsigned char transmitter[6] = "\x00\x20\x91\xAA\xBB\xCC"; | ||
18 | unsigned char receiver[6] = "\xFF\xFF\xFF\xFF\xFF\xFF"; | ||
19 | libwifi_create_rts(&rts, transmitter, receiver, 32); | ||
20 | |||
21 | printf("[*] Writing RTS Frame to pcap\n"); | ||
22 | struct pcap_pkthdr pkt_hdr = {0}; | ||
23 | struct timeval tv = {0}; | ||
24 | pkt_hdr.caplen = sizeof(struct libwifi_rts); | ||
25 | pkt_hdr.len = sizeof(struct libwifi_rts); | ||
26 | gettimeofday(&tv, NULL); | ||
27 | pkt_hdr.ts = tv; | ||
28 | pcap_dump((unsigned char *) filedumper, &pkt_hdr, (const unsigned char *) &rts); | ||
29 | |||
30 | printf("[*] Creating CTS Frame\n"); | ||
31 | struct libwifi_cts cts = {0}; | ||
32 | libwifi_create_cts(&cts, receiver, 32); | ||
33 | |||
34 | printf("[*] Writing CTS Frame to pcap\n"); | ||
35 | memset(&pkt_hdr, 0, sizeof(struct pcap_pkthdr)); | ||
36 | memset(&tv, 0, sizeof(struct timeval)); | ||
37 | pkt_hdr.caplen = sizeof(struct libwifi_cts); | ||
38 | pkt_hdr.len = sizeof(struct libwifi_cts); | ||
39 | gettimeofday(&tv, NULL); | ||
40 | pkt_hdr.ts = tv; | ||
41 | pcap_dump((unsigned char *) filedumper, &pkt_hdr, (const unsigned char *) &cts); | ||
42 | } | ||
43 | |||
44 | void helpexit() { | ||
45 | fprintf(stderr, "[!] Usage: ./generate_beacon --file <file.pcap>\n"); | ||
46 | exit(EXIT_FAILURE); | ||
47 | } | ||
48 | |||
49 | int main(int argc, char **argv) { | ||
50 | pcap_t *handle = NULL; | ||
51 | char errbuf[PCAP_ERRBUF_SIZE] = {0}; | ||
52 | FILE *pcapfile = NULL; | ||
53 | |||
54 | if (argc < 2) { | ||
55 | helpexit(); | ||
56 | } | ||
57 | if (strcmp(argv[1], "--file") == 0) { | ||
58 | pcapfile = fopen(argv[2], "w+"); | ||
59 | if ((handle = pcap_open_dead(DLT_IEEE802_11, BUFSIZ)) == NULL) { | ||
60 | fprintf(stderr, "[!] Error opening dead capture (%s)\n", errbuf); | ||
61 | exit(EXIT_FAILURE); | ||
62 | } | ||
63 | if ((filedumper = pcap_dump_fopen(handle, pcapfile)) == NULL) { | ||
64 | fprintf(stderr, "[!] Error opening file %s (%s)\n", argv[2], errbuf); | ||
65 | exit(EXIT_FAILURE); | ||
66 | } | ||
67 | } else { | ||
68 | helpexit(); | ||
69 | } | ||
70 | |||
71 | printf("[+] Setup Complete\n"); | ||
72 | |||
73 | create_write_rtscts(); | ||
74 | |||
75 | pcap_dump_close(filedumper); | ||
76 | pcap_close(handle); | ||
77 | return 0; | ||
78 | } | ||