summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/beacon_data.cpp84
-rw-r--r--src/beacon_data.h3
-rw-r--r--src/main.cpp97
3 files changed, 184 insertions, 0 deletions
diff --git a/src/beacon_data.cpp b/src/beacon_data.cpp new file mode 100644 index 0000000..a93eb59 --- /dev/null +++ b/src/beacon_data.cpp
@@ -0,0 +1,84 @@
1#include "beacon_data.h"
2
3const unsigned char kBeaconPayloads[][128] =
4 {
5 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
6 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9f, 0xfc, 0x00, 0x09, 0x62, 0x00, 0x58, 0x6f,
7 0x20, 0x49, 0x62, 0x55, 0xc4, 0x61, 0x46, 0x6e, 0xeb, 0x7e, 0xa4, 0x18, 0xac, 0x00, 0x9e, 0x01,
8 0xff, 0x7b, 0x8c, 0x31, 0xfa, 0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x11,
9 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x11, 0x22, 0x22, 0x32, 0x11, 0x22,
10 0x22, 0x33, 0x11, 0x22, 0x32, 0x43, 0x11, 0x22, 0x33, 0x44, 0x11, 0x32, 0x43, 0x54, 0x11, 0x11,
11 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x22, 0x33, 0x33, 0x33, 0x33, 0x43, 0x44, 0x44, 0x43, 0x44,
12 0x55, 0x55, 0x44, 0x55, 0x61, 0x66, 0x55, 0x61, 0x66, 0x66, 0x64, 0x66, 0xc7, 0x88, 0x11, 0x11},
13 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
14 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0x93, 0x75, 0x01, 0x09, 0x62, 0x00, 0x11, 0x11,
15 0x11, 0x11, 0x11, 0x11, 0x33, 0x33, 0x33, 0x22, 0x44, 0x44, 0x34, 0x33, 0x55, 0x55, 0x44, 0x34,
16 0x66, 0x16, 0x55, 0x44, 0x66, 0x66, 0x16, 0x55, 0x88, 0x7c, 0x66, 0x46, 0x11, 0x11, 0x11, 0x01,
17 0x11, 0x11, 0x11, 0x11, 0x22, 0x22, 0x22, 0x11, 0x23, 0x22, 0x22, 0x11, 0x33, 0x22, 0x22, 0x11,
18 0x34, 0x23, 0x22, 0x11, 0x44, 0x33, 0x22, 0x11, 0x45, 0x34, 0x23, 0x11, 0x11, 0x32, 0x43, 0x45,
19 0x11, 0x32, 0x44, 0x65, 0x11, 0x33, 0x54, 0x61, 0x11, 0x43, 0x54, 0x66, 0x11, 0x43, 0x15, 0x76,
20 0x11, 0x43, 0x65, 0xc6, 0x11, 0x43, 0x65, 0x86, 0x11, 0x43, 0x65, 0x66, 0x66, 0x87, 0x88, 0x88},
21 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
22 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x02, 0x60, 0x72, 0x02, 0x09, 0x62, 0x00, 0xb6, 0x88,
23 0x88, 0x88, 0x87, 0x88, 0x88, 0x88, 0x88, 0x88, 0xb8, 0x67, 0x88, 0x88, 0x6b, 0x66, 0x88, 0xb8,
24 0x66, 0x0a, 0x88, 0x78, 0xa6, 0x99, 0x66, 0x66, 0x06, 0x99, 0x88, 0x88, 0x78, 0x66, 0x88, 0x88,
25 0x88, 0x6b, 0x88, 0x88, 0x88, 0x78, 0x76, 0x8b, 0x88, 0x88, 0x66, 0xb6, 0x88, 0x88, 0xa0, 0x66,
26 0x8b, 0x88, 0x99, 0x6a, 0x87, 0x88, 0x99, 0x60, 0x66, 0x66, 0x54, 0x34, 0x23, 0x11, 0x56, 0x44,
27 0x23, 0x11, 0x16, 0x45, 0x33, 0x11, 0x66, 0x45, 0x34, 0x11, 0x67, 0x51, 0x34, 0x11, 0x6c, 0x56,
28 0x34, 0x11, 0x68, 0x56, 0x34, 0x11, 0x66, 0x56, 0x34, 0x11, 0x11, 0x43, 0x65, 0x66, 0x11, 0x43},
29 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
30 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0xf2, 0x5f, 0x03, 0x09, 0x62, 0x00, 0x65, 0x96,
31 0x11, 0x43, 0x65, 0x06, 0x11, 0x43, 0x15, 0xa6, 0x11, 0x43, 0x54, 0x66, 0x11, 0x33, 0x54, 0x61,
32 0x11, 0x32, 0x44, 0x65, 0x11, 0x32, 0x43, 0x45, 0x66, 0x66, 0x06, 0x99, 0x99, 0xa9, 0xa6, 0x99,
33 0x99, 0x09, 0x66, 0x0a, 0x99, 0x99, 0x60, 0x66, 0x90, 0x99, 0x09, 0x6a, 0x9a, 0x99, 0x99, 0x99,
34 0xa6, 0x99, 0x99, 0x99, 0x66, 0x0a, 0x99, 0x99, 0x99, 0x60, 0x66, 0x66, 0x99, 0x6a, 0x9a, 0x99,
35 0xa0, 0x66, 0x90, 0x99, 0x66, 0x06, 0x99, 0x99, 0xa6, 0x90, 0x99, 0x09, 0x99, 0x99, 0x99, 0xa9,
36 0x99, 0x99, 0x99, 0x6a, 0x99, 0x99, 0xa0, 0x66, 0x66, 0x56, 0x34, 0x11, 0x69, 0x56, 0x34, 0x11},
37 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
38 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x04, 0x0c, 0x63, 0x04, 0x09, 0x62, 0x00, 0x60, 0x56,
39 0x34, 0x11, 0x6a, 0x51, 0x34, 0x11, 0x66, 0x45, 0x34, 0x11, 0x16, 0x45, 0x33, 0x11, 0x56, 0x44,
40 0x23, 0x11, 0x54, 0x34, 0x23, 0x11, 0x11, 0x32, 0x43, 0x54, 0x11, 0x22, 0x33, 0x44, 0x11, 0x22,
41 0x32, 0x43, 0x11, 0x22, 0x22, 0x33, 0x11, 0x22, 0x22, 0x32, 0x11, 0x22, 0x22, 0x22, 0x11, 0x11,
42 0x11, 0x11, 0x10, 0x11, 0x11, 0x11, 0x64, 0x66, 0x0a, 0x90, 0x55, 0x61, 0x66, 0x66, 0x44, 0x55,
43 0x61, 0x66, 0x43, 0x44, 0x55, 0x55, 0x33, 0x43, 0x44, 0x44, 0x22, 0x33, 0x33, 0x33, 0x11, 0x11,
44 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x09, 0xa0, 0x66, 0x46, 0x66, 0x66, 0x16, 0x55, 0x66, 0x16},
45 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
46 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x05, 0x74, 0x83, 0x05, 0x09, 0x62, 0x00, 0x55, 0x44,
47 0x55, 0x55, 0x44, 0x34, 0x44, 0x44, 0x34, 0x33, 0x33, 0x33, 0x33, 0x22, 0x11, 0x11, 0x11, 0x11,
48 0x11, 0x11, 0x11, 0x11, 0x45, 0x34, 0x23, 0x11, 0x44, 0x33, 0x22, 0x11, 0x34, 0x23, 0x22, 0x11,
49 0x33, 0x22, 0x22, 0x11, 0x23, 0x22, 0x22, 0x11, 0x22, 0x22, 0x22, 0x11, 0x11, 0x11, 0x11, 0x11,
50 0x11, 0x11, 0x11, 0x01, 0x00, 0x03, 0x57, 0x00, 0x69, 0x00, 0x69, 0x00, 0x00, 0x00, 0x00, 0x00,
51 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0x00, 0x6f, 0x00,
52 0x6b, 0x00, 0x65, 0x00, 0x6d, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x46, 0x00, 0x61, 0x00},
53 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
54 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x06, 0x59, 0xf3, 0x06, 0x09, 0x62, 0x00, 0x72, 0x00,
55 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
56 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
57 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
58 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
59 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x49, 0x00, 0x4e, 0x00,
60 0x54, 0x00, 0x45, 0x00, 0x4e, 0x00, 0x44, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
61 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
62 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x07, 0x96, 0xf6, 0x07, 0x09, 0x62, 0x00, 0x00, 0x00,
63 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
64 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
65 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
66 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
68 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
69 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
70 0x86, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x08, 0xaf, 0xf6, 0x08, 0x09, 0x48, 0x00, 0x00, 0x00,
71 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
73 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
77 {0x01, 0x00, 0x01, 0x08, 0x86, 0x02, 0x40, 0x00, 0x69, 0x36, 0x70, 0x01, 0xf0, 0x01, 0x08, 0x00,
78 0x86, 0x02, 0x40, 0x00, 0x02, 0x00, 0x00, 0x09, 0xfd, 0xff, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00,
79 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
81 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
83 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
84 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
diff --git a/src/beacon_data.h b/src/beacon_data.h new file mode 100644 index 0000000..25fd734 --- /dev/null +++ b/src/beacon_data.h
@@ -0,0 +1,3 @@
1#define BEACON_PAYLOAD_LENGTH 128
2
3extern const unsigned char kBeaconPayloads[][128];
diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..aad5545 --- /dev/null +++ b/src/main.cpp
@@ -0,0 +1,97 @@
1#include <fcntl.h>
2#include <libwifi.h>
3#include <net/if.h>
4#include <netinet/ip.h>
5#include <pcap/pcap.h>
6#include <stdio.h>
7#include <sys/ioctl.h>
8#include <unistd.h>
9
10#include "beacon_data.h"
11
12int get_interface_mac_address(int sock, const char *interface, unsigned char *output)
13{
14 struct ifreq ifr = {0};
15 strcpy(ifr.ifr_name, interface);
16
17 if (ioctl(sock, SIOCGIFHWADDR, &ifr) < 0)
18 {
19 return -1;
20 }
21
22 memcpy(output, ifr.ifr_hwaddr.sa_data, 6);
23 return 0;
24}
25
26int main(int argc, char **argv)
27{
28 int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
29 if (sock == -1)
30 {
31 printf("Could not open socket.\n");
32 return 1;
33 }
34
35 unsigned char tx_addr[6];
36 if (get_interface_mac_address(sock, "wlo1", tx_addr))
37 {
38 printf("Could not get hardware address.\n");
39 return 2;
40 }
41
42 static unsigned char bcast[] = "\xFF\xFF\xFF\xFF\xFF\xFF";
43 struct libwifi_beacon beacon = {0};
44
45 if (libwifi_create_beacon(&beacon, bcast, tx_addr, tx_addr, "ballze", 7))
46 {
47 printf("Could not create beacon frame.\n");
48 return 3;
49 }
50
51 libwifi_remove_tag(&beacon.tags, TAG_SSID);
52
53 unsigned char payload_data[BEACON_PAYLOAD_LENGTH + 8];
54 payload_data[0] = 0x00;
55 payload_data[1] = 0x09;
56 payload_data[2] = 0xBF;
57 payload_data[3] = 0x00;
58 payload_data[4] = 0xFF;
59 payload_data[5] = 0xFF;
60 payload_data[6] = 0x00;
61 payload_data[7] = 0x00;
62 memcpy(payload_data + 8, kBeaconPayloads[0], BEACON_PAYLOAD_LENGTH);
63
64 if (libwifi_quick_add_tag(&beacon.tags, TAG_VENDOR_SPECIFIC, payload_data, BEACON_PAYLOAD_LENGTH + 8))
65 {
66 printf("Could not add beacon data tag.\n");
67 return 6;
68 }
69
70 size_t beacon_size = libwifi_get_beacon_length(&beacon);
71 unsigned char *beacon_output = (unsigned char *)malloc(beacon_size);
72 if (beacon_output == NULL)
73 {
74 printf("Could not allocate beacon output.\n");
75 return 4;
76 }
77
78 if (libwifi_dump_beacon(&beacon, beacon_output, beacon_size) < 0)
79 {
80 printf("Could not dump beacon.\n");
81 return 5;
82 }
83
84 libwifi_free_beacon(&beacon);
85
86 int fd = open("output.dat", O_WRONLY | O_CREAT, 00600);
87
88 static unsigned char radiotap[] = "\x00\x00\x08\x00\x00\x00\x00\x00";
89 write(fd, radiotap, 8);
90
91 write(fd, beacon_output, beacon_size);
92 close(fd);
93
94 free(beacon_output);
95
96 return 0;
97}