tout d'abord quel type de paquet que vous essayez de faire? Les trames de données ou trames de balise .....
Si vous créez à partir de zéro, vous devez définir tous les paramètres vous-même, je suis en utilisant ce fichier d'en-tête [ieee80211] http://lxr.free-electrons.com/source/include/linux/ieee80211.h pour les paramètres de configuration 802.11, et têtes radiotap, vous pouvez utiliser [radiotap] http://lxr.free-electrons.com/source/include/net/ieee80211_radiotap.h
je peux vous donner un exemple de code (partie) de créer des cadres balise
// Add the radiotap header
radiotap->it_version = 0;
radiotap->it_len = sizeof(*radiotap) + sizeof(dataRate);
radiotap->it_present = (1 << IEEE80211_RADIOTAP_RATE);
// Beacon packet flags
dot80211->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_BEACON;
dot80211->i_fc[1] = IEEE80211_FC1_DIR_NODS;
dot80211->i_dur[0] = 0x0;
dot80211->i_dur[1] = 0x0;
// Destination = broadcast (no retries)
memcpy(dot80211->i_addr1, mac_Destination, IEEE80211_ADDR_LEN);
// Source = our own mac address
memcpy(dot80211->i_addr2, mac_source, IEEE80211_ADDR_LEN);
// BSS = our mac address
memcpy(dot80211->i_addr3, mac_BSSID, IEEE80211_ADDR_LEN);
// Sequence control: Automatically set by the driver
beacon -> beacon_timestamp = TimeStamp;
printf("%"PRIu64,beacon -> beacon_timestamp);
// interval = 100 "time units" = 102.4 ms
// Each time unit is equal to 1024 us
beacon->beacon_interval = BEACON_INTERVAL;
// capabilities = sent by ESS
//beacon->beacon_capabilities = x0003;
Par exemple:
dot80211->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_MGT | IEEE80211_FC0_SUBTYPE_BEACON;
Vous pouvez définir le FCS (contrôle de trame) comme ceci, qui est défini dans l'en-tête.
Ma suggestion est de créer vos propres fichiers d'en-tête ou le modifier selon vos besoins ..
Hope this helps ??
De quel O.S.? Quel IDE/toolchain? Quelle plateforme? – LPs
Travailler avec gcc sous Linux – Spider
Des gens d'aide? – Spider