Difference between revisions of "SPMTP"

From 3dbrew
Jump to navigation Jump to search
(Created page with "= Packet Structure = == Handshake Packets == === Header === {| class="wikitable" border="1" |- ! Offset ! Size ! Description |- | 0x0 | 0x2 | Magic value (0x6363) |- | 0x2...")
 
(TMP Box Packets)
 
(One intermediate revision by the same user not shown)
Line 58: Line 58:
 
| 0x81
 
| 0x81
 
| TMP Box Metadata List
 
| TMP Box Metadata List
 +
|}
 +
 +
=== Identity Packet (0x41/0x42) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| Transferable ID
 +
|-
 +
| 0x8
 +
| 0x8
 +
| Zero
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Session ID (randomly generated for each new session)
 +
|-
 +
| 0x14
 +
| 0x6
 +
| Original MAC address (the one used for continuous scan is half-randomized)
 +
|-
 +
| 0x1A
 +
| 0x2
 +
| Padding
 +
|-
 +
| 0x1C
 +
| 0xC
 +
| Date & Time
 +
|}
 +
 +
=== Identity Accept Packet (0x43) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x10
 +
| Garbage
 +
|}
 +
 +
=== Module Filter Packet (0x11/0x12) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| Module Filter size
 +
| Module Filter
 +
|}
 +
=== Friend Code Packet (0x21/0x22) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x8
 +
| Friend Code
 +
|}
 +
 +
=== Friend Flag Packet (0x23/0x24) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Friend flag
 +
|}
 +
 +
=== Message Box Metadata List Packet (0x31-0x34) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x2
 +
| Magic value (0x6565)
 +
|-
 +
| 0x2
 +
| 0x2
 +
| Padding
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Length of the list
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Count
 +
|-
 +
| 0xC
 +
| 0x20
 +
| Unused/reserved
 +
|-
 +
| 0x2C
 +
| 0x20 * count
 +
| Entries
 +
|}
 +
==== Message Box Metadata Entry ====
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Title ID
 +
|-
 +
| 0x4
 +
| 0x1
 +
| Send mode
 +
|-
 +
| 0x5
 +
| 0x1
 +
| Flag
 +
|-
 +
| 0x6
 +
| 0x2
 +
| Send state (field modified by peer when sent back in packets 0x33/0x34)
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Send size (sum of the size of all the messages you intend to send for this specific title)
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Message count (number of messages you intend to send for this specific title)
 +
|-
 +
| 0x10
 +
| 0x10
 +
| Unused/reserved
 +
|}
 +
=== TMP Box Metadata List Packet (0x81) ===
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Count
 +
|-
 +
| 0x4
 +
| 0x4 * count
 +
| Entries
 +
|}
 +
==== TMP Box Metadata Entry ====
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x4
 +
| Title ID
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Size of the TMP Box which will be sent for this specific title
 +
|}
 +
 +
== TMP Box Packets ==
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Offset
 +
!  Size
 +
!  Description
 +
|-
 +
| 0x0
 +
| 0x2
 +
| Magic value (0x6161)
 +
|-
 +
| 0x2
 +
| 0x2
 +
| Padding
 +
|-
 +
| 0x4
 +
| 0x4
 +
| Size
 +
|-
 +
| 0x8
 +
| 0x4
 +
| Title ID
 +
|-
 +
| 0xC
 +
| 0x4
 +
| Group ID (messages can be grouped by id)
 +
|-
 +
| 0x10
 +
| 0x4
 +
| Message count
 +
|-
 +
| 0x14
 +
| 0x0 - 0x18FEC
 +
| Messages
 
|}
 
|}

Latest revision as of 15:03, 30 December 2019

Packet Structure[edit]

Handshake Packets[edit]

Header[edit]

Offset Size Description
0x0 0x2 Magic value (0x6363)
0x2 0x2 Padding
0x4 0x4 Type
0x8 0x4 Zero
0xC 0x4 Content size

Packet Types[edit]

Id Description
0x41(CLIENT) / 0x42(MASTER) Identity: original mac address, transferable id, etc.
0x43 Accepted peer's identity
0x11(CLIENT) / 0x12(MASTER) Module Filter
0x21(CLIENT) / 0x22(MASTER) Friend Code
0x23(CLIENT) / 0x24(MASTER) Friend "flag" (whether peer is in your friend list)
0x31(CLIENT) / 0x32(MASTER) Message Box Metadata List
0x33(CLIENT) / 0x34(MASTER) Message Box Metadata List parsed by peer
0x81 TMP Box Metadata List

Identity Packet (0x41/0x42)[edit]

Offset Size Description
0x0 0x8 Transferable ID
0x8 0x8 Zero
0x10 0x4 Session ID (randomly generated for each new session)
0x14 0x6 Original MAC address (the one used for continuous scan is half-randomized)
0x1A 0x2 Padding
0x1C 0xC Date & Time

Identity Accept Packet (0x43)[edit]

Offset Size Description
0x0 0x10 Garbage

Module Filter Packet (0x11/0x12)[edit]

Offset Size Description
0x0 Module Filter size Module Filter

Friend Code Packet (0x21/0x22)[edit]

Offset Size Description
0x0 0x8 Friend Code

Friend Flag Packet (0x23/0x24)[edit]

Offset Size Description
0x0 0x4 Friend flag

Message Box Metadata List Packet (0x31-0x34)[edit]

Offset Size Description
0x0 0x2 Magic value (0x6565)
0x2 0x2 Padding
0x4 0x4 Length of the list
0x8 0x4 Count
0xC 0x20 Unused/reserved
0x2C 0x20 * count Entries

Message Box Metadata Entry[edit]

Offset Size Description
0x0 0x4 Title ID
0x4 0x1 Send mode
0x5 0x1 Flag
0x6 0x2 Send state (field modified by peer when sent back in packets 0x33/0x34)
0x8 0x4 Send size (sum of the size of all the messages you intend to send for this specific title)
0xC 0x4 Message count (number of messages you intend to send for this specific title)
0x10 0x10 Unused/reserved

TMP Box Metadata List Packet (0x81)[edit]

Offset Size Description
0x0 0x4 Count
0x4 0x4 * count Entries

TMP Box Metadata Entry[edit]

Offset Size Description
0x0 0x4 Title ID
0x4 0x4 Size of the TMP Box which will be sent for this specific title

TMP Box Packets[edit]

Offset Size Description
0x0 0x2 Magic value (0x6161)
0x2 0x2 Padding
0x4 0x4 Size
0x8 0x4 Title ID
0xC 0x4 Group ID (messages can be grouped by id)
0x10 0x4 Message count
0x14 0x0 - 0x18FEC Messages