Raw packet data
This is the raw data for the one of the packets sent by the NDS in Pictochat, after entering a chat room.
80 21 10 01 00 00 00 40 00 00 00 00 00 03 BF 43 00 00 01 04 92 06 47 FD 00 00 00 00 00 00 00 01 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DE 00 00 00 63 00 00 00 00 00 00 00 00 80 00 00 00 FF FF FF FF FF FF 00 09 BF 34 DB 3C 00 09 BF 34 DB 3C 10 00 C6 80 25 00 00 00 00 00 C8 00 21 00 01 02 82 84 03 01 01 05 05 FA 02 00 00 00 DD 20 00 09 BF 00 0A 00 00 00 01 00 00 00 00 00 00 00 01 00 08 01 C0 00 C0 00 48 23 3E 47 00 01 04 00
AVS WLAN header
I think this was inserted by my WiFi card. Every packet received has this header.
80 21 10 01 00 00 00 40 00 00 00 00 00 03 BF 43 00 00 01 04 92 06 47 FD 00 00 00 00 00 00 00 01 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DE 00 00 00 63 00 00 00 00 00 00 00 00 80 00 00 00 FF FF FF FF FF FF 00 09 BF 34 DB 3C 00 09 BF 34 DB 3C 10 00 C6 80 25 00 00 00 00 00 C8 00 21 00 01 02 82 84 03 01 01 05 05 FA 02 00 00 00 DD 20 00 09 BF 00 0A 00 00 00 01 00 00 00 00 00 00 00 01 00 08 01 C0 00 C0 00 48 23 3E 47 00 01 04 00
These are the fields in this header, as described by this document.
- version (uint32): must be 0x80211001, ok.
- length (uint32): length in bytes of the AVS header, 0x40 bytes, ok.
- mactime (uint64): timestamp from the source. Returned 245571. From the spec, this was supposed to be nanoseconds, but by measuring the time between the packets I concluded it's actually miliseconds.
- hosttime (uint64): timestamp for the host. Returned 1119141382141. This seems to be really nanoseconds.
- phytype (uint32): physical layer. Returned 0 (unknown).
- channel (uint32): channel used. Returned 1, as I was monitoring channel 1.
- datarate (uint32): datarate for the frame, returned 20 in units of 100kbps, so the real rate was 2Mbps.
- antenna (uint32): returned 0, device does not indicate an antenna.
- priority (uint32): returned 0, device in contention period.
- ssi_type (uint32): returned 0, meaning the next two fields should not be considered.
- ssi_signal (int32): I'm ignoring this field since ssi_type is set to None.
- ssi_noise (int32): this field is ignored too.
- preamble (uint32): returned 0, preamble is Undefined.
- encoding (uint32): returned 0, encoding is Unknown.
IEEE 802.11 header
I'm going to use this manual as a reference to the 802.11 protocol.
80 21 10 01 00 00 00 40 00 00 00 00 00 03 BF 43 00 00 01 04 92 06 47 FD 00 00 00 00 00 00 00 01 00 00 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 DE 00 00 00 63 00 00 00 00 00 00 00 00 80 00 00 00 FF FF FF FF FF FF 00 09 BF 34 DB 3C 00 09 BF 34 DB 3C 10 00 C6 80 25 00 00 00 00 00 C8 00 21 00 01 02 82 84 03 01 01 05 05 FA 02 00 00 00 DD 20 00 09 BF 00 0A 00 00 00 01 00 00 00 00 00 00 00 01 00 08 01 C0 00 C0 00 48 23 3E 47 00 01 04 00
- Subtype (4 bits): set to 1000b, this is Beacon.
- Type (2 bits): set to 0, this is Management.
- Protocol version (2 bits): version 0.
- Order (1 bit): set to 0, no strict order.
- WEP (1 bit): set to 0, no WEP encryption.
- More data (1 bit): set to 0, no more frames buffered.
- Power Management (1 bit): set to 0, transmitter is not turning off.
- Retry (1 bit): set to 0, this is not a retransmission.
- More Fragments (1 bit): set to 0, this is the last fragment (actually the only one).
- From DS (1 bit): set to 0, didn´t come from Distribution System.
- To DS (1 bit): set to 0, this is not going to Distribution System.
- Duration (2 bytes): set to 0.
- Destination Address (6 bytes): set to 0xFFFFFFFFFFFF, this means this packet was broadcast.
- Source Address (6 bytes): set to 0x0009BF34DB3C. The first three bytes are Nintendo's signature (0x0009BF). The following three, I believe, is some kind of serial number for the NDS.
- Address BSSID (6 bytes): set to the same as above.
- Frame number (1 byte): set to 16, this was the packet number 16 sent from the NDS.
- Sequence number (1 byte): set to 0, this is the first packet of the frame.