ESP-IDF have exported function esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
It allows user to send raw ieee802.11 packets, it allows only certain types of packet.
To bypass check and send all packets you want you need to remove one call and replace it with mov instruction.
To use bypass copy "bypass.S" next to your "main.c", change CMakeLists.txt to something like this:
idf_component_register(SRCS "main.c" "bypass.S" "other_c_files.c" INCLUDE_DIRS ".")
and use esp_wifi_80211_tx_mod
to send any packet you want using example code from bypass.c
This is only for educational purposes and provided "AS IS"
@wojtess, thanks for replying soon.
I've tried all frames types, thanks to your unlimited version of esp_wifi_80211_tx, but nothing has made a certain station to react. Indeed, I have not experimented other combinations with "from DS" and "to DS", so there is still a hope. All I have done was with both "to DS" and "from DS" equal to zero.
I'll keep you informed.
A beacon frame does not cause a station to transmit anything.
To make clear what I am trying to do: I intend to find a way to make a specific station (whose MAC address is known) to transmit a frame that I can sniff, no matter which type of frame this station outputs.