diff options
author | Marc <foxtrot@malloc.me> | 2022-01-09 15:20:45 +0000 |
---|---|---|
committer | Marc <foxtrot@malloc.me> | 2022-01-09 15:20:45 +0000 |
commit | 11c7393bebe4df6e2061f69787f4a7dd5c31f077 (patch) | |
tree | c8140bf65c24791874fa9b0e194773178a34da83 /test | |
parent | 8fc20c9765e8a2459b276ec2d3c0271c60e35d2f (diff) | |
download | libwifi-11c7393bebe4df6e2061f69787f4a7dd5c31f077.tar.gz libwifi-11c7393bebe4df6e2061f69787f4a7dd5c31f077.tar.bz2 libwifi-11c7393bebe4df6e2061f69787f4a7dd5c31f077.zip |
test: Add beacon parser test
Diffstat (limited to 'test')
-rw-r--r-- | test/CMakeLists.txt | 1 | ||||
-rw-r--r-- | test/src/beacon_tests.c | 51 |
2 files changed, 51 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 32934a5..64f8f36 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt | |||
@@ -53,6 +53,7 @@ add_test(NAME test_auth_gen_tags COMMAND auth_tests --auth-gen-tags) | |||
53 | 53 | ||
54 | add_test(NAME test_beacon_gen_full COMMAND beacon_tests --beacon-gen-full) | 54 | add_test(NAME test_beacon_gen_full COMMAND beacon_tests --beacon-gen-full) |
55 | add_test(NAME test_beacon_gen_tags COMMAND beacon_tests --beacon-gen-tags) | 55 | add_test(NAME test_beacon_gen_tags COMMAND beacon_tests --beacon-gen-tags) |
56 | add_test(NAME test_beacon_parse COMMAND beacon_tests --beacon-parse) | ||
56 | 57 | ||
57 | add_test(NAME test_deauth_gen_full COMMAND deauth_tests --deauth-gen-full) | 58 | add_test(NAME test_deauth_gen_full COMMAND deauth_tests --deauth-gen-full) |
58 | add_test(NAME test_deauth_gen_tags COMMAND deauth_tests --deauth-gen-tags) | 59 | add_test(NAME test_deauth_gen_tags COMMAND deauth_tests --deauth-gen-tags) |
diff --git a/test/src/beacon_tests.c b/test/src/beacon_tests.c index 1c4e17e..d152d5e 100644 --- a/test/src/beacon_tests.c +++ b/test/src/beacon_tests.c | |||
@@ -9,6 +9,18 @@ | |||
9 | const unsigned char to[] = TO_MAC; | 9 | const unsigned char to[] = TO_MAC; |
10 | const unsigned char bcast[] = BCAST_MAC; | 10 | const unsigned char bcast[] = BCAST_MAC; |
11 | 11 | ||
12 | const unsigned char beacon[] = "\x00\x00\x18\x00\x8e\x58\x00\x00\x10\x02\x6c\x09\xa0\x00\x54\x00" \ | ||
13 | "\x00\x2b\x00\x00\x9f\x61\xc9\x5c\x80\x00\x00\x00\xff\xff\xff\xff" \ | ||
14 | "\xff\xff\x00\x0c\x41\x82\xb2\x55\x00\x0c\x41\x82\xb2\x55\x50\xf8" \ | ||
15 | "\x89\xf1\xd4\x1b\x01\x00\x00\x00\x64\x00\x11\x04\x00\x07\x43\x6f" \ | ||
16 | "\x68\x65\x72\x65\x72\x01\x08\x82\x84\x8b\x96\x24\x30\x48\x6c\x03" \ | ||
17 | "\x01\x01\x05\x04\x00\x01\x00\x00\x2a\x01\x02\x2f\x01\x02\x30\x18" \ | ||
18 | "\x01\x00\x00\x0f\xac\x02\x02\x00\x00\x0f\xac\x04\x00\x0f\xac\x02" \ | ||
19 | "\x01\x00\x00\x0f\xac\x02\x00\x00\x32\x04\x0c\x12\x18\x60\xdd\x06" \ | ||
20 | "\x00\x10\x18\x02\x00\x04\xdd\x1c\x00\x50\xf2\x01\x01\x00\x00\x50" \ | ||
21 | "\xf2\x02\x02\x00\x00\x50\xf2\x04\x00\x50\xf2\x02\x01\x00\x00\x50" \ | ||
22 | "\xf2\x02\x00\x00\x9f\x61\xc9\x5c"; | ||
23 | |||
12 | int test_beacon_gen_full() { | 24 | int test_beacon_gen_full() { |
13 | struct libwifi_beacon beacon = {0}; | 25 | struct libwifi_beacon beacon = {0}; |
14 | 26 | ||
@@ -48,7 +60,10 @@ int test_beacon_add_tag() { | |||
48 | return ret; | 60 | return ret; |
49 | } | 61 | } |
50 | 62 | ||
51 | ret = libwifi_quick_add_tag(&beacon.tags, TAG_VENDOR_SPECIFIC, (const unsigned char *) "\x00\x11\x22\xAAHello World", 15); | 63 | ret = libwifi_quick_add_tag(&beacon.tags, |
64 | TAG_VENDOR_SPECIFIC, | ||
65 | (const unsigned char *) "\x00\x11\x22\xAAHello World", | ||
66 | 15); | ||
52 | if (ret != 0) { | 67 | if (ret != 0) { |
53 | fprintf(stderr, "Failed to add beacon tagged parameter: %s\n", strerror(ret)); | 68 | fprintf(stderr, "Failed to add beacon tagged parameter: %s\n", strerror(ret)); |
54 | return ret; | 69 | return ret; |
@@ -75,6 +90,38 @@ int test_beacon_add_tag() { | |||
75 | return 0; | 90 | return 0; |
76 | } | 91 | } |
77 | 92 | ||
93 | int test_beacon_parse() { | ||
94 | struct libwifi_frame frame = {0}; | ||
95 | struct libwifi_bss bss = {0}; | ||
96 | |||
97 | int ret = libwifi_get_wifi_frame(&frame, beacon, sizeof(beacon), 1); | ||
98 | if (ret != 0) { | ||
99 | return ret; | ||
100 | } | ||
101 | |||
102 | if (frame.frame_control.type != TYPE_MANAGEMENT || frame.frame_control.subtype != SUBTYPE_BEACON) { | ||
103 | return -1; | ||
104 | } | ||
105 | |||
106 | ret = libwifi_parse_beacon(&bss, &frame); | ||
107 | if (ret != 0) { | ||
108 | return ret; | ||
109 | } | ||
110 | |||
111 | if (strcmp(bss.ssid, "Coherer") != 0) { | ||
112 | return -2; | ||
113 | } | ||
114 | |||
115 | if (bss.channel != 1) { | ||
116 | return -3; | ||
117 | } | ||
118 | |||
119 | libwifi_free_bss(&bss); | ||
120 | libwifi_free_wifi_frame(&frame); | ||
121 | |||
122 | return 0; | ||
123 | } | ||
124 | |||
78 | int main(int argc, char **argv) { | 125 | int main(int argc, char **argv) { |
79 | if (argc < 2) { | 126 | if (argc < 2) { |
80 | printf("Specify test\n"); | 127 | printf("Specify test\n"); |
@@ -85,6 +132,8 @@ int main(int argc, char **argv) { | |||
85 | return test_beacon_gen_full(); | 132 | return test_beacon_gen_full(); |
86 | } else if (strcmp(argv[1], "--beacon-gen-tags") == 0) { | 133 | } else if (strcmp(argv[1], "--beacon-gen-tags") == 0) { |
87 | return test_beacon_add_tag(); | 134 | return test_beacon_add_tag(); |
135 | } else if (strcmp(argv[1], "--beacon-parse") == 0) { | ||
136 | return test_beacon_parse(); | ||
88 | } | 137 | } |
89 | 138 | ||
90 | return -1; | 139 | return -1; |