Example #1
0
/* Authenticate ourselves with the AP */
void authenticate()
{
    const void *radio_tap = NULL, *dot11_frame = NULL, *management_frame = NULL, *packet = NULL;
    size_t radio_tap_len = 0, dot11_frame_len = 0, management_frame_len = 0, packet_len = 0;

    radio_tap = build_radio_tap_header(&radio_tap_len);
    dot11_frame = build_dot11_frame_header(FC_AUTHENTICATE, &dot11_frame_len);
    management_frame = build_authentication_management_frame(&management_frame_len);
    packet_len = radio_tap_len + dot11_frame_len + management_frame_len;

    if(radio_tap && dot11_frame && management_frame)
    {
        packet = malloc(packet_len);
        if(packet)
        {
            memset((void *) packet, 0, packet_len);

            memcpy((void *) packet, radio_tap, radio_tap_len);
            memcpy((void *) ((char *) packet+radio_tap_len), dot11_frame, dot11_frame_len);
            memcpy((void *) ((char *) packet+radio_tap_len+dot11_frame_len), management_frame, management_frame_len);

            pcap_inject(get_handle(), packet, packet_len);

            free((void *) packet);
        }
    }

    if(radio_tap) free((void *) radio_tap);
    if(dot11_frame) free((void *) dot11_frame);
    if(management_frame) free((void *) management_frame);

    return;
}
Example #2
0
/* Authenticate ourselves with the AP */
static void authenticate(void)
{
	size_t radio_tap_len, dot11_frame_len, management_frame_len, packet_len, offset;
	struct radio_tap_header radio_tap;
	struct dot11_frame_header dot11_frame;
	struct authentication_management_frame management_frame;

	radio_tap_len = build_radio_tap_header(&radio_tap);
	dot11_frame_len = build_dot11_frame_header(&dot11_frame, FC_AUTHENTICATE);
	management_frame_len = build_authentication_management_frame(&management_frame);

	packet_len = radio_tap_len + dot11_frame_len + management_frame_len;

	unsigned char packet[ sizeof (struct radio_tap_header)
			    + sizeof (struct dot11_frame_header)
			    + sizeof (struct authentication_management_frame)];

	assert(packet_len == sizeof packet);

	offset = 0;

	memcpy(packet + offset, &radio_tap, radio_tap_len);
	offset += radio_tap_len;
	memcpy(packet + offset, &dot11_frame, dot11_frame_len);
	offset += dot11_frame_len;
	memcpy(packet + offset, &management_frame, management_frame_len);

	send_packet(packet, packet_len, 1);
	cprintf(VERBOSE, "[+] Sending authentication request\n");
}