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.