Difference between revisions of "SPMTP"
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...") |
(Packets) |
||
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 | ||
|} | |} |
Revision as of 14:49, 30 December 2019
Packet Structure
Handshake Packets
Header
Offset | Size | Description |
---|---|---|
0x0 | 0x2 | Magic value (0x6363) |
0x2 | 0x2 | Padding |
0x4 | 0x4 | Type |
0x8 | 0x4 | Zero |
0xC | 0x4 | Content size |
Packet Types
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)
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)
Offset | Size | Description |
---|---|---|
0x0 | 0x10 | Garbage |
Module Filter Packet (0x11/0x12)
Offset | Size | Description |
---|---|---|
0x0 | Module Filter size | Module Filter |
Friend Code Packet (0x21/0x22)
Offset | Size | Description |
---|---|---|
0x0 | 0x8 | Friend Code |
Friend Flag Packet (0x23/0x24)
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | Friend flag |
Message Box Metadata List Packet (0x31-0x34)
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
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)
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | Count |
0x4 | 0x4 * count | Entries |
TMP Box Metadata Entry
Offset | Size | Description |
---|---|---|
0x0 | 0x4 | Title ID |
0x4 | 0x4 | Size of the TMP Box which will be sent for this specific title |