Riempimento del pacchetto 802.11 con 0 in libpcap [chiuso]

1

Sto tentando di inviare la richiesta di probe agli Access Points.Ma ogni volta che invio un pacchetto di richiesta di probe viene riempito con 0, cioè vedo due pacchetti su wireshark per ogni pacchetto che invio: un pacchetto non-padded e un pacchetto imbottito con 0 alla fine. Il padding cambia il significato dei tag nel pacchetto e wireshark dichiara il secondo pacchetto come un pacchetto malformato. Come faccio a rimuovere questo padding. Anche perché vedo due pacchetti anche se sto inviando solo uno.

Ecco la funzione pacchetto che crea il pacchetto:

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);
}

Ecco un'istantanea dei due pacchetti:

Eccoilpacchettosenzapadding:

Questo è il pacchetto con 0 "imbottiti. Il segno colorato è il punto in cui inizia il riempimento.

    
posta faraz khan 30.06.2015 - 14:19
fonte

1 risposta

-1

Mentre leggevo la tua domanda pensavo che tu fossi su wireless, che è un mezzo di trasmissione. Presumo che tu stia catturando anche su tutte le interfacce.

Prendi nota di b = append_to_buf(b, "\x32\x04\x30\x48\x60\x6c", 6); ci sono sei volte 00 in aggiunta

    
risposta data 30.06.2015 - 17:13
fonte

Leggi altre domande sui tag