4

I would like to send raw 802.11 data frames in order to transmit pictures with the ESP8266. I have the Espressif SDK 1.3 and so far I have tried to construct a packet and send it with wifi_send_pkt_freedom, but it didn't work. I cannot pick it up with wireshark or airodump-ng on Kali.

here is the code:

wifi_set_channel(5);

uint8_t packetH[36]={
0x80, 0x00, //Frame Control 
0x00, 0x00, //Duration
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //Receiver Address= Destination Address 
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, //Transmitter Address= Source Address
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, //BSSID
0x00, 0x00,                         //Sequence control
0x01, 0x02, 0x02, 0x03,0x03,0x03,0x04,0x04, //Body
0x05, 0x03, 0x02, 0x01 //FCS
};

wifi_send_pkt_freedom(packetH,sizeof(packetH),0);

For testing I just wanted to send some numbers in the Frame body, but later it should send pictures. The goal is to receive unidirectional video transmittion. One ESP8266 should send and the other one should receive. Both have their wireless card in monitor mode.

My guess is that the packet construction is complete wrong. Can someone help me understand how to "build" a proper packet?

  • For a bigger exposure on your good question I'd recommend you to post this question on Espressif's esp8266 forum at bbs.espressif.com instead. Also, maybe look at github.com/pulkin/esp8266-injection-example . – Maximilian Gerhardt Jan 28 '18 at 21:44
  • Thank you, thats a good idea. I have already looked at that example but I cannot find a way to insert data frames – Alex M. Jan 28 '18 at 21:52
  • Why do you think you want to craft custom frames to do this? What's wrong with a normal higher level protocol, like UDP? – Majenko Jan 28 '18 at 22:45
  • I think this is what CNLohr did in his latest video. He's using this SDK – Gerben Jan 29 '18 at 9:52
  • Wow CNLohr has really interesting projects. UDP is also a good option! – Alex M. Jan 29 '18 at 11:19