Exemple #1
0
int8_t
dot1x_learn_packet(struct attacks *attacks, char *iface, u_int8_t *stop, void *data, struct pcap_pkthdr *header)
{
    struct dot1x_data *dot1x_data;
    struct pcap_data pcap_aux;
    u_int8_t *packet, got_802_1x_pkt = 0;
    u_int16_t *cursor;
    dlist_t *p;
    struct interface_data *iface_data;
    
    dot1x_data = data;

    if ((packet = calloc(1, SNAPLEN)) == NULL)
        return -1;

    if (iface) {
       p = dlist_search(attacks->used_ints->list, attacks->used_ints->cmp, iface);
       if (!p)
          return -1;
       iface_data = (struct interface_data *) dlist_data(p);
    } 
    else
       iface_data = NULL;

    while (!got_802_1x_pkt && !(*stop))
    {
        interfaces_get_packet(attacks->used_ints, iface_data, stop, header, packet, PROTO_DOT1X, NO_TIMEOUT);
           
        if (*stop)
        {
            free(packet);
            return -1;
        }

        cursor = (u_int16_t *)(packet + 12);

        pcap_aux.header = header;
        pcap_aux.packet = packet;
                                                                                          
        if (!dot1x_load_values((struct pcap_data *)&pcap_aux, dot1x_data))
           got_802_1x_pkt = 1;
        
    } /* While got */

    free(packet);

    return 0;
}
Exemple #2
0
int8_t dot1x_learn_packet( struct attacks *attacks, char *iface, u_int8_t *stop, void *data, struct pcap_pkthdr *header )
{
    struct dot1x_data *dot1x_data = (struct dot1x_data *)data;
    struct interface_data *iface_data;
    struct pcap_data pcap_aux;
    u_int8_t *packet, got_802_1x_pkt = 0;
    int8_t ret = -1 ;
    dlist_t *p;
    
    if ( iface ) 
    {
        p = dlist_search( attacks->used_ints->list, attacks->used_ints->cmp, iface );
        if (!p)
            return -1;
        iface_data = (struct interface_data *) dlist_data(p);
    } 
    else
        iface_data = NULL;

    packet = (u_int8_t *)calloc( 1, SNAPLEN );

    if ( packet )
    {
        while ( !got_802_1x_pkt && !(*stop) )
        {
            interfaces_get_packet( attacks->used_ints, iface_data, stop, header, packet, PROTO_DOT1X, NO_TIMEOUT );
               
            if ( !(*stop) )
            {
                pcap_aux.header = header;
                pcap_aux.packet = packet;
                                                                                              
                if ( !dot1x_load_values( (struct pcap_data *)&pcap_aux, dot1x_data ) )
                {
                    got_802_1x_pkt = 1;
                    ret = 0 ;
                }
            }
        }

        free(packet);
    }

    return ret ;
}