Relleno del paquete 802.11 con 0 en libpcap [cerrado]

1

Estoy intentando enviar una solicitud de sonda a los puntos de acceso. Pero cada vez que envío un paquete de solicitud de sonda, se rellena con 0, es decir, veo dos paquetes en wireshark para cada paquete que envío: un paquete no acolchado y un paquete acolchado 0 al final. El relleno cambia el significado de las etiquetas en el paquete y wireshark declara el segundo paquete como un paquete con formato incorrecto. ¿Cómo elimino este relleno? También porque veo dos paquetes aunque solo envío uno.

Aquí está la función de paquete que crea el paquete:

int build_beacon(char *buf, struct network_t *n) {
    char *b = buf;
    /* prepend a minimal radiotap header */
    memset(b, 0x00, 13);
    b[2] = 13;
    b+=4;
    b = append_to_buf(b, "\x04\x80\x02\x00", 4); /*Set flags*/
    b = append_to_buf(b, "\x02", 1); /*Set bit rate*/
    b+=4;
    b = append_to_buf(b, "\x40\x00\x00\x00", 4); /* IEEE802.11 probe request */
    b = append_to_buf(b, n->dst, sizeof(mac_t)); /* destination */
    b = append_to_buf(b, n->mac, sizeof(mac_t)); /* source */
    b = append_to_buf(b, n->mac, sizeof(mac_t)); /* BSSID */

        /* sequence number */
    *(b++) = n->seq >> 8;
    *(b++) = n->seq & 0x00FF;
    n->seq++;


    *(b++) = 0; /* tag essid */
    *(b++) = strlen(n->ssid);
    b = append_str(b, n->ssid);

    /*supported rates*/
    b = append_to_buf(b, "\x01\x08\x02\x04\x0b\x16\x0c\x12\x18\x24", 10); 

    /*add channel*/
    b = append_to_buf(b, "\x03\x01", 2); /* the channel we are currently on.*/ 
    *(b++) = n->channel;


    *(b++) = 10; /* tag request info element essid */
    *(b++) = 3;  /*size of request info*/
    b = append_to_buf(b, "\x00\x07\xdd", 3);

    /*HT capability*/
    b = append_to_buf(b, "\x2d\x1a\x3c\x09\x17\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 28); 

    /*extended supported rates*/
    b = append_to_buf(b, "\x32\x04\x30\x48\x60\x6c", 6); 
    return (b-buf);
}

Aquí hay una instantánea de los dos paquetes:

Aquíestáelpaquetesinrelleno:

Aquí está el paquete con 0 rellenado. La marca de color es donde comienza el relleno.

    
pregunta faraz khan 30.06.2015 - 14:19
fuente

1 respuesta

-1

Mientras leía tu pregunta, asumí que estarías conectado a una red inalámbrica, que es un medio de transmisión. Supongo que también está capturando en todas las interfaces.

Tome nota b = append_to_buf(b, "\x32\x04\x30\x48\x60\x6c", 6); hay seis veces 00 anexadas

    
respondido por el Saint Crusty 30.06.2015 - 17:13
fuente

Lea otras preguntas en las etiquetas