diff options
| -rw-r--r-- | test/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | test/src/beacon_tests.c | 51 | ||||
| -rw-r--r-- | utils/src/test_generation.c | 5 |
3 files changed, 51 insertions, 6 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; |
| diff --git a/utils/src/test_generation.c b/utils/src/test_generation.c index 407e87f..314ce34 100644 --- a/utils/src/test_generation.c +++ b/utils/src/test_generation.c | |||
| @@ -1,10 +1,5 @@ | |||
| 1 | #include <errno.h> | 1 | #include <errno.h> |
| 2 | #include <libwifi.h> | 2 | #include <libwifi.h> |
| 3 | #include <libwifi/core/frame/management/action.h> | ||
| 4 | #include <libwifi/core/frame/management/timing_ad.h> | ||
| 5 | #include <libwifi/core/frame/tag.h> | ||
| 6 | #include <libwifi/core/misc/types.h> | ||
| 7 | #include <libwifi/gen/management/timing_ad.h> | ||
| 8 | #include <pcap.h> | 3 | #include <pcap.h> |
| 9 | #include <pcap/dlt.h> | 4 | #include <pcap/dlt.h> |
| 10 | #include <pcap/pcap.h> | 5 | #include <pcap/pcap.h> |
