├── NinMainTiming.txt ├── PayloadTypes ├── 36 3d3 Uncompressed Data Format ├── PayloadType - 00 ├── PayloadType - 01 ├── PayloadType - 01,0x01 ├── PayloadType - 02 ├── PayloadType - 04 ├── PayloadType - 06 ├── PayloadType - 32 ├── PayloadType - 36 └── PayloadType - 36,0x03d3 │ ├── 0x103c │ ├── 0x1058 │ ├── 30 - 0103 │ └── 30 - 0104 ├── Tools ├── capture2db.js ├── deletesession.js ├── reprocess.js ├── sessions.js └── slicedb.js ├── binlook-handshake.js ├── binlook-t.js ├── binlook.js ├── config.default.json ├── index.js ├── lib ├── Log.js ├── Pack.js ├── Ping.js ├── dissectors │ ├── 200a.js │ ├── 200f.js │ ├── 201a.js │ ├── 302a.js │ ├── 302d.js │ ├── 3032.js │ ├── 303a.js │ ├── 3062.js │ ├── CommandControl.js │ ├── Dummy.js │ ├── Event.js │ ├── Gear.js │ ├── Handshake.js │ ├── Movement.js │ ├── NinFrame.js │ ├── Ping.js │ └── index.js ├── net │ ├── Capture.js │ ├── Decoder.js │ ├── Playback.js │ └── builtin.js ├── peer │ ├── Handshake.js │ └── index.js ├── state │ ├── Connections.js │ ├── Peer.js │ ├── Route.js │ └── State.js └── util.js ├── package.json └── play.js /NinMainTiming.txt: -------------------------------------------------------------------------------- 1 | Magic Sub ID Counter ms1 ms2 Flags Slot Size ??? NNID Type ??? HMAC? 2 | [32 AB 98 64] [01] [00] [00 00] [FF 77] [00 00] [00] [01] [00 00] [00 00 00 03] [7D 04 78 59] [45] [00 C0 00 00 00 00 00 00] [Payload][padding] [7D F6 19 32 CF 87 E8 A6 23 D4 AB D6 15 4A 77 43] 3 | 4 | Magic: magic marker. 5 | Sub: Some type of subtype indicator. 6 | ID: The id of target client. If the packet is a broadcast to all clients this will be set to zero 7 | Counter: big-endian. If ID is zero then counter will be zero (broadcast?) 8 | ms1: Local time in millseconds truncated to 16bit short big-endian 9 | ms2: Remote time in millseconds truncated to 16bit short big-endian if ID is zero then this will be zero too. 10 | Flags: No clue what this is used for. 11 | Slot: The lobby slot the player is occupying. Initial connection player will try for slot 2 for some reason. 12 | Size: Length of the payload minus the overhead as big-endian. 13 | NNID: Global numerical id for user on Nintendo's network. 14 | Type: Payload type. 15 | HMAC: Used to validate and sign the packet. This used to be 128 bits but is now 96 bits. -------------------------------------------------------------------------------- /PayloadTypes/36 3d3 Uncompressed Data Format: -------------------------------------------------------------------------------- 1 | After decompressing the zlib payload from Packet 36 Subtype 03-d3, the resulting data is of the form 2 | Type Length Payload 3 | [20] [06 00] [010105] 4 | 5 | Payload section seems to be big endian, unlike header, which is little-endian 6 | 7 | The length includes the header, as the example above shows. 8 | 9 | There can be more than one subpacket in each decompressed payload. 10 | 11 | Type 30: 12 | 13 | [30] [31 00] [01 03] [xx xx] [xx xx] [data] 14 | e.g 15 | [30] [31 00] [01 03] [01 04] [00 fa] 04 00 00 00 ff 00 08 66 a0 ff ff ff ff ff ff 55 55 61 f8 13 7a b5 1f c3 2c 40 89 86 82 73 2f 60 f4 fe 73 d7 ff fe 0a 0d] 16 | |upward counter; never decreases 17 | |counter that is always a few behind the upward counter; doesn't increase as frequently 18 | [30] [07 00] [01 04] [xx xx] <- same upward counter as previous type 103; probably an ACK packet for 103 19 | [30] [3a 00] [03 03] [00 01] [00 01] 01 00 00 00 ff 00 08 8b 39 ff ff ff ff ff ff 55 55 [c2 20 00 00] [42 80 00 00] [c4 13 80 00] 00 00 00 00 80 00 00 00 3f 7f ff ff 00 78 00 77 03 00 00 00 20 | Contains 3 floats corresponding to the spawn point (-40, 60, -590) of Blackbelly Skatepark, the map the packet was captured from; possibly a respawn/set spawn point packet? 21 | [30] [07 00] [03 04] [xx xx] <- same upward counter as type 303; probably an ACK packet for 303; sometimes sent without a corresponding 303 though -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 00: -------------------------------------------------------------------------------- 1 | PayloadType 00 (Null Packet) 2 | Always empty. 3 | -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 01: -------------------------------------------------------------------------------- 1 | PayloadType 01 (connection control handshake) 2 | 3 | t220.215.226.162 01 10 0500322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e88 4 | r220.215.226.162 05 000000 e1783e88 5 | r220.215.226.162 01 69 0501dcd7e2a2d56f000069b738eb0000000008 b27458010f0001020300c0a80012dab40000 69b738eb 0000000008 b27458 010f0001020000 cdc60e7e 6 | t220.215.226.162 05 000000 cdc60e7e 7 | t220.215.226.162 02 000503305f305f310000000000000000000000000000000000000000000000000000000053006800720061006700650069000000000000000000000000000000000000070002061bc00000 e1783e89 8 | r220.215.226.162 05 000000 e1783e89 9 | r220.215.226.162 02 000503305f305f31000000000000000000000000000000000000000000000000000000304f304830593068000000000000000000000000000000000000000000000000040002061bc00000 cdc60e80 10 | t220.215.226.162 05 000000 cdc60e80 11 | r220.215.226.162 05 000000 e1783e8a 12 | t220.215.226.162 05 000000 cdc60e87 13 | (...) 14 | Lost Connection 15 | 16 | t125.215.125.208 01 06 0500322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e8b 17 | r125.215.125.208 05 000000 e1783e8b 18 | r125.215.125.208 01 23 05017dd77dd0e4740000698da5480000000008 ae27d2010f0001020300c0a80a50ceb80000 698da548 0000000008 ae27d2 010f0001020000 125fb716 19 | t125.215.125.208 05 000000 125fb716 20 | t125.215.125.208 02 000503305f305f310000000000000000000000000000000000000000000000000000000053006800720061006700650069000000000000000000000000000000000000070002061bc00000 e1783e93 21 | r125.215.125.208 05 000000 e1783e93 22 | r125.215.125.208 02 000503305f305f31000000000000000000000000000000000000000000000000000000304f308d306d3053000000000000000000000000000000000000000000000000040002061bc00000 125fb718 23 | t125.215.125.208 05 000000 125fb718 24 | (...) 25 | r125.215.125.208 03 (leaves lobby) 26 | t125.215.125.208 04 27 | 28 | t111.100.070.168 01 06 0500322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e8c 29 | r111.100.070.168 05 000000 e1783e8c 30 | r111.100.070.168 01 b3 05016f6446a8e09000006b40e8310000000008 b041e8010f0001020300c0a80003d04d0000 6b40e831 0000000008 b041e8 010f0001020000 248cde22 31 | t111.100.070.168 05 000000 248cde22 32 | t111.100.070.168 02 000503305f305f310000000000000000000000000000000000000000000000000000000053006800720061006700650069000000000000000000000000000000000000070002061bc00000 e1783e92 33 | r111.100.070.168 05 000000 e1783e92 34 | r111.100.070.168 02 000503305f305f310000000000000000000000000000000000000000000000000000003086304d00000000000000000000000000000000000000000000000000000000020002061bc00000 248cde23 35 | t111.100.070.168 05 000000 248cde23 36 | (...) 37 | t111.100.070.168 05 000000 248cde27 38 | r111.100.070.168 05 000000 e1783e97 39 | t111.100.070.168 03 40 | r111.100.070.168 04 41 | 42 | t101.001.166.162 01 1d 0500322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e8d 43 | r101.001.166.162 05 000000 e1783e8d 44 | r101.001.166.162 01 15 05016501a6a2821a00006af04b240000000008 b19911010f0001020300c0a8020282300000 6af04b24 0000000008 b19911 010f0001020000 89115b52 45 | t101.001.166.162 05 000000 89115b52 46 | t101.001.166.162 02 000503305f305f310000000000000000000000000000000000000000000000000000000053006800720061006700650069000000000000000000000000000000000000070002061bc00000 e1783e90 47 | r101.001.166.162 05 000000 e1783e90 48 | r101.001.166.162 02 000503305f305f310000000000000000000000000000000000000000000000000000003055304f308430553093002830a230eb30fc00290000000000000000000000000a0002061bc00000 89115b53 49 | t101.001.166.162 05 000000 89115b53 50 | (...) 51 | r101.001.166.162 05 000000 e1783e98 52 | t101.001.166.162 03 53 | r101.001.166.162 04 54 | 55 | t119.148.235.194 01 4a 0500322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e8e 56 | r119.148.235.194 05 000000 e1783e8e 57 | r119.148.235.194 01 22 05017794ebc2e7b200006af232470000000008 adcf31010f0001020300ac106f09f7510000 6af23247 0000000008 adcf31 010f0001020000 f3d8910a 58 | t119.148.235.194 05 000000 f3d8910a 59 | t119.148.235.194 02 000503305f305f31000000000000000000000000000000000000000000000000000000 0053006800720061 0067006500690000 0000000000000000 0000000000000000 070002061bc00000 e1783e91 60 | r119.148.235.194 05 000000 e1783e91 61 | r119.148.235.194 02 000503305f305f31000000000000000000000000000000000000000000000000000000 30a430abfffffffd fffffffffffffffd fffffffffffffffd fffffffffffffffd 020002061bc00000 f3d8910b 62 | t119.148.235.194 05 000000 f3d8910b 63 | (...) 64 | t119.148.235.194 05 000000 f3d8910f 65 | r119.148.235.194 05 000000 e1783e99 66 | r119.148.235.194 03 67 | t119.148.235.194 04 68 | 69 | t218.185.130.212 01 9c 0500322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e8f 70 | r218.185.130.212 05 000000 e1783e8f 71 | r218.185.130.212 01 ea 0501dab982d4f2cc00006ae66a890000000008 b23bae010f0001020300c0a80b09d1960000 6ae66a89 0000000008 b23bae 010f0001020000 01e25b96 72 | t218.185.130.212 05 000000 01e25b96 73 | t218.185.130.212 02 000503305f305f31000000000000000000000000000000000000000000000000000000 0053006800720061 0067006500690000 0000000000000000 0000000000000000 070002061bc00000 e1783e95 74 | r218.185.130.212 05 000000 e1783e95 75 | r218.185.130.212 02 000503305f305f31000000000000000000000000000000000000000000000000000000 00730065006efffd fffffffffffffffd fffffffffffffffd fffffffffffffffd 030002061bc00000 01e25b97 76 | t218.185.130.212 05 000000 01e25b97 77 | (...) 78 | t218.185.130.212 05 000000 01e25b9b 79 | r218.185.130.212 05 000000 e1783e9a 80 | r218.185.130.212 03 81 | t218.185.130.212 04 82 | 83 | r123.255.133.191 01 f6 05007bff85bfd2bf00006af2192f0000000008 b2360f010f0001020300c0a8b306ef360000 6af2192f 0000000008 b2360f 010f0001020000 ce75c41c 84 | t123.255.133.191 05 000000 ce75c41c 85 | t123.255.133.191 01 cd 0501322ee124d7c600006a4a538f0000000008 b2562d010f0001020300c0a8024ae4a90000 6a4a538f 0000000008 b2562d 010f0001020000 e1783e94 86 | r123.255.133.191 05 000000 e1783e94 87 | r123.255.133.191 02 000503305f305f31000000000000000000000000000000000000000000000000000000 3044304f305ffffd fffffffffffffffd fffffffffffffffd fffffffffffffffd 030002061bc00000 ce75c422 88 | t123.255.133.191 05 000000 ce75c422 89 | t123.255.133.191 02 000503305f305f31000000000000000000000000000000000000000000000000000000 0053006800720061 0067006500690000 0000000000000000 0000000000000000 070002061bc00000 e1783e96 90 | r123.255.133.191 05 000000 e1783e96 91 | (...) 92 | r123.255.133.191 05 000000 e1783e9b 93 | t123.255.133.191 03 94 | r123.255.133.191 03 95 | r123.255.133.191 04 96 | t123.255.133.191 04 97 | 98 | 01 start of handshake 99 | 02 second phase of handshake 100 | 03 disconnect? 101 | 04 disconnect acknowledge? 102 | 05 is acknowledge. 103 | 104 | Last 4 bytes used as a sequence number. Not used for types 3 and 4. -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 01,0x01: -------------------------------------------------------------------------------- 1 | 2 | N-zap 89 3 | 0122050 0 322e e3c8cefb 00006a4a538f00000000 0040e7ce 010f0001020300c0a802 4afb76 00006a4a538f0000000000 40e7ce 010f0001020000 74fe2840 4 | 012b050 1 322e e3c8cefb 00006a4a538f00000000 0040e7ce 010f0001020300c0a802 4aeb90 00006a4a538f0000000000 40e7ce 010f0001020000 74fe2854 5 | 0152050 0 322e e3c8f143 00006a4a538f00000000 00415fa5 010f0001020300c0a802 4acf5f 00006a4a538f0000000000 415fa5 010f0001020000 d977ffc8 6 | 017b050 0 322e e3c8f143 00006a4a538f00000000 00415fa5 010f0001020300c0a802 4ae7ea 00006a4a538f0000000000 415fa5 010f0001020000 d977ffd9 7 | 8 | 9 | 02000503305f305f3100000000000000000000000000000000000000000000000000000000530068007200610067006500690000000000000000000000000000000000000700032dfd16000074fe2841 10 | 02000503305f305f3100000000000000000000000000000000000000000000000000000000530068007200610067006500690000000000000000000000000000000000000700032e1623000074fe2855 11 | 02000503305f305f3100000000000000000000000000000000000000000000000000000000530068007200610067006500690000000000000000000000000000000000000700032e21240000d977ffc9 12 | 02000503305f305f3100000000000000000000000000000000000000000000000000000000530068007200610067006500690000000000000000000000000000000000000700032e1e0b0000d977ffda -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 02: -------------------------------------------------------------------------------- 1 | PayloadType 02 (Sometype of client/server protocol only one client in the lobby uses it) 2 | 3 | 4 | Inbound 5 | 0003023c00000000fffff82ffffff82f000000000000000020080000000000fb0100080062c58874f52600006a54a04100000000005fa49c010f000102 03 00c0a80079c803 6 | 00006a54a04100000000005fa49c010f000102 00 0001005ded8c2dca2a 7 | 000069ad06c500000000005e4217010f000101 03 00c0a80264ca57 8 | 000069ad06c500000000005e4217010f000101 00 0007005dd9ba98d5f1 9 | 00006a4229220000000000609eb2010f000102 03 00c0a8b21afc9f 10 | 00006a4229220000000000609eb2010f000102 00 0003007a118c3cf26d 11 | 00006b231c98000000000060ac97010f000102 03 00c0a80b04eac3 12 | 00006b231c98000000000060ac97010f000102 00 0000007e0be018d187 13 | 00006a4af497000000000060841d010f000102 03 00c0a80268ec6b 14 | 00006a4af497000000000060841d010f000102 00 0002007c9080c4d563 15 | 00006a4d1d2b00000000005cec94010f000102 03 00c0a80064eb19 16 | 00006a4d1d2b00000000005cec94010f000102 00 000400cf51eccdd86b 17 | 00006998df250000000000608d90010f000102 03 00c0a80152fe66 18 | 00006998df250000000000608d90010f000102 00 000600322ee3c8dc4f 19 | 00006a4a538f00000000005ff22a010f000102 03 00c0a8024add47 20 | 00006a4a538f00000000005ff22a010f000102 00 0005000000000000 21 | 00000000000000000000000000000000000000 00 000000000000000000 22 | 00000000000000000000000000000000000000 00 000000000000000000 23 | 00000000000000000000000000000000000000 00 000000000000000000 24 | 00000000000000000000000000000000000000 00 25 | 0003023c00000000fffff83dfffff830000000000000000020080000000000fb0100080062c58874f52600006a54a04100000000005fa49c010f000102 03 00c0a80079c803 26 | 00006a54a04100000000005fa49c010f000102 00 0001005ded8c2dca2a 27 | 000069ad06c500000000005e4217010f000101 03 00c0a80264ca57 28 | 000069ad06c500000000005e4217010f000101 00 0007005dd9ba98d5f1 29 | 00006a4229220000000000609eb2010f000102 03 00c0a8b21afc9f 30 | 00006a4229220000000000609eb2010f000102 00 0003007a118c3cf26d 31 | 00006b231c98000000000060ac97010f000102 03 00c0a80b04eac3 32 | 00006b231c98000000000060ac97010f000102 00 0000007e0be018d187 33 | 00006a4af497000000000060841d010f000102 03 00c0a80268ec6b 34 | 00006a4af497000000000060841d010f000102 00 0002007c9080c4d563 35 | 00006a4d1d2b00000000005cec94010f000102 03 00c0a80064eb19 36 | 00006a4d1d2b00000000005cec94010f000102 00 000400cf51eccdd86b 37 | 00006998df250000000000608d90010f000102 03 00c0a80152fe66 38 | 00006998df250000000000608d90010f000102 00 000600322ee3c8dc4f 39 | 00006a4a538f00000000005ff22a010f000102 03 00c0a8024add47 40 | 00006a4a538f00000000005ff22a010f000102 00 000500000000000000 41 | 00000000000000000000000000000000000000 00 000000000000000000 42 | 00000000000000000000000000000000000000 00 000000000000000000 43 | 00000000000000000000000000000000000000 00 000000000000000000 44 | 00000000000000000000000000000000000000 45 | 0003023c00000000fffff83efffff830000000000000000020080000000000fb0100080062c58874f52600006a54a04100000000005fa49c010f000102 03 00c0a80079c803 46 | 00006a54a04100000000005fa49c010f000102 00 0001005ded8c2dca2a 47 | 000069ad06c500000000005e4217010f000101 03 00c0a80264ca57 48 | 000069ad06c500000000005e4217010f000101 00 0007005dd9ba98d5f1 49 | 00006a4229220000000000609eb2010f000102 03 00c0a8b21afc9f 50 | 00006a4229220000000000609eb2010f000102 00 0003007a118c3cf26d 51 | 00006b231c98000000000060ac97010f000102 03 00c0a80b04eac3 52 | 00006b231c98000000000060ac97010f000102 00 0000007e0be018d187 53 | 00006a4af497000000000060841d010f000102 03 00c0a80268ec6b 54 | 00006a4af497000000000060841d010f000102 00 0002007c9080c4d563 55 | 00006a4d1d2b00000000005cec94010f000102 03 00c0a80064eb19 56 | 00006a4d1d2b00000000005cec94010f000102 00 000400cf51eccdd86b 57 | 00006998df250000000000608d90010f000102 03 00c0a80152fe66 58 | 00006998df250000000000608d90010f000102 00 000600322ee3c8dc4f 59 | 00006a4a538f00000000005ff22a010f000102 03 00c0a8024add47 60 | 00006a4a538f00000000005ff22a010f000102 00 000500000000000000 61 | 00000000000000000000000000000000000000 00 000000000000000000 62 | 00000000000000000000000000000000000000 00 000000000000000000 63 | 00000000000000000000000000000000000000 00 000000000000000000 64 | 00000000000000000000000000000000000000 65 | 0003023c00000000fffff83ffffff830000000000000000020080000000000fb0100080062c58874f52600006a54a04100000000005fa49c010f000102 03 00c0a80079c803 66 | 00006a54a04100000000005fa49c010f000102 00 0001005ded8c2dca2a 67 | 000069ad06c500000000005e4217010f000101 03 00c0a80264ca57 68 | 000069ad06c500000000005e4217010f000101 00 0007005dd9ba98d5f1 69 | 00006a4229220000000000609eb2010f000102 03 00c0a8b21afc9f 70 | 00006a4229220000000000609eb2010f000102 00 0003007a118c3cf26d 71 | 00006b231c98000000000060ac97010f000102 03 00c0a80b04eac3 72 | 00006b231c98000000000060ac97010f000102 00 0000007e0be018d187 73 | 00006a4af497000000000060841d010f000102 03 00c0a80268ec6b 74 | 00006a4af497000000000060841d010f000102 00 0002007c9080c4d563 75 | 00006a4d1d2b00000000005cec94010f000102 03 00c0a80064eb19 76 | 00006a4d1d2b00000000005cec94010f000102 00 000400cf51eccdd86b 77 | 00006998df250000000000608d90010f000102 03 00c0a80152fe66 78 | 00006998df250000000000608d90010f000102 00 000600322ee3c8dc4f 79 | 00006a4a538f00000000005ff22a010f000102 03 00c0a8024add47 80 | 00006a4a538f00000000005ff22a010f000102 00 000500000000000000 81 | 00000000000000000000000000000000000000 00 000000000000000000 82 | 00000000000000000000000000000000000000 00 000000000000000000 83 | 00000000000000000000000000000000000000 00 000000000000000000 84 | 00000000000000000000000000000000000000 85 | 0003023c00000000fffff840fffff830000000000000000020080000000000fb0100080062c58874f52600006a54a04100000000005fa49c010f000102 03 00c0a80079c803 86 | 00006a54a04100000000005fa49c010f000102 00 0001005ded8c2dca2a 87 | 000069ad06c500000000005e4217010f000101 03 00c0a80264ca57 88 | 000069ad06c500000000005e4217010f000101 00 0007005dd9ba98d5f1 89 | 00006a4229220000000000609eb2010f000102 03 00c0a8b21afc9f 90 | 00006a4229220000000000609eb2010f000102 00 0003007a118c3cf26d 91 | 00006b231c98000000000060ac97010f000102 03 00c0a80b04eac3 92 | 00006b231c98000000000060ac97010f000102 00 0000007e0be018d187 93 | 00006a4af497000000000060841d010f000102 03 00c0a80268ec6b 94 | 00006a4af497000000000060841d010f000102 00 0002007c9080c4d563 95 | 00006a4d1d2b00000000005cec94010f000102 03 00c0a80064eb19 96 | 00006a4d1d2b00000000005cec94010f000102 00 000400cf51eccdd86b 97 | 00006998df250000000000608d90010f000102 03 00c0a80152fe66 98 | 00006998df250000000000608d90010f000102 00 000600322ee3c8dc4f 99 | 00006a4a538f00000000005ff22a010f000102 03 00c0a8024add47 100 | 00006a4a538f00000000005ff22a010f000102 00 000500000000000000 101 | 00000000000000000000000000000000000000 00 000000000000000000 102 | 00000000000000000000000000000000000000 00 000000000000000000 103 | 00000000000000000000000000000000000000 00 000000000000000000 104 | 00000000000000000000000000000000000000 105 | 106 | -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 04: -------------------------------------------------------------------------------- 1 | 2 | 202.32.117.142 Outbound 44756d6d79 3 | 202.32.117.142 Outbound 44756d6d79 4 | 202.32.117.142 Outbound 44756d6d79 5 | 202.32.117.142 Outbound 44756d6d79 6 | 202.32.117.142 Outbound 44756d6d79 7 | 202.32.117.142 Outbound 44756d6d79 8 | 202.32.117.142 Outbound 44756d6d79 9 | 202.32.117.142 Outbound 44756d6d79 10 | 202.32.117.142 Outbound 44756d6d79 11 | 202.32.117.142 Outbound 44756d6d79 12 | 202.32.117.142 Outbound 44756d6d79 13 | 202.32.117.142 Outbound 44756d6d79 14 | 202.32.117.142 Outbound 44756d6d79 15 | 202.32.117.142 Outbound 44756d6d79 16 | 202.32.117.142 Outbound 44756d6d79 17 | 202.32.117.142 Outbound 44756d6d79 18 | 202.32.117.142 Outbound 44756d6d79 19 | 202.32.117.142 Outbound 44756d6d79 20 | 220.215.226.162 Inbound 08b2745800000003000000 2527aec665 21 | 220.215.226.162 Inbound 08b2745800000003000000 2527aec801 22 | 220.215.226.162 Outbound 08b2562d01c79890000000 2527aec665 23 | 220.215.226.162 Outbound 08b2562d01c6dd40000000 2527aec801 24 | 119.148.235.194 Inbound 08adcf3100000008000000 74ad441af8 25 | 119.148.235.194 Inbound 08adcf3100000008000000 74ad441df6 26 | 119.148.235.194 Outbound 08b2562d01c79890000000 74ad441af8 27 | 119.148.235.194 Outbound 08b2562d01c79890000000 74ad441df6 28 | 111.100.70.168 Inbound 08b041e800000008000000 3ac113097b 29 | 111.100.70.168 Inbound 08b041e800000008000000 3ac1130c63 30 | 111.100.70.168 Outbound 08b2562d01c79890000000 3ac113097b 31 | 111.100.70.168 Outbound 08b2562d01c6dd40000000 3ac1130c63 32 | 101.1.166.162 Outbound 08b2562d00000008000000 0b877ac1f8 33 | 101.1.166.162 Outbound 08b2562d00000008000000 0b877ac50f 34 | 101.1.166.162 Inbound 08b1991100000008000000 1be22d65ab 35 | 101.1.166.162 Inbound 08b1991100000008000000 1be22d68a1 36 | 101.1.166.162 Outbound 08b2562d01c79890000000 1be22d65ab 37 | 101.1.166.162 Outbound 08b2562d01c6dd40000000 1be22d68a1 38 | 101.1.166.162 Inbound 08b1991101c79890000000 0b877ac1f8 39 | 101.1.166.162 Inbound 08b1991101c6dd40000000 0b877ac50f 40 | 125.215.125.208 Inbound 08ae27d200000008000000 6cd1147002 41 | 125.215.125.208 Inbound 08ae27d200000008000000 6cd114737c 42 | 125.215.125.208 Outbound 08b2562d01c79890000000 6cd1147002 43 | 125.215.125.208 Outbound 08b2562d01c6dd40000000 6cd114737c 44 | 218.185.130.212 Inbound 08b23bae00000008000000 0d98e10823 45 | 218.185.130.212 Inbound 08b23bae00000008000000 0d98e10de5 46 | 218.185.130.212 Outbound 08b2562d01c79890000000 0d98e10823 47 | 218.185.130.212 Outbound 08b2562d01c6dd40000000 0d98e10de5 48 | 218.185.130.212 Inbound 08b23bae00000008000000 0d9a0d0a73 49 | 218.185.130.212 Inbound 08b23bae00000008000000 0d9a0d0da7 50 | 218.185.130.212 Outbound 08b2562d01c79890000000 0d9a0d0a73 51 | 218.185.130.212 Outbound 08b2562d01c6dd40000000 0d9a0d0da7 52 | 123.255.133.191 Inbound 08b2360f00000008000000 0d8fc53467 53 | 123.255.133.191 Inbound 08b2360f00000008000000 0d8fc53788 54 | 123.255.133.191 Outbound 08b2562d01c79890000000 0d8fc53467 55 | 123.255.133.191 Outbound 08b2562d01c6dd40000000 0d8fc53788 56 | 202.32.117.142 Outbound 44756d6d79 57 | 202.32.117.142 Outbound 44756d6d79 58 | 202.32.117.142 Outbound 44756d6d79 59 | -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 06: -------------------------------------------------------------------------------- 1 | PayloadType 06 (PING) 2 | ACK Seq Number 3 | t220.215.226.162 [000000] [00] [00000000000000] [08e74575b0] 4 | r220.215.226.162 [000000] [01] [00000000000000] [08e74575b0] 5 | r220.215.226.162 [000000] [00] [00000000000000] [229093398b] 6 | t220.215.226.162 [000000] [00] [00000000000000] [08e804bb28] 7 | r220.215.226.162 [000000] [00] [00000000000000] [22915159af] 8 | t220.215.226.162 [000000] [00] [00000000000000] [08e8c4ff2b] 9 | r220.215.226.162 [000000] [01] [00000000000000] [08e8c4ff2b] -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 32: -------------------------------------------------------------------------------- 1 | fe0110000000fe00000000000000000000000000000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 2 | fe0110000000fe00000000000000000000000200000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 3 | fe0110000000fe00000000000000000000004200000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 4 | fe0110000000fe0000000000000000000000c200000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 5 | fe0110000000fe0000000000000000000000ca00000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 6 | fe0110000000fe0000000000000000000000fa00000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 7 | fe0110000000fe0000000000000000000000fe00000000008173b20000000000000000006a4a538f00000000000000006a54a041000000000000000069ad06c500000000000000006a42292200000000000000006b231c9800000000000000006a4af49700000000000000006a4d1d2b00000000000000006998df250000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000fffffffffffffffffffffd00080000000000000002ff0000 8 | fe0110000000ff0000000000000000000000fe00000000008173b20000000000000000006b231c9800000000000000006a54a04100000000000000006a4af49700000000000000006a42292200000000000000006a4d1d2b00000000000000006a4a538f00000000000000006998df25000000000000000069ad06c50000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000ffffffffffffffffffffff0000 9 | fe0110000000ff0000000000000000000000ff00000000008173b20000000000000000006b231c9800000000000000006a54a04100000000000000006a4af49700000000000000006a42292200000000000000006a4d1d2b00000000000000006a4a538f00000000000000006998df25000000000000000069ad06c50000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff0000000000ffffffffffffffffffffff0000 10 | fe0110000000ff0000000000000000000000ff00000000008173b20000000000000000016b231c9800000000000000006a54a04100000000000000006a4af49700000000000000006a42292200000000000000006a4d1d2b00000000000000006a4a538f00000000000000006998df25000000000000000069ad06c50000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000090703010002040605ffffff0000 11 | fe0110000000ff0000000000000000000000ff00000000008173b20000000000000000016b231c9800000000000000006a54a04100000000000000006a4af49700000000000000006a42292200000000000000006a4d1d2b00000000000000006a4a538f00000000000000006998df25000000000000000069ad06c50000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000090703010002040605fffffd00080000000000000002ff0000 12 | fe0110000000ff0000000000000000000000ff00000000008173b20000000000000000016b231c9800000000000000006a54a04100000000000000006a4af49700000000000000006a42292200000000000000006a4d1d2b00000000000000006a4a538f00000000000000006998df25000000000000000069ad06c50000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000040703010002040605fffffd00080000000000000002ff0000 13 | fe0110000000ff0000000000000000000000ff00000000008173b20000000000000000016b231c9800000000000000006a54a04100000000000000006a4af49700000000000000006a42292200000000000000006a4d1d2b00000000000000006a4a538f00000000000000006998df25000000000000000069ad06c50000000000000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000fffffffdffffffff00000000040703010002040605ffffff0000 -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 36: -------------------------------------------------------------------------------- 1 | PayloadType 36 (Player data) 2 | Packet ID Subtype Frame Count 3 | [03] [21] [011f] 00000015000000 [Subtype payload] 4 | Sub 0x11 5 | [03] [11] [011b] 00000014000000 0000cdb30a 6 | Sub 0x21 7 | [03] [21] [011f] 00000015000000 2208b23bae0000000000ed586b 8 | Sub 0x31 sent right after handshake 9 | [03] [31] [0167] 0000004e 10 | Sub 0x32,0x33 has no payload 11 | [03] [31] [0167] 0000004e 12 | Sub 0x41 13 | [03] [41] [3828] 00000243000000 fe 14 | Sub 0x81 15 | [03] [81] [017b] 02060000000000 0800000071 16 | Sub 0x82 17 | [03] [82] [0365] 01fd0000000000 d50000011e 18 | Sub 0x83 19 | [03] [83] [324f] 02060000000000 d00000022f 20 | sub 0x84 21 | [03] [84] [3257] 01fd0000000000 cf0000023f 22 | sub 0x91 23 | [03] [91] [0165] 02060000000000 080000004b000003ce 24 | sub 0xa1 25 | [03] [a1] [0368] 03fd0000000000 c800000142000007db013dde38 26 | sub 0xa2 27 | [03] [a2] [0170] 02060000000000 0800000068000003cf00ca3f74 28 | sub 0xd3 (contains movement data variable length payload, zlib compressed - decompress from zlib header of 7801 at payload offset 1) 29 | [03] [d3] [0182] 03fd0000000000 01780152606360646405000000ffff030000ee002e 30 | sub 0xc1 31 | [03] [c1] [03b4] 03fd0000000000 c80000022e0000081d01030002000000ff -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 36,0x03d3/0x103c: -------------------------------------------------------------------------------- 1 | cl - Segment Class 2 | sz - Segment Size 3 | sb - Segment Sub 4 | at - Segment Action 5 | frmCnt - Frame Counter 6 | Position values are 24bit unsigned interger little-endian 7 | Rotation of player Y-axis 24/16bit unsigned interger little-endian 8 | Ink in tank 16bit unsigned interger little-endian 9 | 10 | ==== 11 | static 12 | cl][sz] [sb][at][frmCnt][X-Pos][Y-Pos][Z-Pos] [Rot] [Ink][bt] 13 | 10 3c 00 00 00 000e07 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 4b 0a 02 80 01 04 00 0000 0002 00 00030080000000 14 | 10 3c 00 00 00 000e17 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 a8 34 02 80 02 04 00 0000 0002 00 00030080000000 15 | 10 3c 00 00 00 000e27 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 04 fa 01 80 01 04 00 0000 0002 00 00030080000000 16 | 10 3c 00 00 00 000e37 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 11 9b 01 80 02 04 00 0000 0002 00 00030080000000 17 | 10 3c 00 00 00 000e47 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 90 66 01 80 04 04 00 0000 0002 00 00030080000000 18 | 10 3c 00 00 00 000e57 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 b2 fb 00 80 03 04 00 0000 0002 00 00030080000000 19 | 10 3c 00 00 00 000e67 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 9b 54 00 80 03 04 00 0000 0002 00 00030080000000 20 | 10 3c 00 00 00 000e77 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 d8 b4 ff 7f 06 04 00 0000 0002 00 00030080000000 21 | 10 3c 00 00 00 000e87 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 63 a9 fe 7f 04 04 00 0000 0002 00 00030080000000 22 | 10 3c 00 00 00 000e97 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 81 d4 fd 7f 02 04 00 0000 0002 00 00030080000000 23 | 10 3c 00 00 00 000ea7 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 a8 72 fd 7f 04 04 00 0000 0002 00 00030080000000 24 | 10 3c 00 00 00 000eb7 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 62 7a fd 7f 03 04 00 0000 0002 00 00030080000000 25 | 10 3c 00 00 00 000ec7 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 e3 94 fd 7f 03 04 00 0000 0002 00 00030080000000 26 | 10 3c 00 00 00 000ed7 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 ba 8f fd 7f 04 04 00 0000 0002 00 00030080000000 27 | 10 3c 00 00 00 000ee7 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 53 a2 fd 7f 03 04 00 0000 0002 00 00030080000000 28 | 10 3c 00 00 00 000ef7 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 2d c2 fd 7f 04 04 00 0000 0002 00 00030080000000 29 | 10 3c 00 00 00 000f07 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 8f 09 fe 7f 04 04 00 0000 0002 00 00030080000000 30 | 10 3c 00 00 00 000f17 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 80 a1 fe 7f 05 04 00 0000 0002 00 00030080000000 31 | 10 3c 00 00 00 000f27 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 d9 e2 fe 7f 06 04 00 0000 0002 00 00030080000000 32 | 10 3c 00 00 00 000f37 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 cb 11 ff 7f 05 04 00 0000 0002 00 00030080000000 33 | 10 3c 00 00 00 000f47 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 f8 38 ff 7f 06 04 00 0000 0002 00 00030080000000 34 | 10 3c 00 00 00 000f57 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 ef 51 ff 7f 06 04 00 0000 0002 00 00030080000000 35 | 10 3c 00 00 00 000f67 000c00 9d1700 02b000 24 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 30 b2 ff 7f 07 04 00 0000 0002 00 00030080000000 36 | 37 | ==== 38 | 10 3c 00 00 00 08b209 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 02 11 5c 80 18 02 00 0000 0002 00 00030080000000 39 | 10 3c 00 00 00 08b211 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 c3 98 53 80 0b 02 00 0000 0002 00 00030080000000 40 | 10 3c 00 00 00 08b219 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 2e d2 3b 80 fd 01 00 0000 0002 00 00030080000000 41 | 10 3c 00 00 00 08b221 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 20 79 34 80 fe 01 00 0000 0002 00 00030080000000 42 | 10 3c 00 00 00 08b229 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 86 62 26 80 02 02 00 0000 0002 00 00030080000000 43 | 10 3c 00 00 00 08b231 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 16 53 48 80 03 02 00 0000 0002 00 00030080000000 44 | 10 3c 00 00 00 08b239 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 54 60 c6 80 01 02 00 0000 0002 00 00030080000000 45 | 10 3c 00 00 00 08b241 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 a2 bd 0d 81 02 02 00 0000 0002 00 00030080000000 46 | 10 3c 00 00 00 08b249 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 3f a5 43 81 07 02 00 0000 0002 00 00030080000000 47 | 10 3c 00 00 00 08b251 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 93 ad 24 81 0b 02 00 0000 0002 00 00030080000000 48 | 10 3c 00 00 00 08b259 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 6f cf 45 81 14 02 00 0000 0002 00 00030080000000 49 | 10 3c 00 00 00 08b261 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 ce 65 a0 81 19 02 00 0000 0002 00 00030080000000 50 | 10 3c 00 00 00 08b269 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 7d 39 27 82 13 02 00 0000 0002 00 00030080000000 51 | 10 3c 00 00 00 08b271 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 5d 5a ad 82 10 02 00 0000 0002 00 00030080000000 52 | 10 3c 00 00 00 08b279 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 6b 7b 90 83 0b 02 00 0000 0002 00 00030080000000 53 | 54 | ==== 55 | walkforwards(flick) 56 | 57 | 10 3c 00 00 00 073aea ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b 25 16 e9 39 10 05 00 0000 0002 00 00130080000000 58 | 10 3c 00 00 00 073afa ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b a1 45 10 3a ee 04 00 0000 0002 00 00130080000000 59 | 10 3c 00 00 00 073b0a ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b ae 67 11 3a e6 04 00 0000 0002 00 00130080000000 60 | 10 3c 00 00 00 073b2a ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b 56 79 4b 3a e8 04 00 0000 0002 00 00130080000000 61 | 10 3c 00 00 00 073b3a ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b 5d 80 5e 3a e8 04 00 0000 0002 00 00130080000000 62 | 10 3c 00 00 00 073b4a ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b 49 7a 6b 3a eb 04 00 0000 0002 00 00130080000000 63 | 10 3c 00 00 00 073b5a ee03f7 f0a704 1a81e0 03 0078003c001e00 0f8007 1e78e0 0120000680 f01700 f2 3b 15 00 80 3a e8 04 00 0000 0002 00 00130080000000 64 | 65 | 10 3c 00 00 00 073b6a 3c06f7 f0a704 0a82e0 03 547aecbb0a1e00 0f8007 1e78e0 0120000680 001800 22 3f bd 92 6b 3a e5 04 00 0000 0002 00 00130080000000 66 | 10 3c 00 00 00 073b7a d01cf7 f4a704 3286e0 03 d07e00bc3c1e00 0f8007 1e78e0 0120000680 f81700 02 43 13 3b 53 3a eb 04 00 0000 0002 00 00030080000000 67 | 10 3c 00 00 00 073b8a a82cf7 f4a704 fa8ee0 03 be79ecbb0f1e00 0f8007 1e78e0 0120000680 f81700 02 43 1b b9 8e 3a ef 04 00 0000 0002 00 00030080000000 68 | 69 | 10 3c 00 00 00 073b9a 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 41 ae 7f 3a eb 04 00 0000 0002 00 00030080000000 70 | 10 3c 00 00 00 073baa 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 45 df 5b 3a ec 04 00 0000 0002 00 00030080000000 71 | 10 3c 00 00 00 073bba 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 13 fc 76 3a e4 04 00 0000 0002 00 00030080000000 72 | 10 3c 00 00 00 073bca 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 91 a2 7c 3a d9 04 00 0000 0002 00 00030080000000 73 | 10 3c 00 00 00 073bda 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 44 90 6d 3b e2 04 00 0000 0002 00 00030080000000 74 | 10 3c 00 00 00 073bea 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 c0 c1 eb 3c f0 04 00 0000 0002 00 00030080000000 75 | 10 3c 00 00 00 073bfa 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 61 ec bf 3d 06 05 00 0000 0002 00 00030080000000 76 | 10 3c 00 00 00 073c0a 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 44 20 b8 3d ff 04 00 0000 0002 00 00030080000000 77 | 10 3c 00 00 00 073c1a 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 30 2c 09 3d fd 04 00 0000 0002 00 00030080000000 78 | 10 3c 00 00 00 073c2a 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 cb 18 f2 3c f8 04 00 0000 0002 00 00030080000000 79 | 10 3c 00 00 00 073c3b 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 d1 04 78 3c e9 04 00 0000 0002 00 00030080000000 80 | 10 3c 00 00 00 073c4b 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 df f6 5f 3c dd 04 00 0000 0002 00 00030080000000 81 | 82 | ==== 83 | walk forwards (flick) 84 | 85 | 10 3c 00 00 00 073edb 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 ce 2b d0 3c 1f 05 00 0000 0002 00 00030080000000 86 | 10 3c 00 00 00 073eeb 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 e3 eb d0 3c 1e 05 00 0000 0002 00 00030080000000 87 | 10 3c 00 00 00 073efb 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 4d f5 d2 3c 1d 05 00 0000 0002 00 00030080000000 88 | 10 3c 00 00 00 073f0b 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 a7 2f d4 3c 18 05 00 0000 0002 00 00030080000000 89 | 10 3c 00 00 00 073f1b 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 6e 97 d7 3c 17 05 00 0000 0002 00 00030080000000 90 | 10 3c 00 00 00 073f2b 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 41 91 d6 3c 18 05 00 0000 0002 00 00030080000000 91 | 10 3c 00 00 00 073f3b 742df7 f4a704 6a8fe0 03 0078003c001e00 0f8007 1e78e0 0120000680 f81700 02 43 3c 05 cb 3c 13 05 00 0000 0002 00 00030080000000 92 | 93 | 10 3c 00 00 00 073f4b 9e31f7 f4a704 6290e0 03 3c7b003c0a1e00 0f8007 1e78e0 0120000680 fc1700 fa 41 2a c3 9a 3c 04 05 00 0000 0002 00 00030080000000 94 | 10 3c 00 00 00 073f5b 384bf7 f8a704 ca91e0 03 ae7f00bc0b1e00 0f8007 1e78e0 0120000680 001800 7a 40 ca 48 72 3c fc 04 00 0000 0002 00 00030080000000 95 | 10 3c 00 00 00 073f6b e869f7 f8a704 1297e0 03 ac7fecbb1a1e00 0f8007 1e78e0 0120000680 fe1700 8a 41 af 48 65 3c f7 04 00 0000 0002 00 00030080000000 96 | 10 3c 00 00 00 073f7b 9488f7 f8a704 c29de0 03 ac7fec3b1b1e00 0f8007 1e78e0 0120000680 fe1700 ba 41 68 48 5a 3c f7 04 00 0000 0002 00 00030080000000 97 | 10 3c 00 00 00 073f8b 40a7f7 f8a704 baa4e0 03 aa7f00bc1c1e00 0f8007 1e78e0 0120000680 fc1700 d2 41 06 d7 56 3c f8 04 00 0000 0002 00 00030080000000 98 | 10 3c 00 00 00 073f9b ecc5f7 fca704 aaabe0 03 aa7f00bc1c1e00 0f8007 1e78e0 0120000680 fc1700 da 41 a1 6f 4b 3c f6 04 00 0000 0002 00 00030080000000 99 | 10 3c 00 00 00 073fab 96e4f7 fca704 dab2e0 03 aa7fecbb1c1e00 0f8007 1e78e0 0120000680 fc1700 e2 41 b8 15 4d 3c f4 04 00 0000 0002 00 00030080000000 100 | 10 3c 00 00 00 073fbb ce02f8 74ae04 92b9e0 03 147d6e3d161e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 c7 e0 50 3c f7 04 00 0000 0002 00 00030080000000 101 | 10 3c 00 00 00 073fcb ea0cf8 98ba04 5abce0 03 9c782fbc021e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 d4 92 65 3c fa 04 00 0000 0002 00 00030080000000 102 | 103 | 10 3c 00 00 00 073fdb f20cf8 a4ba04 5abce0 03 0078003c001e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 17 07 53 3c 00 05 00 0000 0002 00 00030080000000 104 | 10 3c 00 00 00 073feb f20cf8 a4ba04 5abce0 03 0078003c001e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 28 15 65 3c fe 04 00 0000 0002 00 00030080000000 105 | 10 3c 00 00 00 073ffb f20cf8 a4ba04 5abce0 03 0078003c001e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 95 93 4a 3c fa 04 00 0000 0002 00 00030080000000 106 | 10 3c 00 00 00 07400c f20cf8 a4ba04 5abce0 03 0078003c001e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 17 4b 4b 3d fb 04 00 0000 0002 00 00030080000000 107 | 10 3c 00 00 00 07401c f20cf8 a4ba04 5abce0 03 0078003c001e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 4a 62 ec 3d 08 05 00 0000 0002 00 00030080000000 108 | 10 3c 00 00 00 07402c f20cf8 a4ba04 5abce0 03 0078003c001e00 0f8007 1e78e0 c517b70580 fe1700 aa 41 85 ef ce 3d 16 05 00 0000 0002 00 00030080000000 109 | 110 | ==== 111 | Fall 112 | 113 | 10 3c 00 00 00 0defb2 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 6e 2f cc 3c ba 01 a0 0100 0002 00 00130080681200 114 | 10 3c 00 00 00 0defbb 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 50 ba c4 3c bc 01 a0 0100 0002 00 00130080681200 115 | 10 3c 00 00 00 0defc3 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f f5 64 c6 3c bb 01 a0 0100 0002 00 00130080681200 116 | 10 3c 00 00 00 0defcb 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 82 60 c0 3c bb 01 a0 0100 0002 00 00130080681200 117 | 10 3c 00 00 00 0defd3 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 7b 65 ba 3c b8 01 a0 0100 0002 00 00130080681200 118 | 10 3c 00 00 00 0defdb 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 5b 21 b9 3c b7 01 a0 0100 0002 00 00130080681200 119 | 10 3c 00 00 00 0defe3 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 61 a7 af 3c b3 01 a0 0100 0002 00 00130080681200 120 | 10 3c 00 00 00 0defeb 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 16 41 b3 3c af 01 a0 0100 0002 00 00130080681200 121 | 10 3c 00 00 00 0deff3 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 3a 51 b0 3c ad 01 a0 0100 0002 00 00130080681200 122 | 10 3c 00 00 00 0deffb 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 74 86 a4 3c a9 01 a0 0100 0002 00 00130080681200 123 | 10 3c 00 00 00 0df003 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 94 15 a4 3c a5 01 a0 0100 0002 00 00130080681200 124 | 10 3c 00 00 00 0df00b 3cdffb 745604 0240e7 03 0078003c001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f f6 ea 9f 3c a3 01 a0 0100 0002 00 00130080681200 125 | 126 | 10 3c 00 00 00 0df013 3cdffb 805504 0240e7 03 0078c33b001e00 4f1308 1e78e0 0120000680 5c1100 8a 5f 05 43 15 3d a1 31 a0 0100 0002 20 00130080681200 127 | 10 3c 00 00 00 0df01b 3cdffb dc4c04 0240e7 03 0078bb3b009eb0 4e1308 1e78e0 0120000680 5c1100 8a 5f 00 36 bc 3d bc 71 a0 0100 0002 20 00170080681200 128 | 10 3c 00 00 00 0df023 3cdffb 383b04 0240e7 03 0078c73b005e67 4e1308 1e78e0 0120000680 5c1100 8a 5f 48 06 0c 3e e7 b1 a0 0100 0002 20 00170080681200 129 | 10 3c 00 00 00 0df02b 3cdffb 442404 0240e7 03 0078d03b009e66 4e1308 1e78e0 0120000680 5c1100 8a 5f 04 36 07 3e 01 f2 a0 0100 0002 20 00170080681200 130 | 10 3c 00 00 00 0df033 3cdffb 840d04 0240e7 03 0078d63b009e66 4e1308 1e78e0 0120000680 5c1100 8a 5f 1f f4 f4 3d 07 32 a1 0100 0002 20 00170080681200 131 | 10 3c 00 00 00 0df03b 3cdffb f0f603 0240e7 03 0078db3b009e66 4e1308 1e78e0 0120000680 5c1100 8a 5f 70 34 15 3e 05 72 a1 0100 0002 20 00170080681200 132 | 10 3c 00 00 00 0df043 3cdffb 50dd03 0240e7 03 0078de3b00de22 4e1308 1e78e0 0120000680 5c1100 8a 5f 7a 0f 14 3e 05 b2 a1 0100 0002 20 00170080681200 133 | 10 3c 00 00 00 0df04b 3cdffb bcbb03 0240e7 03 0078e03b009ee4 4d1308 1e78e0 0120000680 5c1100 8a 5f 9b 44 06 3e 06 f2 a1 0100 0002 20 00170080681200 134 | 10 3c 00 00 00 0df053 3cdffb d09203 0240e7 03 0078e23b001eab 4d1308 1e78e0 0120000680 5c1100 8a 5f 91 ba fe 3d 02 32 a2 0100 0002 20 00170080681200 135 | 10 3c 00 00 00 0df05b 3cdffb 186303 0240e7 03 0078e33b001e76 4d1308 1e78e0 0120000680 5c1100 8a 5f 89 53 ff 3d fe 71 a2 0100 0002 20 00170080681200 136 | 10 3c 00 00 00 0df063 3cdffb 1c2d03 0240e7 03 0078e43b001e45 4d1308 1e78e0 0120000680 5c1100 8a 5f ea 63 f4 3d fa b1 a2 0100 0002 20 00170080681200 137 | 10 3c 00 00 00 0df06b 3cdffb 54f102 0240e7 03 0078e53b001e18 4d1308 1e78e0 0120000680 5c1100 8a 5f c5 ca f2 3d f5 f1 a2 0100 0002 20 00170080681200 138 | 10 3c 00 00 00 0df073 3cdffb 34b002 0240e7 03 0078e53b005eee 4c1308 1e78e0 0120000680 5c1100 8a 5f 87 12 f4 3d f2 31 a3 0100 0002 20 00170080681200 139 | 10 3c 00 00 00 0df07b 3cdffb 246a02 0240e7 03 0078e63b001ec8 4c1308 1e78e0 0120000680 5c1100 8a 5f d2 3d f5 3d f1 71 a3 0100 0002 20 00170080681200 140 | 10 3c 00 00 00 0df083 3cdffb 841f02 0240e7 03 0078e63b009ea4 4c1308 1e78e0 0120000680 5c1100 8a 5f a0 0b ec 3d f0 b1 a3 0100 0002 20 00170080681200 141 | 10 3c 00 00 00 0df08b 3cdffb b4d001 0240e7 03 0078e63b001e84 4c1308 1e78e0 0120000680 5c1100 8a 5f 86 ff dc 3d ef f1 a3 0100 0002 20 00170080681200 142 | 10 3c 00 00 00 0df09b 74e2fb 188901 c240e7 03 5c78f53b001e00 4f1308 1e78e0 0120000680 56d106 8a 5f 33 49 c8 3d e6 31 a0 0100 0002 20 00030080681200 143 | 10 3c 00 00 00 0df0ab b6e4fb 848901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 50d10a 8a 5f 98 9b 7e 3d c2 01 a0 0100 0002 20 00030080681200 144 | 10 3c 00 00 00 0df0b3 e2e4fb a88901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4e510b 8a 5f 34 22 81 3d be 01 a0 0100 0002 20 00030080681200 145 | 10 3c 00 00 00 0df0bb 0ee5fb b88901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4e910b 8a 5f 67 7b 6f 3d c3 01 a0 0100 0002 20 00030080681200 146 | 10 3c 00 00 00 0df0c3 3ae5fb c08901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4e910b 8a 5f 48 a1 52 3d c2 01 a0 0100 0002 20 00030080681200 147 | 10 3c 00 00 00 0df0cb 66e5fb c48901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4ed10b 8a 5f ef ef 40 3d bb 01 a0 0100 0002 20 00030080681200 148 | 10 3c 00 00 00 0df0d3 94e5fb cc8901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4ed10b 8a 5f c5 11 3e 3d b4 01 a0 0100 0002 20 00030080681200 149 | 10 3c 00 00 00 0df0db c0e5fb d08901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4ed10b 8a 5f ce 06 37 3d af 01 a0 0100 0002 20 00030080681200 150 | 10 3c 00 00 00 0df0e3 eee5fb d48901 3241e7 03 2078ef3b001e00 4f1308 1e78e0 0120000680 4ed10b 8a 5f fe 65 2d 3d af 01 a0 0100 0002 20 00030080681200 151 | 10 3c 00 00 00 0df0eb 1ae6fb d88901 3241e7 03 2278ef3b001e00 4f1308 1e78e0 0120000680 4e110c 8a 5f 4f 78 0e 3d ab 01 a0 0100 0002 20 00030080681200 152 | 10 3c 00 00 00 0df0f3 48e6fb dc8901 3241e7 03 2278ef3b001e00 4f1308 1e78e0 0120000680 4e110c 8a 5f 0d db 36 3d 9a 01 a0 0100 0002 20 00030080681200 153 | 10 3c 00 00 00 0df0fb 76e6fb e08901 3241e7 03 2278f03b001e00 4f1308 1e78e0 0120000680 4e110c 8a 5f 31 42 5c 3d 99 01 a0 0100 0002 20 00030080681200 154 | 10 3c 00 00 00 0df103 a2e6fb e88901 3241e7 03 2278f03b001e00 4f1308 1e78e0 0120000680 4c110c 8a 5f 9c 5a 49 3d 9b 01 a0 0100 0002 20 00030080681200 155 | 10 3c 00 00 00 0df10b d0e6fb ec8901 3241e7 03 2278f03b001e00 4f1308 1e78e0 0120000680 4c510c 8a 5f 89 16 b5 3c a0 01 a0 0100 0002 20 00030080681200 156 | 157 | 158 | ==== 159 | Jump 10 160 | 161 | 10 3c 00 00 00 0a8f1e 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 07 8c 8a 06 0d 02 00 0000 0002 00 00030080000100 162 | 10 3c 00 00 00 0a8f26 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f ee 25 85 06 09 02 00 0000 0002 00 00030080000100 163 | 10 3c 00 00 00 0a8f2e 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 6b 81 7e 06 0a 02 00 0000 0002 00 00030080000100 164 | 10 3c 00 00 00 0a8f36 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 18 60 7d 06 0a 02 00 0000 0002 00 00030080000100 165 | 10 3c 00 00 00 0a8f3e 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 56 96 79 06 0a 02 00 0000 0002 00 00030080000100 166 | 10 3c 00 00 00 0a8f46 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 66 70 76 06 0a 02 00 0000 0002 00 00030080000100 167 | 10 3c 00 00 00 0a8f4e 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f fd 0a 79 06 08 02 00 0000 0002 00 00030080000100 168 | 10 3c 00 00 00 0a8f56 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f f4 ef 76 06 04 02 00 0000 0002 00 00030080000100 169 | 10 3c 00 00 00 0a8f5e 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 66 51 7a 06 ff 01 00 0000 0002 00 00030080000100 170 | 171 | 10 3c 00 00 00 0a8f6e 68ca01 31a30d b2abd6 03 0078bb3b005efe 4f1308 1e78e0 0120000680 c41100 3a 5f d0 62 7c 06 01 72 00 0000 0002 10 00170080000200 172 | 10 3c 00 00 00 0a8f76 68ca01 29bd0d b2abd6 03 0078c73b00decc 4f1308 1e78e0 0120000680 c41100 3a 5f 91 88 ae 06 ff b1 00 0000 0002 10 00170080000200 173 | 10 3c 00 00 00 0a8f7e 68ca01 29d10d b2abd6 03 0078d03b005e92 4f1308 1e78e0 0120000680 c41100 3a 5f 05 4c 89 06 fc f1 00 0000 0002 00 00170080000200 174 | 10 3c 00 00 00 0a8f86 68ca01 e5da0d b2abd6 03 0078d63b009e37 4f1308 1e78e0 0120000680 c41100 3a 5f de 34 6d 06 00 32 01 0000 0002 00 00170080000200 175 | 10 3c 00 00 00 0a8f8e 68ca01 01da0d b2abd6 03 0078db3b00dee3 4e1308 1e78e0 0120000680 c41100 3a 5f 78 cc 6e 06 0d 72 01 0000 0002 00 00170080000200 176 | 10 3c 00 00 00 0a8f96 68ca01 45cf0d b2abd6 03 0078de3b005e96 4e1308 1e78e0 0120000680 c41100 3a 5f d3 2a 6b 06 17 b2 01 0000 0002 00 00170080000200 177 | 10 3c 00 00 00 0a8f9e 68ca01 6dbb0d b2abd6 03 0078e03b001e4f 4e1308 1e78e0 0120000680 c41100 3a 5f 82 5a 67 06 21 f2 01 0000 0002 00 00170080000200 178 | 10 3c 00 00 00 0a8fa6 68ca01 299f0d b2abd6 03 0078e23b005e0d 4e1308 1e78e0 0120000680 c41100 3a 5f 7a 7b 69 06 28 32 02 0000 0002 00 00170080000200 179 | 10 3c 00 00 00 0a8fae 68ca01 217b0d b2abd6 03 0078e33b00ded0 4d1308 1e78e0 0120000680 c41100 3a 5f 1f ae 76 06 29 72 02 0000 0002 00 00170080000200 180 | 181 | 10 3c 00 00 00 0a8fbe 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f d3 c4 9e 06 29 02 00 0000 0002 00 00030080000200 182 | 10 3c 00 00 00 0a8fc6 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f 94 35 af 06 26 02 00 0000 0002 00 00030080000200 183 | 10 3c 00 00 00 0a8fce 68ca01 01680d b2abd6 03 0078003c001e00 4f1308 1e78e0 0120000680 c41100 3a 5f af 86 c0 06 22 02 00 0000 0002 00 00030080000200 184 | 185 | ==== 186 | Jump 7 187 | 188 | 10 3c 00 00 00 0014ed 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 5b e9 01 40 cc 03 00 0000 0002 00 00030080000000 189 | 10 3c 00 00 00 0014f5 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 2e dd 01 40 cd 03 00 0000 0002 00 00030080000000 190 | 10 3c 00 00 00 0014fd 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 7a be 01 40 cd 03 00 0000 0002 00 00030080000000 191 | 10 3c 00 00 00 001505 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 21 bf 01 40 cd 03 00 0000 0002 00 00030080000000 192 | 10 3c 00 00 00 00150d 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 8b a4 01 40 cc 03 00 0000 0002 00 00030080000000 193 | 10 3c 00 00 00 001515 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 38 92 01 40 cb 03 00 0000 0002 00 00030080000000 194 | 10 3c 00 00 00 00151d 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 78 76 01 40 cb 03 00 0000 0002 00 00030080000000 195 | 10 3c 00 00 00 001525 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 f8 6c 01 40 cb 03 00 0000 0002 00 00030080000000 196 | 10 3c 00 00 00 00152d 00ecff 9c1700 0230ff 3b 0078003c001e00 0f8007 1e78e0 0120000680 001800 02 40 df 56 01 40 cd 03 00 0000 0002 00 00030080000000 197 | 198 | 10 3c 00 00 00 001535 00ecff a82000 0230ff 3b 0078ec3b009e26 501308 1e78e0 0120000680 001800 02 40 a9 69 01 40 ce 13 00 0000 0002 10 00030080000100 199 | 10 3c 00 00 00 00153d 00ecff a04300 0230ff 3b 0078b33b00de18 501308 1e78e0 0120000680 001800 02 40 bf 3c 01 40 cc 53 00 0000 0002 10 00170080000100 200 | 10 3c 00 00 00 001545 00ecff 1c6000 0230ff 3b 0078c13b005ed8 4f1308 1e78e0 0120000680 001800 02 40 5a e2 00 40 cc 93 00 0000 0002 00 00170080000100 201 | 10 3c 00 00 00 00154d 00ecff d07100 0230ff 3b 0078cc3b001e78 4f1308 1e78e0 0120000680 001800 02 40 2b 66 00 40 cb d3 00 0000 0002 00 00170080000100 202 | 10 3c 00 00 00 001555 00ecff 507800 0230ff 3b 0078d33b005e1f 4f1308 1e78e0 0120000680 001800 02 40 5d 17 00 40 ca 13 01 0000 0002 00 00170080000100 203 | 10 3c 00 00 00 00155d 00ecff 787400 0230ff 3b 0078d93b005ecd 4e1308 1e78e0 0120000680 001800 02 40 fa d5 ff 3f c9 53 01 0000 0002 00 00170080000100 204 | 10 3c 00 00 00 001565 00ecff 046700 0230ff 3b 0078dd3b00de81 4e1308 1e78e0 0120000680 001800 02 40 53 9f ff 3f ca 93 01 0000 0002 00 00170080000100 205 | 10 3c 00 00 00 00156d 00ecff ac5000 0230ff 3b 0078df3b001e3c 4e1308 1e78e0 0120000680 001800 02 40 2d 4a ff 3f ca d3 01 0000 0002 00 00170080000100 206 | 10 3c 00 00 00 001575 00ecff 203200 0230ff 3b 0078e13b00defb 4d1308 1e78e0 0120000680 001800 02 40 a5 0d ff 3f ca 13 02 0000 0002 00 00170080000100 207 | 208 | 10 3c 00 00 00 00157d 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 24 ff fe 3f c9 03 00 0000 0002 00 00030080000100 209 | 10 3c 00 00 00 001585 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 0e 02 ff 3f cb 03 00 0000 0002 00 00030080000100 210 | 10 3c 00 00 00 00158d 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 57 f0 fe 3f ca 03 00 0000 0002 00 00030080000100 211 | 10 3c 00 00 00 001595 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 16 ee fe 3f cb 03 00 0000 0002 00 00030080000100 212 | 10 3c 00 00 00 00159d 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 20 1a ff 3f ca 03 00 0000 0002 00 00030080000100 213 | 10 3c 00 00 00 0015a5 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 a1 2c ff 3f cb 03 00 0000 0002 00 00030080000100 214 | 10 3c 00 00 00 0015ad 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 2f 3e ff 3f ca 03 00 0000 0002 00 00030080000100 215 | 10 3c 00 00 00 0015b5 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 e2 2e ff 3f cb 03 00 0000 0002 00 00030080000100 216 | 10 3c 00 00 00 0015bd 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 35 27 ff 3f cb 03 00 0000 0002 00 00030080000100 217 | 10 3c 00 00 00 0015c5 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 9d 3d ff 3f cb 03 00 0000 0002 00 00030080000100 218 | 10 3c 00 00 00 0015cd 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 6f 65 ff 3f cb 03 00 0000 0002 00 00030080000100 219 | 10 3c 00 00 00 0015d5 00ecff 9c1700 0230ff 3b 0078003c001e00 4f1308 1e78e0 0120000680 001800 02 40 98 82 ff 3f ca 03 00 0000 0002 00 00030080000100 220 | 221 | === 222 | Shooting (main) 223 | 224 | 10 3c 00 00 00 015eae 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 580a00 62 29 d5 f3 29 a0 77 03 00 0000 0002 00 00030080000000 225 | 10 3c 00 00 00 015eb6 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 580a00 62 29 0b cb b7 9f c1 03 00 0000 0002 00 00030080000000 226 | 10 3c 00 00 00 015ebe 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 580a00 62 29 ae 49 62 9c 42 04 00 0000 0002 00 00030080000000 227 | 10 3c 00 00 00 015ec6 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 580a00 62 29 c7 72 2f 95 ca 04 00 0000 0002 00 00030080000000 228 | 10 3c 00 00 00 015ece 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 580a00 62 29 10 47 91 8c 2d 05 00 0000 0002 00 00030080000000 229 | 10 3c 00 00 00 015ed6 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 580a00 62 29 96 0f 07 80 a3 05 00 0000 0002 00 00030080000000 230 | 10 3c 00 00 00 015ede 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 fa0c00 62 22 33 11 7b 7f 97 05 00 0080 fc01 40 0c030004080000 302d000203 231 | 10 3c 00 00 00 015ee6 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 5e0e00 b2 20 48 8b 1d 80 62 05 00 0000 f901 40 0c030004080000 302d000203 232 | 10 3c 00 00 00 015eee 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 220f00 32 20 59 95 1e 80 c6 04 00 0000 f501 40 0c030004080000 302d000203 233 | 10 3c 00 00 00 015ef6 500d00 9d1700 aab000 14 0078003c001e00 0f8007 1e78e0 0120000680 960f00 0a 20 6a bd 12 7f 04 04 00 0000 f501 40 0c030004080000 234 | 10 3c 00 00 00 015efe 000c00 9d1700 e2b000 14 7a7900bc9f1d00 0f8007 1e78e0 0120000680 961000 1a 20 b2 70 21 7a 80 03 00 0080 f101 40 0c030004080000 302d0002030 235 | 10 3c 00 00 00 015f06 5a0200 9d1700 4aa400 14 747d00bc831d00 0f8007 1e78e0 0120000680 221300 92 22 f7 b7 b5 70 3e 03 00 0000 ee01 40 0c030004080000 302d0002030 236 | 10 3c 00 00 00 015f0e 84f8ff 9c1700 028c00 14 b67d00bcc41d00 0f8007 1e78e0 0120000680 fa1400 f2 26 38 ca a3 6a 08 03 00 0080 ea01 40 0c030004080000 302d0002030 237 | 10 3c 00 00 00 015f16 beefff 9c1700 026e00 14 c67d00bcf71d00 0f8007 1e78e0 0120000680 2a1600 a2 2b ad 5f 8f 67 0a 03 00 0000 e701 40 0c030004080000 302d0002030 238 | 10 3c 00 00 00 015f1e e2e7ff 9c1700 324c00 14 c27d003c161e00 0f8007 1e78e0 0120000680 e81600 e2 2f 0f 13 f2 64 2b 03 00 0000 e701 40 0c030004080000 239 | 10 3c 00 00 00 015f26 82e0ff 9c1700 ba2800 14 bc7d003c291e00 0f8007 1e78e0 0120000680 581700 5a 33 be 5d dd 62 74 03 00 0080 e301 40 0c030004080000 302d0002030 240 | 10 3c 00 00 00 015f2e 92d9ff 9c1700 ea0300 14 b07d003c3d1e00 0f8007 1e78e0 0120000680 9c1700 2a 36 65 f3 8f 62 b3 03 00 0080 df01 40 0c030004080000 302d0002030 241 | 242 | === 243 | 10 3c 00 00 00 00f1dd 00ecff 9c1700 0230ff 4b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 ce 7b 4a 87 21 04 00 0000 0002 00 00030080000000 244 | 10 3c 00 00 00 00f1e5 00ecff 9c1700 0230ff 4b 0078003c001e00 0f8007 1e78e0 0120000680 ae0f00 0a 20 6d a4 d4 8a 66 04 00 0000 0002 40 0c030080000000 245 | 10 3c 00 00 00 00f1ed 00ecff 9c1700 0230ff 4b 0078003c001e00 0f8007 1e78e0 0120000680 ce0e00 5a 20 d4 a8 cb 8a 71 04 00 0080 fc01 40 0c030004080000 302d00020300 246 | 10 3c 00 00 00 00f1f5 00ecff 9c1700 0230ff 4b 0078003c001e00 0f8007 1e78e0 0120000680 780e00 9a 20 0f 1b 0e 89 56 04 00 0000 f901 40 0c030004080000 302d00020300 247 | 248 | === 249 | Direction change 4 axis 250 | 251 | 10 3c 00 00 00 0945ef 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 35 63 7a 79 79 03 00 0000 0002 00 00030080000000 252 | 10 3c 00 00 00 0945f7 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 98 58 96 78 ad 03 00 0000 0002 00 00030080000000 253 | 10 3c 00 00 00 0945ff 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 96 cd ca 79 c9 03 00 0000 0002 00 00030080000000 254 | 10 3c 00 00 00 094607 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 c0 10 a5 7a d9 03 00 0000 0002 00 00030080000000 255 | 10 3c 00 00 00 09460f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 30 ce 22 7f c7 03 00 0000 0002 00 00030080000000 256 | 10 3c 00 00 00 094617 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 9c 14 ba 81 96 03 00 0000 0002 00 00030080000000 257 | 10 3c 00 00 00 09461f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 49 9e 41 86 4f 03 00 0000 0002 00 00030080000000 258 | 10 3c 00 00 00 094627 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 0e 4f 51 88 fc 02 00 0000 0002 00 00030080000000 259 | 10 3c 00 00 00 09462f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 19 9c 07 8a be 02 00 0000 0002 00 00030080000000 260 | 10 3c 00 00 00 094637 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 5d 21 a2 8a ad 02 00 0000 0002 00 00030080000000 261 | 10 3c 00 00 00 09463f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 7d 59 66 8a c9 02 00 0000 0002 00 00030080000000 262 | 10 3c 00 00 00 094647 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 b4 3c 93 89 e8 02 00 0000 0002 00 00030080000000 263 | 10 3c 00 00 00 09464f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 6d f5 19 89 fc 02 00 0000 0002 00 00030080000000 264 | 10 3c 00 00 00 094657 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 7d 80 d0 87 14 03 00 0000 0002 00 00030080000000 265 | 10 3c 00 00 00 09465f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 e7 1b 26 86 33 03 00 0000 0002 00 00030080000000 266 | 10 3c 00 00 00 094667 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 ee e9 84 84 4d 03 00 0000 0002 00 00030080000000 267 | 10 3c 00 00 00 09466f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 0c 7e 19 84 5f 03 00 0000 0002 00 00030080000000 268 | 10 3c 00 00 00 094677 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 94 6c d5 83 6b 03 00 0000 0002 00 00030080000000 269 | 10 3c 00 00 00 09467f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 ab 81 60 83 77 03 00 0000 0002 00 00030080000000 270 | 10 3c 00 00 00 094687 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 cd c9 c0 82 80 03 00 0000 0002 00 00030080000000 271 | 10 3c 00 00 00 09468f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 99 b8 37 82 83 03 00 0000 0002 00 00030080000000 272 | 10 3c 00 00 00 094697 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 83 d8 87 81 87 03 00 0000 0002 00 00030080000000 273 | 10 3c 00 00 00 09469f 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 60 d0 6c 80 8f 03 00 0000 0002 00 00030080000000 274 | 10 3c 00 00 00 0946a7 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 32 17 5b 7e a3 03 00 0000 0002 00 00030080000000 275 | 10 3c 00 00 00 0946af 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 b0 52 4e 7d ac 03 00 0000 0002 00 00030080000000 276 | 10 3c 00 00 00 0946b7 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 9c 14 55 7c ad 03 00 0000 0002 00 00030080000000 277 | 10 3c 00 00 00 0946bf 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 bf 7a eb 7b b3 03 00 0000 0002 00 00030080000000 278 | 10 3c 00 00 00 0946c7 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 7b 29 2e 7c b8 03 00 0000 0002 00 00030080000000 279 | 10 3c 00 00 00 0946cf 00ecff 9c1700 0230ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 001000 02 20 34 d5 5f 7c bc 03 00 0000 0002 00 00030080000000 280 | 281 | 10 3c 00 00 00 0946d7 68ecff 9c1700 2a30ff 0b 347700bcfb1d00 0f8007 1e78e0 0120000680 2e0d00 12 22 af 62 5f 7c bd 03 00 0000 0002 00 00030080000000 282 | 10 3c 00 00 00 0946df fef1ff 9c1700 fa2fff 0b 027400bc061e00 0f8007 1e78e0 0120000680 500800 22 37 61 ca ed 7c b9 03 00 0000 0002 00 00030080000000 283 | 10 3c 00 00 00 0946e7 c2fbff 9c1700 522eff 0b be7300bc0c1e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 65 1b e6 7d ba 03 00 0000 0002 00 00030080000000 284 | 10 3c 00 00 00 0946ef 120100 9d1700 5a2dff 0b 4e76003c051e00 0f8007 1e78e0 0120000680 0a0800 e2 3c cb 53 04 7f c0 03 00 0000 0002 00 00030080000000 285 | 286 | 10 3c 00 00 00 0946f7 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c b4 02 8a 7f c9 03 00 0000 0002 00 00030080000000 287 | 10 3c 00 00 00 0946ff ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 47 52 72 7f d3 03 00 0000 0002 00 00030080000000 288 | 10 3c 00 00 00 094707 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c b2 0d 64 7f d7 03 00 0000 0002 00 00030080000000 289 | 10 3c 00 00 00 09470f ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 20 9e 81 7f d3 03 00 0000 0002 00 00030080000000 290 | 10 3c 00 00 00 094717 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 3a 86 b9 7f d3 03 00 0000 0002 00 00030080000000 291 | 10 3c 00 00 00 094720 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 40 13 c5 7f d4 03 00 0000 0002 00 00030080000000 292 | 10 3c 00 00 00 094728 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 30 19 d1 7f d7 03 00 0000 0002 00 00030080000000 293 | 10 3c 00 00 00 094730 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 42 dd 09 80 d8 03 00 0000 0002 00 00030080000000 294 | 10 3c 00 00 00 094738 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 61 c8 2d 80 d9 03 00 0000 0002 00 00030080000000 295 | 10 3c 00 00 00 094740 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 2d 23 3a 80 d7 03 00 0000 0002 00 00030080000000 296 | 10 3c 00 00 00 094748 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c d4 0e 59 80 d9 03 00 0000 0002 00 00030080000000 297 | 10 3c 00 00 00 094750 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 51 27 6d 80 da 03 00 0000 0002 00 00030080000000 298 | 10 3c 00 00 00 094758 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c 9c 3c 7e 80 dc 03 00 0000 0002 00 00030080000000 299 | 10 3c 00 00 00 094760 ce0100 9d1700 322dff 0b 0078003c001e00 0f8007 1e78e0 0120000680 0a0800 e2 3c c7 0b 70 80 df 03 00 0000 0002 00 00030080000000 300 | 301 | 10 3c 00 00 00 094768 6affff 9c1700 ca2dff 0b 667a00bcf61d00 0f8007 1e78e0 0120000680 2a0d00 12 22 be 43 25 80 e0 03 00 0000 0002 00 00030080000000 302 | 10 3c 00 00 00 094770 a0f6ff 9c1700 c22fff 0b 987d003ced1d00 0f8007 1e78e0 0120000680 741600 12 2d fc b5 be 7f d3 03 00 0000 0002 00 00030080000000 303 | 10 3c 00 00 00 094778 9ae9ff 9c1700 5a32ff 0b ea7d003ced1d00 0f8007 1e78e0 0120000680 8e1700 7a 35 1a ae 5e 7f d0 03 00 0000 0002 00 00030080000000 304 | 10 3c 00 00 00 094780 fae0ff 9c1700 1234ff 0b 5c7b00bcf51d00 0f8007 1e78e0 0120000680 8e1700 7a 35 d2 6b 8e 7e d5 03 00 0000 0002 00 00030080000000 305 | 10 3c 00 00 00 094788 76ddff 9c1700 c234ff 0b cc7800bcfd1d00 0f8007 1e78e0 0120000680 8e1700 7a 35 c7 62 6e 7d db 03 00 0000 0002 00 00030080000000 306 | 307 | 10 3c 00 00 00 094790 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 1d d1 5f 7d de 03 00 0000 0002 00 00030080000000 308 | 10 3c 00 00 00 094798 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 e2 88 7a 7d e3 03 00 0000 0002 00 00030080000000 309 | 10 3c 00 00 00 0947a0 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 9b 24 94 7d e5 03 00 0000 0002 00 00030080000000 310 | 10 3c 00 00 00 0947a8 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 21 33 88 7d e8 03 00 0000 0002 00 00030080000000 311 | 10 3c 00 00 00 0947b0 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 bd c5 93 7d e7 03 00 0000 0002 00 00030080000000 312 | 10 3c 00 00 00 0947b8 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 aa 26 b2 7d e5 03 00 0000 0002 00 00030080000000 313 | 10 3c 00 00 00 0947c0 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 91 98 dc 7d e6 03 00 0000 0002 00 00030080000000 314 | 10 3c 00 00 00 0947c8 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 de a1 f3 7d e6 03 00 0000 0002 00 00030080000000 315 | 10 3c 00 00 00 0947d0 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 ac 33 1e 7e e6 03 00 0000 0002 00 00030080000000 316 | 10 3c 00 00 00 0947d8 62ddff 9c1700 ca34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 8e1700 7a 35 6e e2 d6 7d e8 03 00 0000 0002 00 00030080000000 317 | 10 3c 00 00 00 0947e0 5eddff 9c1700 4a44ff 0b 0e78003c371d00 0f8007 1e78e0 0120000680 2a1300 9a 22 58 1a 16 7d dd 03 00 0000 0002 00 00030080000000 318 | 319 | 10 3c 00 00 00 0947e8 06ddff 9c1700 626dff 0b 3e7800bc6a1c00 0f8007 1e78e0 0120000680 081100 4a 20 bf 9c 2a 7d c9 03 00 0000 0002 00 00030080000000 320 | 10 3c 00 00 00 0947f0 86dcff 9c1700 e2a5ff 0b 387800bc661c00 0f8007 1e78e0 0120000680 a61000 1a 20 56 39 9d 7d c7 03 00 0000 0002 00 00030080000000 321 | 10 3c 00 00 00 0947f8 32dcff 9c1700 42ccff 0b 227800bc0a1d00 0f8007 1e78e0 0120000680 a61000 1a 20 09 de b0 7d cc 03 00 0000 0002 00 00030080000000 322 | 10 3c 00 00 00 094800 0adcff 9c1700 2adeff 0b 0c78003cae1d00 0f8007 1e78e0 0120000680 a61000 1a 20 db 7b d7 7d d2 03 00 0000 0002 00 00030080000000 323 | 324 | 10 3c 00 00 00 094808 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 af c1 dc 7d d6 03 00 0000 0002 00 00030080000000 325 | 10 3c 00 00 00 094810 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 52 2b f4 7d d7 03 00 0000 0002 00 00030080000000 326 | 10 3c 00 00 00 094818 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 a7 53 1c 7e d9 03 00 0000 0002 00 00030080000000 327 | 10 3c 00 00 00 094820 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 25 29 51 7e dc 03 00 0000 0002 00 00030080000000 328 | 10 3c 00 00 00 094828 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 a3 97 46 7e e2 03 00 0000 0002 00 00030080000000 329 | 10 3c 00 00 00 094830 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 3a 04 40 7e e7 03 00 0000 0002 00 00030080000000 330 | 10 3c 00 00 00 094838 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 20 61 43 7e ed 03 00 0000 0002 00 00030080000000 331 | 10 3c 00 00 00 094840 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 53 32 34 7e ef 03 00 0000 0002 00 00030080000000 332 | 10 3c 00 00 00 094848 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 e4 93 3a 7e ef 03 00 0000 0002 00 00030080000000 333 | 10 3c 00 00 00 094850 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 2b e2 2b 7e f1 03 00 0000 0002 00 00030080000000 334 | 10 3c 00 00 00 094858 08dcff 9c1700 72dfff 0b 0078003c001e00 0f8007 1e78e0 0120000680 a61000 1a 20 cf e1 3b 7e f1 03 00 0000 0002 00 00030080000000 335 | 336 | 10 3c 00 00 00 094860 34dcff 9c1700 02d6ff 0b d67700bc971e00 0f8007 1e78e0 0120000680 f40800 da 30 a8 59 63 7e ed 03 00 0000 0002 00 00030080000000 337 | 10 3c 00 00 00 094868 bcdcff 9c1700 1ab3ff 0b b077003c641f00 0f8007 1e78e0 0120000680 cc0a00 52 58 5f 13 10 7f ea 03 00 0000 0002 00 00030080000000 338 | 10 3c 00 00 00 094870 7cddff 9c1700 aa7aff 0b 9e77003cc21f00 0f8007 1e78e0 0120000680 d00d00 ca 5e 33 5e 15 7f f2 03 00 0000 0002 00 00030080000000 339 | 10 3c 00 00 00 094878 14deff 9c1700 324fff 0b c27700bc1e1f00 0f8007 1e78e0 0120000680 d00d00 ca 5e be 5a 30 7f fc 03 00 0000 0002 00 00030080000000 340 | 10 3c 00 00 00 094880 64deff 9c1700 3238ff 0b e67700bc7a1e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 60 6e 57 7f fc 03 00 0000 0002 00 00030080000000 341 | 342 | 10 3c 00 00 00 094888 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 6d 50 73 7f fc 03 00 0000 0002 00 00030080000000 343 | 10 3c 00 00 00 094890 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 18 b2 7a 7f fd 03 00 0000 0002 00 00030080000000 344 | 10 3c 00 00 00 094898 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e f5 97 7c 7f fd 03 00 0000 0002 00 00030080000000 345 | 10 3c 00 00 00 0948a0 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 2c 7a 7f 7f fe 03 00 0000 0002 00 00030080000000 346 | 10 3c 00 00 00 0948a8 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e b2 89 7b 7f ff 03 00 0000 0002 00 00030080000000 347 | 10 3c 00 00 00 0948b0 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e d2 ad 87 7f 01 04 00 0000 0002 00 00030080000000 348 | 10 3c 00 00 00 0948b8 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 32 b2 8b 7f 01 04 00 0000 0002 00 00030080000000 349 | 10 3c 00 00 00 0948c0 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 69 87 9b 7f 01 04 00 0000 0002 00 00030080000000 350 | 10 3c 00 00 00 0948c8 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 2e 87 95 7f 01 04 00 0000 0002 00 00030080000000 351 | 10 3c 00 00 00 0948d0 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e db 2e 9c 7f 00 04 00 0000 0002 00 00030080000000 352 | 10 3c 00 00 00 0948d8 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 0d 48 c4 7f 00 04 00 0000 0002 00 00030080000000 353 | 10 3c 00 00 00 0948e0 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e ac db 42 80 ed 03 00 0000 0002 00 00030080000000 354 | 10 3c 00 00 00 0948e8 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 7a b0 9e 80 e8 03 00 0000 0002 00 00030080000000 355 | 10 3c 00 00 00 0948f0 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 6b 8d 26 80 e7 03 00 0000 0002 00 00030080000000 356 | 10 3c 00 00 00 0948f8 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 9f 33 5b 7f e6 03 00 0000 0002 00 00030080000000 357 | 10 3c 00 00 00 094900 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e a8 73 b2 7e da 03 00 0000 0002 00 00030080000000 358 | 10 3c 00 00 00 094908 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 2a 11 06 7f ce 03 00 0000 0002 00 00030080000000 359 | 10 3c 00 00 00 094910 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 49 58 a7 7f cf 03 00 0000 0002 00 00030080000000 360 | 10 3c 00 00 00 094918 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 75 61 73 7f ed 03 00 0000 0002 00 00030080000000 361 | 10 3c 00 00 00 094920 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 14 dc cd 7e f8 03 00 0000 0002 00 00030080000000 362 | 10 3c 00 00 00 094928 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 21 7e ff 7d f5 03 00 0000 0002 00 00030080000000 363 | 10 3c 00 00 00 094930 72deff 9c1700 5a34ff 0b 0078003c001e00 0f8007 1e78e0 0120000680 d00d00 ca 5e 25 ea 2f 7e ea 03 00 0000 0002 00 00030080000000 364 | 365 | === 366 | Rotation clockwise (flick) 367 | 368 | 10 3c 00 00 00 0d7af2 c07eff 009003 da5d35 04 0078003c001e00 0f8007 1e78e0 0120000680 860e00 92202259778ddb0200 0000 0002 0000030080000000 369 | 10 3c 00 00 00 0d7b02 c07eff 009003 da5d35 04 0078003c001e00 0f8007 1e78e0 0120000680 860e00 9220c958628cec0200 0000 0002 0000030080000000 370 | 10 3c 00 00 00 0d7b12 c07eff 009003 da5d35 04 0078003c001e00 0f8007 1e78e0 0120000680 860e00 92201b04a2880e0300 0000 0002 0000030080000000 371 | 10 3c 00 00 00 0d7b22 c07eff 009003 da5d35 04 0078003c001e00 0f8007 1e78e0 0120000680 860e00 922063021e8a4f0300 0000 0002 0000030080000000 372 | 10 3c 00 00 00 0d7b32 c07eff 009003 da5d35 04 0078003c001e00 0f8007 1e78e0 0120000680 860e00 9220bb32428a290300 0000 0002 0000030080000000 373 | 10 3c 00 00 00 0d7b42 c07eff 009003 da5d35 04 0078003c001e00 0f8007 1e78e0 0120000680 860e00 9220d4f55d8a090300 0000 0002 0000030080000000 374 | 375 | 10 3c 00 00 00 0d7b52 a876ff 009003 427535 04 fa73003cd51e00 0f8007 1e78e0 0120000680 940800 f24b9ae5c38be20200 0000 0002 0000030080000000 376 | 10 3c 00 00 00 0d7b62 606bff 009003 02d835 04 5a77003cea1f00 0f8007 1e78e0 0120000680 1a0e00 1a5fd2a4178e9f0200 0000 0002 0000030080000000 377 | 10 3c 00 00 00 0d7b72 8a76ff 009003 024436 04 487d003c621f00 0f8007 1e78e0 0120000680 ac1400 025af76d858ba80200 0000 0002 0000030080000000 378 | 10 3c 00 00 00 0d7b82 2692ff 009003 726a36 04 727f003ced1d00 0f8007 1e78e0 0120000680 001800 9a40dd03ea88d90200 0000 0002 0000030080000000 379 | 10 3c 00 00 00 0d7b92 c8a8ff 009003 223736 04 687b003cd61c00 0f8007 1e78e0 0120000680 e80f00 0220ac708e86dc0200 0000 0002 0000030080000000 380 | 10 3c 00 00 00 0d7ba2 d8a8ff 009003 7af735 04 d27500bc631d00 0f8007 1e78e0 0120000680 020800 72418693c187e20200 0000 0002 0000130080000000 381 | 382 | 10 3c 00 00 00 0d7bb2 bca1ff 009003 eaf035 04 0078003c001e00 0f8007 1e78e0 0120000680 2c0900 aa50dc045187e30200 0000 0002 0000030080000000 383 | 10 3c 00 00 00 0d7bc3 bca1ff 009003 eaf035 04 0078003c001e00 0f8007 1e78e0 0120000680 2c0900 aa5087318687220300 0000 0002 0000030080000000 384 | 10 3c 00 00 00 0d7bd3 bca1ff 009003 eaf035 04 0078003c001e00 0f8007 1e78e0 0120000680 2c0900 aa5008cb7388160300 0000 0002 0000030080000000 385 | 386 | === 387 | Circle running clockwise 388 | 389 | 10 3c 00 00 00 007faa 700f00 791e00 9ab9fe 1b 6a70003cb31d00 0f8007 1e78e0 fd1f003680 640800 2236c3f581bc510300 0000 0002 0000030080000000 390 | 10 3c 00 00 00 007fb2 1c0000 7d1d00 9ab8fe 1b 567000bc1f1e00 0f8007 1e78e0 0120003680 060800 aa3dc23835c5510300 0000 0002 0000030080000000 391 | 10 3c 00 00 00 007fba 14f1ff cc1b00 b2c4fe 1b 9c70003c861e00 0f8007 1e78e0 0520003680 140800 8a440ad2d0cd520300 0000 0002 0000030080000000 392 | 10 3c 00 00 00 007fc2 00e3ff 8cd101 12edc6 03 3471adbbe49eeb 0e8007 1e78e0 0520003680 7e0800 0a4bb60a4dd6554300 0000 0002 0000070080000000 393 | 10 3c 00 00 00 007fca a8d6ff fccf01 c20fc7 03 1272c2bb381f00 0f8007 1e78e0 0520003680 3a0900 0251b757e8de563300 0000 0002 0000030080000000 394 | 10 3c 00 00 00 007fd2 2cccff 9c1700 822cff 1b 3073003c7f1f00 0f8007 1e78e0 0120000680 440a00 5256d64269e7520300 0000 0002 0000030080000000 395 | 10 3c 00 00 00 007fda 40c4ff 9c1700 0a61ff 1b 8e7400bcb71f00 0f8007 1e78e0 0120000680 900b00 a25a9421fdef4e0300 0000 0002 0000030080000000 396 | 10 3c 00 00 00 007fe2 3ebfff 9c1700 029bff 1b 0a7600bcdb1f00 0f8007 1e78e0 0120000680 0e0d00 c25d1af78ef84a0300 0000 0002 0000030080000000 397 | 10 3c 00 00 00 007fea 10b9ff d81700 6ac2ff 1b 2c74ec3be61e00 0f8007 1e78e0 0120000680 a80e00 8a5faca267014b3300 0000 0002 0000030080000000 398 | 10 3c 00 00 00 007ff2 c8b1ff 841a00 4ae2ff 1b 8c7501bc391f00 0f8007 1e78e0 0d20000680 7c1000 f25fe26c020b4d0300 0000 0002 0000030080000000 399 | 10 3c 00 00 00 007ffa c6adff d81d00 5a0d00 1c 6e7700bc781f00 0f8007 1e78e0 0d20000680 601200 925e1106fd144f0300 0000 0002 0000030080000000 400 | 401 | 10 3c 00 00 00 11acbb 603200 9d1700 529dff 8b 0078 003c00 1e000f 8007 1e78e0 012000068000100002208dec4586350100000000020000030080000000 402 | 10 3c 00 00 00 11ad3c 603200 694b00 529dff 8b 0078 b73b00 9e0b50 1308 1e78e0 01200006800010000220829ac1876b6100000000021000170080000200 403 | -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 36,0x03d3/0x1058: -------------------------------------------------------------------------------- 1 | 2 | Player Gear 3 | 4 | NZ89 5 | cl][sz] [sb][at][frmCnt] [pl] [sc] [ec] [wp] [inked ] [sh] [s1] [s2] [s3] [sa] [st] [cl] [s1] [s2] [s3] [sa] [st] [hd] [s1] [s2] [s3] [sa] [st] [lv] 6 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0425 007300060002 00009d4b 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 7 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0425 007300060002 0000a265 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 8 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0425 007300060002 0000a8bb 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 9 | SplashNeo 10 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 03fd 006900020000 00030602 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 11 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 03fd 006900020000 00030982 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000205ffff000000ffffffff 12 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 03fd 006900020000 00030c48 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000205ffff000000ffffffff 13 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 03fd 006900020000 000303a0 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 14 | Dual 15 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0442 007800000006 000127f3 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 16 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0442 007800000006 0001299d 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 17 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0442 007800000006 00012d40 07d5 0006 0006 0006 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000204ffff000000ffffffff 18 | shoes 19 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0442 007800000006 0001315d 03f0 0004 0000 0002 0004 0004 138b 0006 0006 000b 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000205ffff000000ffffffff 20 | clothes 21 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0442 007800000006 000133f5 03f0 0004 0000 0002 0004 0004 0bbd 0004 000a 0006 0004 0004 0001 0000 0000 0001 0004 0004 0000 22 0600000002000205ffff000000ffffffff 22 | head 23 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 04 04 0442 007800000006 0001366f 03f0 0004 0000 0002 0004 0004 0bbd 0004 000a 0006 0004 0004 0bbf 000c 0007 0004 0003 0004 0000 22 0600000002000204ffff000000ffffffff 24 | eye color 25 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 01 04 0442 007800000006 000138c9 0fa0 0006 0003 0004 0001 0002 138b 0006 0006 000b 0004 0004 232a 000b 0005 000b 0001 0002 0000 22 0600000002000204ffff000000ffffffff 26 | skin color 27 | 10 58 00 01 00 01dfb9 0000003131310000 00 03 01 04 0442 007800000006 00013bc6 0fa0 0006 0003 0004 0002 0002 138b 0006 0006 000b 0004 0004 232a 000b 0005 000b 0002 0002 0000 22 0600000002000204ffff000000ffffffff 28 | gender 29 | 10 58 00 01 00 01dfb9 0000003131310000 01 03 01 04 0442 007800000006 00014097 0fa0 0006 0003 0004 0002 0002 07d3 0009 0002 0006 0003 0004 232a 000b 0005 000b 0002 0002 0000 22 0600000002000204ffff000000ffffffff 30 | level up 31 | 10 58 00 01 00 01dfb9 0000003131310000 00 02 01 04 0425 007300060002 0000c817 0fa0 0006 0003 0004 0004 0004 07d3 0009 0002 0006 0004 0004 232a 000b 0005 000b 0004 0004 0000 23 0600030002000205ffff000000ffffffff 32 | 33 | 34 | cl - Segment Class 35 | sz - Segment Size 36 | sb - Segment Sub 37 | at - Segment Action 38 | frmCnt - Frame Counter 39 | pl - player model 40 | sc - skin color 41 | ec - eye color 42 | wp - Weapon ID 43 | sh - Shoes ID 44 | cl - Clothes ID 45 | hd - Head ID 46 | s1 - sub slot 1 47 | s2 - sub slot 2 48 | s3 - sub slot 3 49 | sa - slots avaible 50 | st - slots unlocked 51 | lv - player level (zero index) 52 | 53 | sub gear ids 54 | 0x0000 - damage up 55 | 0x0001 - defense up 56 | 0x0002 - ink saver (main) 57 | 0x0003 - ink saver (sub) 58 | 0x0004 - ink recovery up 59 | 60 | 0x0006 - swim speed up 61 | 0x0007 - special charge up 62 | 63 | 0x0009 - quick respawn 64 | 0x000a - special saver 65 | 66 | 0x000c - bomb range up 67 | 68 | 69 | swim up, swim up, swim up 70 | 0006 0006 0006 0004 0004 71 | recovery up, damage up, saver main 72 | 0004 0000 0002 0004 0004 73 | swim up, swim up, quick jump 74 | 0006 0006 000b 0004 0004 75 | revovery up, saver, swim up 76 | 0004 000a 0006 0004 0004 77 | bomb up, special up, unknown 78 | 000c 0007 0004 0003 0004 79 | 80 | 81 | 00000031313100000002010404250073000600020000c8170fa00006000300040004000407d300090002000600040004232a000b0005000b000400040000230600030002000205ffff000000ffffffff 82 | -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 36,0x03d3/30 - 0103: -------------------------------------------------------------------------------- 1 | ground [Frame ] [X-axis][Y-axis][Z-axis] 2 | 103c000000 0bb20b 16f800 019800 da04d0 030078003c001e000f80071e78e00120000680161000026066baf4ff2a0470008066008004130080000000 3 | 30 31 00 01 03 00880088020000017f000bb205 fffffffffffdd555 c1f8d3 a71d20 001340 65337a 00 200080 ff 73e1fffe0000 4 | 5 | 6 | above 7 | 103c000000 0ba979 5e7501 01b001 d248c8 030078003c001e000f80071e78e001200006802a1400b224150c3a0210040000000002800d130080000000 8 | 30 31 00 01 03 00000000020000017f000ba9af fffffffffffdd555 c1f853 042e20 003640 4f3c79 00 204080 ff 73e1fffe000a 9 | 10 | 01b001 000000011011000000000001 11 | 403600 010000000011011000000000 12 | 13 | 14 | cl - Segment Class 15 | sz - Segment Size 16 | sb - Segment Sub 17 | at - Segment Action 18 | seq - Segment sequence number 19 | pri - Segment Priority 20 | frmCnt - Frame Counter 21 | 22 | ======= 23 | Seeker 24 | 25 | [cl][sz] [sb][at][seq ] [pri ] [frmCnd] [X-axis][Y-axis][Z-axis] 26 | 30 31 00 01 03 0001 0000 020000 017f 00 0ba9b1 fffffffffffdd555 c1f893 0d2e20 003640 b53f79 00 204080 ff 73e1fffe000c 27 | 30 31 00 01 03 0002 0000 020000 017f 00 0ba9b3 fffffffffffdd555 c1f8d3 162e20 003640 1c4379 00 204080 ff 7be1fffe000e 28 | 30 31 00 01 03 0003 0000 020000 017f 00 0ba9b5 fffffffffffdd555 c1f853 202e20 003640 864679 00 204080 ff 7be1fffe0000 29 | 30 31 00 01 03 0004 0000 020000 017f 00 0ba9b7 fffffffffffdd555 c1f893 292e20 003640 f24979 00 204080 ff 83e1fffe0002 30 | 30 31 00 01 03 0005 0000 020000 017f 00 0ba9b9 fffffffffffdd555 c1f8d3 322e20 003640 5f4d79 00 204080 ff 83e1fffe0004 31 | 30 31 00 01 03 0006 0000 020000 017f 00 0ba9bb fffffffffffdd555 c1f853 3c2e20 003640 ce5079 00 204080 ff 83e1fffe0006 32 | 30 31 00 01 03 0007 0000 020000 017f 00 0ba9bd fffffffffffdd555 c1f8d3 452e20 003640 3f5479 00 204080 ff 8be1fffe0008 33 | 30 31 00 01 03 0008 0000 020000 017f 00 0ba9bf fffffffffffdd555 c1f813 4f2e20 003640 b15779 00 204080 ff 8be1fffe000a 34 | 30 31 00 01 03 0009 0000 020000 017f 00 0ba9c1 fffffffffffdd555 c1f893 582e20 003640 255b79 00 204080 ff 8be1fffe000c 35 | 30 31 00 01 03 000a 0000 020000 017f 00 0ba9c3 fffffffffffdd555 c1f813 622e20 003640 9a5e79 00 204080 ff 8be1fffe000e 36 | 30 31 00 01 03 000b 0000 020000 017f 00 0ba9c5 fffffffffffdd555 c1f893 6b2e20 003640 116279 00 204080 ff 8be1fffe0000 37 | 30 31 00 01 03 000c 0000 020000 017f 00 0ba9c7 fffffffffffdd555 c1f813 752e20 003640 896579 00 204080 ff 93e1fffe0002 38 | 30 31 00 01 03 000d 0000 020000 017f 00 0ba9c9 fffffffffffdd555 c1f893 7e2e20 003640 036979 00 204080 ff 93e1fffe0004 39 | 30 31 00 01 03 000e 0006 020000 017f 00 0ba9cb fffffffffffdd555 c1f813 882e20 003640 7e6c79 00 204080 ff 93e1fffe0006 40 | 30 31 00 01 03 000f 0006 020000 017f 00 0ba9cd fffffffffffdd555 c1f893 912e20 003640 f96f79 00 204080 ff 93e1fffe0008 41 | 30 31 00 01 03 0010 0006 020000 017f 00 0ba9cf fffffffffffdd555 c1f813 9b2e20 003640 777379 00 204080 ff 93e1fffe000a 42 | 30 31 00 01 03 0011 0006 020000 017f 00 0ba9d1 fffffffffffdd555 c1f893 a42e20 003640 f57679 00 204080 ff 93e1fffe000c 43 | 30 31 00 01 03 0012 000a 020000 017f 00 0ba9d3 fffffffffffdd555 c1f853 ae2e20 003640 747a79 00 204080 ff 93e1fffe000e 44 | 30 31 00 01 03 0013 000a 020000 017f 00 0ba9d5 fffffffffffdd555 c1f8d3 b72e20 003640 f47d79 00 204080 ff 9be1fffe0000 45 | 30 31 00 01 03 0014 000a 020000 017f 00 0ba9d7 fffffffffffdd555 c1f853 c12e20 003640 768179 00 204080 ff 9be1fffe0002 46 | 30 31 00 01 03 0015 000a 020000 017f 00 0ba9d9 fffffffffffdd555 c1f813 cb2e20 003640 f88479 00 204080 ff 9be1fffe0004 47 | 30 31 00 01 03 0016 000e 020000 017f 00 0ba9db fffffffffffdd555 c1f893 d42e20 003640 7b8879 00 204080 ff 9be1fffe0006 48 | 30 31 00 01 03 0017 000e 020000 017f 00 0ba9dd fffffffffffdd555 c1f813 de2e20 003640 ff8b79 00 204080 ff 9be1fffe0008 49 | 30 31 00 01 03 0018 000e 020000 017f 00 0ba9df fffffffffffdd555 c1f8d3 e72e20 003640 848f79 00 204080 ff 9be1fffe000a 50 | 30 31 00 01 03 0019 000e 020000 017f 00 0ba9e1 fffffffffffdd555 c1f853 f12e20 003640 099379 00 204080 ff 9be1fffe000c 51 | 30 31 00 01 03 001a 0012 020000 017f 00 0ba9e3 fffffffffffdd555 c1f813 fb2e20 003640 909679 00 204080 ff 9be1fffe000e 52 | 30 31 00 01 03 001b 0012 020000 017f 00 0ba9e5 fffffffffffdd555 c1f8d3 042f20 003640 179a79 00 204080 ff 9be1fffe0000 53 | 30 31 00 01 03 001c 0012 020000 017f 00 0ba9e7 fffffffffffdd555 c1f853 0e2f20 003640 9f9d79 00 204080 ff 9be1fffe0002 54 | 30 31 00 01 03 001d 0012 020000 017f 00 0ba9e9 fffffffffffdd555 c1f813 182f20 003640 27a179 00 204080 ff 9be1fffe0004 55 | 30 31 00 01 03 001e 0012 020000 017f 00 0ba9eb fffffffffffdd555 c1f8d3 212f20 003640 b0a479 00 204080 ff 9be1fffe0006 56 | 30 31 00 01 03 001f 0012 020000 017f 00 0ba9ed fffffffffffdd555 c1f853 2b2f20 003640 3aa879 00 204080 ff 9be1fffe0008 57 | 30 31 00 01 03 0020 0012 020000 017f 00 0ba9ef fffffffffffdd555 c1f813 352f20 003640 c5ab79 00 204080 ff 9be1fffe000a 58 | 30 31 00 01 03 0021 0012 020000 017f 00 0ba9f1 fffffffffffdd555 c1f8d3 3e2f20 003640 50af79 00 204080 ff a3e1fffe000c 59 | 30 31 00 01 03 0022 001a 020000 017f 00 0ba9f3 fffffffffffdd555 c1f853 482f20 003640 dbb279 00 204080 ff a3e1fffe000e 60 | 30 31 00 01 03 0023 001a 020000 017f 00 0ba9f5 fffffffffffdd555 c1f813 522f20 003640 67b679 00 204080 ff a3e1fffe0000 61 | 30 31 00 01 03 0024 001a 020000 017f 00 0ba9f7 fffffffffffdd555 c1f8d3 5b2f20 003640 f4b979 00 204080 ff a3e1fffe0002 62 | 30 31 00 01 03 0025 001a 020000 017f 00 0ba9f9 fffffffffffdd555 c1f893 652f20 003640 81bd79 00 204080 ff a3e1fffe0004 63 | 30 31 00 01 03 0026 001e 020000 017f 00 0ba9fb fffffffffffdd555 c1f853 6f2f20 003640 0ec179 00 204080 ff a3e1fffe0006 64 | 30 31 00 01 03 0027 001e 020000 017f 00 0ba9fd fffffffffffdd555 c1f813 792f20 003640 9cc479 00 204080 ff a3e1fffe0008 65 | 30 31 00 01 03 0028 001e 020000 017f 00 0ba9ff fffffffffffdd555 c1f8d3 822f20 003640 2bc879 00 204080 ff a3e1fffe000a 66 | 30 31 00 01 03 0029 001e 020000 017f 00 0baa01 fffffffffffdd555 c1f853 8c2f20 003640 bacb79 00 204080 ff a3e1fffe000c 67 | 30 31 00 01 03 002a 0022 020000 017f 00 0baa03 fffffffffffdd555 c1f813 962f20 003640 49cf79 00 204080 ff a3e1fffe000e 68 | 30 31 00 01 03 002b 0022 020000 017f 00 0baa05 fffffffffffdd555 c1f8d3 9f2f20 003640 d8d279 00 204080 ff a3e1fffe0000 69 | 30 31 00 01 03 002c 0022 020000 017f 00 0baa07 fffffffffffdd555 c1f893 a92f20 003640 68d679 00 204080 ff a3e1fffe0002 70 | 30 31 00 01 03 002d 0022 020000 017f 00 0baa09 fffffffffffdd555 c1f853 b32f20 003640 f9d979 00 204080 ff a3e1fffe0004 71 | 30 31 00 01 03 002e 0026 020000 017f 00 0baa0b fffffffffffdd555 c1f813 bd2f20 003640 89dd79 00 204080 ff a3e1fffe0006 72 | 30 31 00 01 03 002f 0026 020000 017f 00 0baa0d fffffffffffdd555 c1f8d3 c62f20 003640 1ae179 00 204080 ff a3e1fffe0008 73 | 30 31 00 01 03 0030 0026 020000 017f 00 0baa0f fffffffffffdd555 c1f893 d02f20 003640 ace479 00 204080 ff a3e1fffe000a 74 | 30 31 00 01 03 0031 0026 020000 017f 00 0baa11 fffffffffffdd555 c1f853 da2f20 003640 3de879 00 204080 ff a3e1fffe000c 75 | 30 31 00 01 03 0032 0026 020000 017f 00 0baa13 fffffffffffdd555 c1f813 e42f20 003640 cfeb79 00 204080 ff a3e1fffe000e 76 | 30 31 00 01 03 0033 0026 020000 017f 00 0baa15 fffffffffffdd555 c1f8d3 ed2f20 003640 61ef79 00 204080 ff a3e1fffe0000 77 | 78 | 79 | ======= 80 | Burst Bomb 81 | 82 | 30 31 00 01 03 0000 0000 060000 00ff 00 0ee013 ffffffffffff5555 e2f993 6dc71e 005440 f2f281 00 70a06a ff 93fffffe0004 83 | 30 31 00 01 03 0001 0000 060000 00ff 00 0ee013 ffffffffffff5555 e2f947 edce9e 1c5a40 f2f281 00 38a06a ff 93fffffe0004 84 | 30 31 00 01 03 0002 0000 060000 00ff 00 0ee01b ffffffffffff5555 e1f947 edce1e 616140 09f081 00 24a083 ff fbdffffe000c 85 | 30 31 00 01 03 0003 0000 060000 00ff 00 0ee01d ffffffffffff5555 e1f947 edce1e da5d40 cf1382 00 24407d ff 9be0fffe000e 86 | 30 31 00 01 03 0004 0000 060000 00ff 00 0ee01d ffffffffffff5555 e1f947 edce9e e85b40 d01782 00 240083 ff 8be0fffe000e 87 | 30 31 00 01 03 0005 0000 060000 00ff 00 0ee01d ffffffffffff5555 e1f947 edce9e 145c40 511b82 00 24807e ff dbe0fffe000e 88 | 30 31 00 01 03 0006 0000 060000 00ff 00 0ee01d ffffffffffff5555 e5f947 edce1e 616140 09f081 00 14e0ff ff 8bdefffe000e 89 | 30 31 00 01 03 0007 0000 060000 00ff 00 0ee01f ffffffffffff5555 e5f947 edce1e da5d40 cf1382 00 14401f ff f3f4fffe0000 90 | 30 31 00 01 03 0008 0000 060000 00ff 00 0ee01f ffffffffffff5555 e5f947 edce9e c55b40 d01782 00 1440e9 ff 3bf2fffe0000 91 | 30 31 00 01 03 0009 0000 060000 00ff 00 0ee01f ffffffffffff5555 e5f947 edce9e 145c40 511b82 00 14404c ff 4bfdfffe0000 92 | 30 31 00 01 03 000a 0000 060000 00ff 00 0ee025 ffffffffffff5555 e5f947 edce9e f86040 09f081 00 14e0ff ff 8bdefffe0006 93 | 30 31 00 01 03 000b 0000 060000 00ff 00 0ee027 ffffffffffff5555 e5f947 edce1e 585d40 cf1382 00 14401f ff f3f4fffe0008 94 | 30 31 00 01 03 000c 0000 060000 00ff 00 0ee027 ffffffffffff5555 e5f947 edce1e 2e5b40 d01782 00 1440e9 ff 3bf2fffe0008 95 | 30 31 00 01 03 000d 0000 060000 00ff 00 0ee027 ffffffffffff5555 e5f947 edce1e 835b40 511b82 00 14404c ff 4bfdfffe0008 96 | 30 31 00 01 03 000e 0000 060000 00ff 00 0ee02d ffffffffffff5555 e5f947 edce9e 686040 09f081 00 14e0ff ff 8bdefffe000e 97 | 30 31 00 01 03 000f 0000 060000 00ff 00 0ee02f ffffffffffff5555 e5f947 edce9e c65c40 cf1382 00 14401f ff f3f4fffe0000 98 | 30 31 00 01 03 0010 0000 060000 00ff 00 0ee02f ffffffffffff5555 e5f947 edce9e 9e5a40 d01782 00 1440e9 ff 3bf2fffe0000 99 | 30 31 00 01 03 0011 0000 060000 00ff 00 0ee02f ffffffffffff5555 e5f947 edce1e f15a40 511b82 00 14404c ff 4bfdfffe0000 100 | 30 31 00 01 03 0012 0000 060000 00ff 00 0ee031 ffffffffffff5555 e1f993 89c31e 005440 aa6182 00 180066 ff 430e00ff0002 101 | 30 31 00 01 03 0013 0002 060000 00ff 00 0ee035 ffffffffffff5555 e1f913 84af1e 005740 54cb81 00 18c0e0 fe 83cffffe0006 102 | 30 31 00 01 03 0014 0002 060000 00ff 00 0ee035 ffffffffffff5555 e5f947 edce9e e25f40 09f081 00 14e0ff ff 8bdefffe0006 103 | 30 31 00 01 03 0015 0002 060000 00ff 00 0ee037 ffffffffffff5555 e5f947 edce1e 405c40 cf1382 00 14401f ff f3f4fffe0008 104 | 30 31 00 01 03 0016 0002 060000 00ff 00 0ee037 ffffffffffff5555 e5f947 edce1e 1b5a40 d01782 00 1440e9 ff 3bf2fffe0008 105 | 30 31 00 01 03 0017 0002 060000 00ff 00 0ee037 ffffffffffff5555 e5f947 edce1e 6b5a40 511b82 00 14404c ff 4bfdfffe0008 106 | 30 31 00 01 03 0018 0002 060000 00ff 00 0ee039 ffffffffffff5555 e1f953 deac9e 5b5840 06f281 00 18a0cc fe a3dfffda800b 107 | 30 31 00 01 03 0019 0002 060000 00ff 00 0ee03d ffffffffffff5555 e5f947 edce9e 3c5f40 09f081 00 14e0ff ff 8bdefffe000e 108 | 30 31 00 01 03 001a 0002 060000 00ff 00 0ee03f ffffffffffff5555 e1f953 1cb21e 005440 2bbb81 00 1820f2 fe d3c8fffe0000 109 | 30 31 00 01 03 001b 0002 060000 00ff 00 0ee03f ffffffffffff5555 e5f947 edce9e c45b40 cf1382 00 14401f ff f3f4fffe0000 110 | 30 31 00 01 03 001c 0002 060000 00ff 00 0ee03f ffffffffffff5555 e5f947 edce9e a15940 d01782 00 1440e9 ff 3bf2fffe0000 111 | 30 31 00 01 03 001d 0002 060000 00ff 00 0ee03f ffffffffffff5555 e5f947 edce1e ef5940 511b82 00 14404c ff 4bfdfffe0000 112 | 30 31 00 01 03 001e 000a 060000 00ff 00 0ee045 ffffffffffff5555 e5f947 edce1e 0d5e40 09f081 00 14e0ff ff 8bdefffe0006 113 | 30 31 00 01 03 001f 000a 060000 00ff 00 0ee047 ffffffffffff5555 e5f947 edce9e 515b40 cf1382 00 14401f ff f3f4fffe0008 114 | 30 31 00 01 03 0020 000a 060000 00ff 00 0ee047 ffffffffffff5555 e5f947 edce1e 315940 d01782 00 1440e9 ff 3bf2fffe0008 115 | 30 31 00 01 03 0021 000a 060000 00ff 00 0ee047 ffffffffffff5555 e5f947 edce1e 7c5940 511b82 00 14404c ff 4bfdfffe0008 116 | 30 31 00 01 03 000e 000a 060000 00be 00 0ee02d ffffffffffff5555 e5f947 edce9e 686040 09f081 00 14e0ff ff 8bdefffe000e 117 | 30 31 00 01 03 000f 000a 060000 00be 00 0ee02f ffffffffffff5555 e5f947 edce9e c65c40 cf1382 00 14401f ff f3f4fffe0000 118 | 30 31 00 01 03 0010 000a 060000 00be 00 0ee02f ffffffffffff5555 e5f947 edce9e 9e5a40 d01782 00 1440e9 ff 3bf2fffe0000 119 | 30 31 00 01 03 0011 000a 060000 00be 00 0ee02f ffffffffffff5555 e5f947 edce1e f15a40 511b82 00 14404c ff 4bfdfffe0000 120 | 30 31 00 01 03 0012 000a 060000 00be 00 0ee031 ffffffffffff5555 e1f993 89c31e 005440 aa6182 00 180066 ff 430e00ff0002 121 | 30 31 00 01 03 000a 000a 060000 0004 00 0ee025 ffffffffffff5555 e5f947 edce9e f86040 09f081 00 14e0ff ff 8bdefffe0006 122 | 30 31 00 01 03 000b 000a 060000 0004 00 0ee027 ffffffffffff5555 e5f947 edce1e 585d40 cf1382 00 14401f ff f3f4fffe0008 123 | 30 31 00 01 03 000c 000a 060000 0004 00 0ee027 ffffffffffff5555 e5f947 edce1e 2e5b40 d01782 00 1440e9 ff 3bf2fffe0008 124 | 30 31 00 01 03 000d 000a 060000 0004 00 0ee027 ffffffffffff5555 e5f947 edce1e 835b40 511b82 00 14404c ff 4bfdfffe0008 125 | 30 31 00 01 03 0022 000a 060000 00ff 00 0ee04d ffffffffffff5555 e1f913 31d11e 003b40 6f5981 00 1840c2 ff fb9efffe000e 126 | 30 31 00 01 03 0023 000a 060000 00ff 00 0ee04d ffffffffffff5555 e5f947 edce1e 9c5c40 09f081 00 14e0ff ff 8bdefffe000e 127 | 30 31 00 01 03 0024 000a 060000 00ff 00 0ee04f ffffffffffff5555 e5f947 edce9e d65a40 cf1382 00 14401f ff f3f4fffe0000 128 | 30 31 00 01 03 0025 000a 060000 00ff 00 0ee04f ffffffffffff5555 e5f947 edce9e c75840 d01782 00 1440e9 ff 3bf2fffe0000 129 | 30 31 00 01 03 0026 000a 060000 00ff 00 0ee04f ffffffffffff5555 e5f947 edce1e d05840 511b82 00 14404c ff 4bfdfffe0000 130 | 30 31 00 01 03 000e 000e 060000 00ac 00 0ee02d ffffffffffff5555 e5f947 edce9e 686040 09f081 00 14e0ff ff 8bdefffe000e 131 | 30 31 00 01 03 000f 000e 060000 00ac 00 0ee02f ffffffffffff5555 e5f947 edce9e c65c40 cf1382 00 14401f ff f3f4fffe0000 132 | 30 31 00 01 03 0010 000e 060000 00ac 00 0ee02f ffffffffffff5555 e5f947 edce9e 9e5a40 d01782 00 1440e9 ff 3bf2fffe0000 133 | 30 31 00 01 03 0011 000e 060000 00ac 00 0ee02f ffffffffffff5555 e5f947 edce1e f15a40 511b82 00 14404c ff 4bfdfffe0000 134 | 30 31 00 01 03 0012 000e 060000 00ac 00 0ee031 ffffffffffff5555 e1f993 89c31e 005440 aa6182 00 180066 ff 430e00ff0002 135 | 30 31 00 01 03 0013 0013 060000 00af 00 0ee035 ffffffffffff5555 e1f913 84af1e 005740 54cb81 00 18c0e0 fe 83cffffe0006 136 | 30 31 00 01 03 0014 0013 060000 00af 00 0ee035 ffffffffffff5555 e5f947 edce9e e25f40 09f081 00 14e0ff ff 8bdefffe0006 137 | 30 31 00 01 03 0015 0013 060000 00af 00 0ee037 ffffffffffff5555 e5f947 edce1e 405c40 cf1382 00 14401f ff f3f4fffe0008 138 | 30 31 00 01 03 0016 0013 060000 00af 00 0ee037 ffffffffffff5555 e5f947 edce1e 1b5a40 d01782 00 1440e9 ff 3bf2fffe0008 139 | 30 31 00 01 03 0017 0013 060000 00af 00 0ee037 ffffffffffff5555 e5f947 edce1e 6b5a40 511b82 00 14404c ff 4bfdfffe0008 140 | 30 31 00 01 03 0018 0013 060000 00af 00 0ee039 ffffffffffff5555 e1f953 deac9e 5b5840 06f281 00 18a0cc fe a3dfffda800b 141 | 142 | 143 | ======= 144 | Burst Bomb 145 | 146 | 30 31 00 01 03 0000 0000 060000 00ff 00 001019 ffffffffffff5555 e2f853 d53a21 005440 efce7d 00 70603f ff 63c4fffe0000 147 | 30 31 00 01 03 0001 0000 060000 00ff 00 001027 ffffffffffff5555 e1f843 693021 9d6240 51cf7d 00 246080 ff ebe0fffe000e 148 | 30 31 00 01 03 0002 0000 060000 00ff 00 001029 ffffffffffff5555 e5f843 693021 9d6240 51cf7d 00 14608c ff dbfffffe0000 149 | 150 | ======= 151 | Burst Bomb 152 | 153 | 30 31 00 01 03 0000 0000 070000 00ff 00 0dac8f ffffffffffff5555 e2f993 0af29f e71040 5dc67c 00 7040e1 ff cbf4fffe000c 154 | 30 31 00 01 03 0001 0000 070000 00ff 00 0dac9b ffffffffffff5555 e1f953 73e41f 950840 02b47c 00 18a032 ff c3d5ffd0e409 155 | 30 31 00 01 03 0002 0000 070000 00ff 00 0dac9d ffffffffffff5555 e1f953 bdf69f 361d40 4afb7c 00 1860b8 ff 5bf6ff7a5c0a 156 | 30 31 00 01 03 0003 0000 070000 00ff 00 0dac9d ffffffffffff5555 e1f947 bdf69f 361d40 4afb7c 00 24007d ff 8be0ffe6ca0a 157 | 30 31 00 01 03 0004 0000 070000 00ff 00 0dac9d ffffffffffff5555 e1f94b bdf69f 361d40 4afb7c 00 24007d ff 8be0ff68520b 158 | 30 31 00 01 03 0005 0000 070000 00ff 00 0dac9d ffffffffffff5555 e1f953 bdf69f 361d40 4afb7c 00 24007d ff 8be0ff7a5c0a 159 | 30 31 00 01 03 0006 0000 070000 00ff 00 0dac9d ffffffffffff5555 e1f9d3 dae39f 990140 edd57c 00 18402e ff 43e5fffaf00b 160 | 30 31 00 01 03 0007 0000 070000 00ff 00 0dac9f ffffffffffff5555 e1f9d3 f7e21f 920140 4cd97c 00 18c027 ff cbe6fff8c00d 161 | 30 31 00 01 03 0008 0000 070000 00ff 00 0dac9f ffffffffffff5555 e5f947 bdf69f 361d40 4afb7c 00 144016 ff 0bf2ffe6ca0c 162 | 30 31 00 01 03 0009 0000 070000 00ff 00 0dac9f ffffffffffff5555 e5f94b bdf69f 361d40 4afb7c 00 144016 ff 0bf2ff68520d 163 | 30 31 00 01 03 000a 0000 070000 00ff 00 0dac9f ffffffffffff5555 e5f953 bdf69f 361d40 4afb7c 00 144016 ff 0bf2ff7a5c0c 164 | 30 31 00 01 03 000b 0000 070000 00ff 00 0daca1 ffffffffffff5555 e1f913 b5f69f 151d40 59fb7c 9a 11a085 ff 63dfff7a5c0e 165 | 30 31 00 01 03 000c 0000 070000 00ff 00 0daca3 ffffffffffff5555 e1f9d3 b6e91f a2fd3f 8e167d 00 18205d ff 53fffffa1e00 166 | 30 31 00 01 03 000d 0000 070000 00ff 00 0daca5 ffffffffffff5555 e1f953 a0f69f d21c40 54fb7c 9a 110085 ff 5bdfff546c02 167 | 30 31 00 01 03 000e 0000 070000 00ff 00 0daca7 ffffffffffff5555 e5f947 a0f69f d21c40 54fb7c 00 144016 ff 0bf2fff8d004 168 | 30 31 00 01 03 000f 0001 070000 00ff 00 0daca9 ffffffffffff5555 e1f9d3 9ef61f b31c40 9afb7c 9a 110085 ff 7bdfff546c06 169 | 30 31 00 01 03 0010 0001 070000 00ff 00 0dacad ffffffffffff5555 e1f9d3 bfe51f 0cfc3f cf217d 00 188042 ff 4b0400fb1e0a 170 | 30 31 00 01 03 0011 0001 070000 00ff 00 0dacad ffffffffffff5555 e1f953 9df61f 961c40 dcfb7c 9a 11e084 ff 9bdfff546c0a 171 | 30 31 00 01 03 0012 0001 070000 00ff 00 0dacaf ffffffffffff5555 e5f947 9df61f 961c40 dcfb7c 00 144016 ff 0bf2fff8d00c 172 | 30 31 00 01 03 0013 0001 070000 00ff 00 0dacb1 ffffffffffff5555 e1f993 f1ec9f a82340 5c6b7c 00 182072 ff 33b8ffe2100e 173 | 30 31 00 01 03 0014 0001 070000 00ff 00 0dacb1 ffffffffffff5555 e1f913 9cf61f 7a1c40 19fc7c 9a 11e084 ff bbdfff7a5c0e 174 | 30 31 00 01 03 0015 0001 070000 00ff 00 0dacb5 ffffffffffff5555 e1f9d3 9af69f 601c40 53fc7c 9a 11e084 ff d3dfff7a5c02 175 | 30 31 00 01 03 0016 0001 070000 00ff 00 0dacb7 ffffffffffff5555 e5f9c7 9af69f 601c40 53fc7c 00 144016 ff 0bf2ffe6ca04 176 | 30 31 00 01 03 0017 0001 070000 00ff 00 0dacb7 ffffffffffff5555 e5f9cb 9af69f 601c40 53fc7c 00 144016 ff 0bf2ff685205 177 | 30 31 00 01 03 0018 0001 070000 00ff 00 0dacb7 ffffffffffff5555 e5f9d3 9af69f 601c40 53fc7c 00 144016 ff 0bf2ff7a5c04 178 | 30 31 00 01 03 0019 000b 070000 00ff 00 0dacb9 ffffffffffff5555 e1f913 91f69f 2a1c40 53fc7c 9a 11a084 ff d3dfff546c06 179 | 30 31 00 01 03 001a 000b 070000 00ff 00 0dacbd ffffffffffff5555 e1f913 b4fb1f fa1540 4e2f7d 00 1880d6 ff 730a0085460a 180 | 30 31 00 01 03 001b 000b 070000 00ff 00 0dacbd ffffffffffff5555 e1f947 dbfa9f 241840 3e277d 00 244080 ff 1bdfffc0bc0a 181 | 30 31 00 01 03 001c 000b 070000 00ff 00 0dacbd ffffffffffff5555 e1f94b dbfa9f 241840 3e277d 00 244080 ff 1bdfffa4480b 182 | 30 31 00 01 03 001d 000b 070000 00ff 00 0dacbd ffffffffffff5555 e1f953 dbfa9f 241840 3e277d 00 244080 ff 1bdfff84460a 183 | 30 31 00 01 03 001e 000b 070000 00ff 00 0dacbd ffffffffffff5555 e1f993 89f69f fe1b40 5ffc7c 9a 116084 ff dbdfff546c0a 184 | 30 31 00 01 03 001f 000b 070000 00ff 00 0dacbf ffffffffffff5555 e5f987 89f69f fe1b40 5ffc7c 00 144016 ff 0bf2fff8d00c 185 | 30 31 00 01 03 0020 000b 070000 00ff 00 0dacbf ffffffffffff5555 e1f993 cffa1f f21740 66277d 9a 116084 ff 13dfff84460c 186 | 30 31 00 01 03 0021 000b 070000 00ff 00 0dacbf ffffffffffff5555 e5f987 cffa1f f21740 66277d 00 146089 ff 1bc0ffc0bc0c 187 | 30 31 00 01 03 0022 000b 070000 00ff 00 0dacbf ffffffffffff5555 e5f98b cffa1f f21740 66277d 00 146089 ff 1bc0ffa4480d 188 | 30 31 00 01 03 0023 000b 070000 00ff 00 0dacbf ffffffffffff5555 e5f993 cffa1f f21740 66277d 00 146089 ff 1bc0ff84460c 189 | -------------------------------------------------------------------------------- /PayloadTypes/PayloadType - 36,0x03d3/30 - 0104: -------------------------------------------------------------------------------- 1 | Act packet for 30 - 0103 2 | 3 | cl - Segment Class 4 | sz - Segment Size 5 | sb - Segment Sub 6 | at - Segment Action 7 | seq - Segment sequence number 8 | 9 | 10 | [cl][sz] [sb][at][seq ] 11 | 30 07 00 01 04 0035 -------------------------------------------------------------------------------- /Tools/capture2db.js: -------------------------------------------------------------------------------- 1 | //requires root to use pcap 2 | var crypto=require('crypto'); 3 | var mongojs=require('mongojs'); 4 | var Capture=require('../lib/net/Capture'); 5 | var Decoder=require('../lib/net/Decoder'); 6 | var Dissectors=require('../lib/dissectors'); 7 | var config=require('../config.json'); 8 | 9 | var mongojs=require('mongojs'); 10 | 11 | if(process.env.SplatNet_db_url!==undefined) //override the config 12 | config.dburl=process.env.SplatNet_db_url; 13 | 14 | var db=mongojs(config.dburl,['Sessions','Packets']); 15 | 16 | var sessionId=crypto.randomBytes(6).toString('base64'); 17 | if(process.argv.length===3){ //override default sessionId with user provided sessionId 18 | sessionId=process.argv[2]; 19 | } 20 | 21 | 22 | db.Sessions.createIndex({SessionId:1}); 23 | db.Packets.createIndex({SessionId:1}); 24 | db.Packets.createIndex({Timestamp:1}); 25 | 26 | var cap=new Capture(config.TargetMAC); 27 | var decoder=new Decoder(); 28 | Dissectors.AddStuctures(decoder); 29 | 30 | var startTime=Date.now()/1000; 31 | 32 | cap.pipe(decoder); 33 | 34 | var packetCount=0; 35 | var totalData=0; 36 | var startTimestamp; 37 | var endTimestamp; 38 | decoder.on('data',function(data){ 39 | if(data.Frame.IP!==undefined&&data.Frame.IP.UDP!==undefined&&data.Frame.IP.UDP.NinFrame!==undefined){//ignore all packets that don't have have the ninFrame 40 | packetCount++; 41 | totalData+=data.Frame.IP.UDP.Payload.length 42 | if(startTimestamp===undefined) 43 | startTimestamp=data.Timestamp; 44 | endTimestamp=data.Timestamp; 45 | db.Packets.save(data); 46 | } 47 | }); 48 | 49 | process.on('SIGINT',function(){ 50 | var endtime=Date.now()/1000 51 | db.Sessions.save({ 52 | SessionId:sessionId, 53 | StartTime:startTimestamp, 54 | EndTime:endTimestamp, 55 | Duration:endTimestamp-startTimestamp, 56 | PacketCount:packetCount, 57 | TotalData:totalData 58 | },function(){ 59 | console.log("Session: "+sessionId+" Duration: "+(endtime-startTime)); 60 | process.exit(); 61 | }); 62 | }); 63 | cap.Start(sessionId); -------------------------------------------------------------------------------- /Tools/deletesession.js: -------------------------------------------------------------------------------- 1 | var mongojs=require('mongojs'); 2 | var config=require('../config.json'); 3 | 4 | 5 | var mongojs=require('mongojs'); 6 | var config=require('../config.json'); 7 | 8 | var db=mongojs(config.dburl,['Sessions','Packets']); 9 | 10 | if(process.argv.length!==3){ 11 | console.log('sessionId required'); 12 | process.exit(1); 13 | } 14 | 15 | var sessionId=process.argv[2]; 16 | db.Sessions.remove({SessionId:sessionId},function(){ 17 | db.Packets.remove({SessionId:sessionId},function(){ 18 | db.close(); 19 | }); 20 | }); -------------------------------------------------------------------------------- /Tools/reprocess.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | var util=require('util'); 3 | var stream=require('stream'); 4 | var mongojs=require('mongojs'); 5 | 6 | var Decoder=require('../lib/net/Decoder'); 7 | var Dissectors=require('../lib/dissectors'); 8 | var config=require('../config.json'); 9 | 10 | 11 | if(process.env.SplatNet_db_url!==undefined) //override the config 12 | config.dburl=process.env.SplatNet_db_url; 13 | 14 | var db=mongojs(config.dburl,['Packets']); 15 | 16 | var decoder=new Decoder(); 17 | Dissectors.AddStuctures(decoder); 18 | 19 | var query={}; 20 | if(process.argv.length===3){ //apply update to one sessionId 21 | query.SessionId=process.argv[2]; 22 | } 23 | var reprocessed=0; 24 | var cursor=db.Packets.find(query); 25 | var bf=new stream.Transform({objectMode:true}); 26 | bf._transform=function Transform(chunk,encoding,next){//fix the bson binary 27 | if(chunk.Frame.IP) 28 | delete chunk.Frame.IP; 29 | chunk.Frame.Payload=chunk.Frame.Payload.buffer 30 | next(null,chunk); 31 | }; 32 | cursor.pipe(bf); 33 | bf.pipe(decoder); 34 | 35 | decoder.on('data',function(packet){ 36 | reprocessed++; 37 | db.Packets.save(packet); 38 | }); 39 | 40 | cursor.on('end',function(){ 41 | console.log("Reprocessed: "+reprocessed+' Packet(s)'); 42 | process.exit(); 43 | }); 44 | 45 | -------------------------------------------------------------------------------- /Tools/sessions.js: -------------------------------------------------------------------------------- 1 | var mongojs=require('mongojs'); 2 | var config=require('../config.json'); 3 | 4 | 5 | var mongojs=require('mongojs'); 6 | var config=require('../config.json'); 7 | 8 | var db=mongojs(config.dburl,['Sessions','Packets']); 9 | 10 | 11 | var cur=db.Sessions.find({}).sort({SessionId:1}); 12 | var sessions=[]; 13 | cur.on('data',function(s){ 14 | sessions.push(s); 15 | }); 16 | 17 | cur.on('end',function(){ 18 | var max=0; 19 | for(var i=0;iupperLimit) 42 | upperLimit=packet.Timestamp; 43 | size+=packet.Length; 44 | packet.SessionId=newSessionId; 45 | db.Packets.save(packet); 46 | count++; 47 | }); 48 | cur.on('end',function(){ 49 | if(count>0){ 50 | console.log('Session: '+newSessionId+' Duration: '+(upperLimit-lowerLimit)); 51 | db.Sessions.save({ 52 | SessionId:newSessionId, 53 | StartTime:lowerLimit, 54 | EndTime:upperLimit, 55 | Duration:upperLimit-lowerLimit, 56 | PacketCount:count, 57 | TotalData:size 58 | },function(){ 59 | db.close(); 60 | }); 61 | }else{ 62 | console.log("No new Session created can't find packets within timeframe"); 63 | db.close(); 64 | } 65 | }); 66 | }); -------------------------------------------------------------------------------- /binlook-handshake.js: -------------------------------------------------------------------------------- 1 | var mongojs=require('mongojs'); 2 | var config=require('./config.json'); 3 | var db=mongojs(config.dburl,['Packets']); 4 | var offset=0; 5 | var limit=2000; 6 | var minlength=0; 7 | var maxlength=500; 8 | 9 | var val=0; 10 | //if(process.argv.length===3) 11 | // val=new Number(process.argv[2]) 12 | var match=new Buffer([0x03,val]); 13 | var set={}; 14 | var lastBuff=new Buffer([]); 15 | var maxlog; 16 | var cursor=db.Packets.find({"Frame.IP.UDP.NinFrame.PayloadType":1,SessionId:process.argv[2],Direction:process.argv[3]}).sort({Timestamp:1}); 17 | 18 | cursor.on('data',function(doc){ 19 | // if(process.argv.length===3) 20 | viewpacket(doc); 21 | // else 22 | // uniq(doc); 23 | }); 24 | cursor.on('end',function(){ 25 | db.close(); 26 | }); 27 | 28 | function uniq(packet){ 29 | var subtype=packet.Frame.IP.UDP.NinMainAuth.Payload.buffer.slice(1,2).toString('hex'); 30 | if(subtype in set){ 31 | set[subtype]++; 32 | }else{ 33 | set[subtype]=0; 34 | } 35 | } 36 | var count=0; 37 | function viewpacket(packet){ 38 | var el=packet.Frame.IP.UDP.NinFrame.Payload.buffer; 39 | var NinFrame=packet.Frame.IP.UDP.NinFrame; 40 | 41 | if(el.compare(lastBuff)!==0) 42 | lastBuff=el; 43 | else return; 44 | var buf=el;//.slice(18,18+6); 45 | var ret=[]; 46 | for(var i=0;imaxlog) 66 | cursor.destroy(); 67 | } -------------------------------------------------------------------------------- /binlook-t.js: -------------------------------------------------------------------------------- 1 | var mongojs=require('mongojs'); 2 | var config=require('./config.json'); 3 | var db=mongojs(config.dburl,['Packets']); 4 | var offset=0; 5 | var limit=2000; 6 | var minlength=0; 7 | var maxlength=500; 8 | 9 | var val=0; 10 | //if(process.argv.length===3) 11 | // val=new Number(process.argv[2]) 12 | var match=new Buffer([0x03,val]); 13 | var set={}; 14 | var lastBuff=new Buffer([]); 15 | var maxlog; //"Frame.IP.UDP.NinFrame.PayloadType":1, 16 | var cursor=db.Packets.find({"Frame.IP.UDP.NinFrame.Event.Type":"Player",SessionId:process.argv[2],Direction:process.argv[3]}).sort({Timestamp:1}); 17 | var seen={}; 18 | cursor.on('data',function(doc){ 19 | // if(process.argv.length===3) 20 | viewpacket(doc); 21 | // else 22 | // uniq(doc); 23 | }); 24 | cursor.on('end',function(){ 25 | console.log(seen); 26 | db.close(); 27 | }); 28 | 29 | function uniq(packet){ 30 | var subtype=packet.Frame.IP.UDP.NinMainAuth.Payload.buffer.slice(1,2).toString('hex'); 31 | if(subtype in set){ 32 | set[subtype]++; 33 | }else{ 34 | set[subtype]=0; 35 | } 36 | } 37 | var count=0; 38 | 39 | function viewpacket(packet){ 40 | var el=packet.Frame.IP.UDP.NinFrame.Event.Payload.buffer; 41 | if(el.compare(lastBuff)!==0) 42 | lastBuff=el; 43 | else return; 44 | var buf=el;//.slice(18,18+6); 45 | var ret=[]; 46 | 47 | //ret=ret.join(''); 48 | ret=buf.toString('hex'); 49 | var address=packet.Frame.IP.DestinationAddress; 50 | while(address.length<15) 51 | address+=' '; 52 | var type=ret.substr(0,4); 53 | if(type==='1058') 54 | console.log(ret.substr(16)); 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /binlook.js: -------------------------------------------------------------------------------- 1 | var Pack=require('./lib/Pack'); 2 | var mongojs=require('mongojs'); 3 | var config=require('./config.json'); 4 | var db=mongojs(config.dburl,['Packets']); 5 | var pack=new Pack(); 6 | var offset=0; 7 | var limit=2000; 8 | var minlength=0; 9 | var maxlength=500; 10 | 11 | var val=0; 12 | //if(process.argv.length===3) 13 | // val=new Number(process.argv[2]) 14 | var match=new Buffer([0x03,val]); 15 | var set={}; 16 | var lastBuff=new Buffer([]); 17 | var maxlog; 18 | 19 | var cursor=db.Packets.find( 20 | {"Frame.IP.UDP.NinFrame.Event.Type":'Player',SessionId:process.argv[2],Direction:process.argv[3]}, 21 | // {"Frame.IP.UDP.NinFrame.Event.Type":{$exists:true},SessionId:process.argv[2],Direction:process.argv[3]}, 22 | {'Timestamp':1,SessionId:1,Direction:1,Frame:1}).sort({Timestamp:1}); 23 | /*var query=[ 24 | { 25 | $match:{ 26 | "Frame.IP.UDP.NinFrame.Event.Type":'Player', 27 | SessionId:process.argv[2], 28 | Direction:process.argv[3] 29 | } 30 | },{ 31 | $sort:{Timestamp:1} 32 | } 33 | ]; 34 | console.log(query); 35 | var cursor=db.Packets.aggregate(query, 36 | {allowDiskUse:true, 37 | cursor:{batchSize:150} 38 | } 39 | );*/ 40 | 41 | cursor.on('data',function(doc){ 42 | var el=doc.Frame.IP.UDP.NinFrame.Event.Payload.buffer; 43 | if(el.compare(lastBuff)!==0) 44 | lastBuff=el; 45 | else return; 46 | 47 | if(process.argv.length>=6){ 48 | viewpacket(doc); 49 | //pairs(doc,process.argv[4]); 50 | }else{ 51 | uniq(doc); 52 | } 53 | }); 54 | cursor.on('end',function(){ 55 | if(process.argv.length<6) 56 | console.log(set); 57 | db.close(); 58 | }); 59 | 60 | function uniq(packet){ 61 | var el=packet.Frame.IP.UDP.NinFrame.Event.Payload.buffer; 62 | 63 | var blocks=breakBlock(el); 64 | //var subtype=packet.Frame.IP.UDP.NinFrame.Event.Type//Payload.buffer.slice(0,2).toString('hex'); 65 | for(var i=0;i=8){ 91 | var off=parseInt(process.argv[6]); 92 | var size=parseInt(process.argv[7]); 93 | var p=blocks[i].slice(off,off+size); 94 | if(process.argv.length==9){ 95 | var actions=process.argv[8].split(''); 96 | for(var a=0;amaxlog) 145 | cursor.destroy(); 146 | } 147 | 148 | function test(p){ 149 | var t=new Buffer(10); 150 | var int=new Buffer(4); 151 | 152 | for(var i=p.length-1,k=0;i>=0;i--,k++) 153 | t[k]=p[i]; 154 | pack.Set(t); 155 | pack.Copy(3,int); 156 | var z=int.readUInt32BE(0); 157 | pack.Shift(1); 158 | pack.Copy(3,int); 159 | var y=int.readUInt32BE(0); 160 | pack.Shift(1); 161 | pack.Copy(3,int); 162 | var x=int.readUInt32BE(0); 163 | console.log('('+x+','+y+','+z+')'); 164 | } 165 | 166 | function toBin(p){ 167 | var o=[]; 168 | var f='00000000'; 169 | for(var i=0;i=0;i--,k--) 180 | t[k]=p[i]; 181 | return t.readUInt32BE(0); 182 | } 183 | function readInt(b){ 184 | var t=new Buffer([0,0,0,0]); 185 | for(var i=0;i>shift; 189 | } 190 | 191 | 192 | function rotR(p){ 193 | var t=new Buffer(p.length); 194 | var remander=p[p.length-1]&0x01; 195 | for(var i=0;i>1)|(0x80*remander); 197 | remander=p[i]&0x01; 198 | } 199 | return t; 200 | } 201 | function rotL(p){ 202 | var t=new Buffer(p.length); 203 | var remander=p[0]&0x80; 204 | for(var i=p.length-1;i>=0;i--){ 205 | t[i]=(p[i]<<1)|(remander>>7); 206 | remander=p[i]&0x80; 207 | } 208 | return t; 209 | } 210 | function switchEndian(p){ 211 | var t=new Buffer(p.length); 212 | for(var k=p.length-1,j=0;k>=0;k--,j++) 213 | t[j]=p[k]; 214 | return t; 215 | }; 216 | 217 | function breakBlock(buf){ 218 | var off=0; 219 | var blocks=[]; 220 | while((off+1)=size) 24 | throw new Error('Pack.Copy: read past end of buffer'); 25 | var fromByte=Math.floor(position/8); 26 | var fromBit=position%8; 27 | var top=fromBit; 28 | var bottom=8-fromBit; 29 | 30 | for(k=0,i=fromByte;k>bottom; 32 | } 33 | 34 | position+=bytes*8; 35 | } 36 | } 37 | 38 | module.exports=Pack -------------------------------------------------------------------------------- /lib/Ping.js: -------------------------------------------------------------------------------- 1 | var exec=require('child_process').exec; 2 | 3 | function Ping(address,cb){ 4 | var times=[]; 5 | //add check for IPv6 6 | if(!(address.match(/^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$/)!==null||address==='localhost')) 7 | return cb(2); 8 | 9 | var proc=exec('ping -c 5 '+address); 10 | proc.stdout.on('data',function(data){ 11 | var match=data.match(/time=(\d+\.\d+)/g); 12 | if(match.length==1) 13 | times.push(parseFloat(match[0].substr(5))); 14 | }); 15 | proc.on('exit',function(exit){ 16 | var avg; 17 | if(times.length&&exit===0) 18 | avg=times.reduce(function(prev,cur,idx){return prev+cur})/times.length; 19 | cb(exit,Math.floor(avg*100)/100); 20 | }); 21 | } 22 | 23 | module.exports=Ping; -------------------------------------------------------------------------------- /lib/dissectors/200a.js: -------------------------------------------------------------------------------- 1 | //200a00000505000fca49 2 | module.exports={ 3 | Name:'200a', 4 | Depends:"Event", 5 | Condition:function(proto,payload){ 6 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x200a; 7 | }, 8 | Format:function(proto,payload){ 9 | return{ 10 | Payload:payload.slice(0,10) 11 | }; 12 | }, 13 | Size:function(proto,payload){ 14 | return 10; 15 | } 16 | }; -------------------------------------------------------------------------------- /lib/dissectors/200f.js: -------------------------------------------------------------------------------- 1 | //200f00000301000000ff000f8a5805 2 | module.exports={ 3 | Name:'200f', 4 | Depends:"Event", 5 | Condition:function(proto,payload){ 6 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x200f; 7 | }, 8 | Format:function(proto,payload){ 9 | return{ 10 | Payload:payload.slice(0,15) 11 | }; 12 | }, 13 | Size:function(proto,payload){ 14 | return 15; 15 | } 16 | }; -------------------------------------------------------------------------------- /lib/dissectors/201a.js: -------------------------------------------------------------------------------- 1 | //201a00000302000000ff000feb8000000000000c000800000000 2 | module.exports={ 3 | Name:'201a', 4 | Depends:"Event", 5 | Condition:function(proto,payload){ 6 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x201a; 7 | }, 8 | Format:function(proto,payload){ 9 | return{ 10 | Payload:payload.slice(0,26) 11 | }; 12 | }, 13 | Size:function(proto,payload){ 14 | return 26; 15 | } 16 | }; -------------------------------------------------------------------------------- /lib/dissectors/302a.js: -------------------------------------------------------------------------------- 1 | //302a0000030000000007000000ff000f8e1affffffffffff555500000000000f937400000000567b02b9 2 | module.exports={ 3 | Name:'302a', 4 | Depends:"Event", 5 | Condition:function(proto,payload){ 6 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x302a; 7 | }, 8 | Format:function(proto,payload){ 9 | return{ 10 | Payload:payload.slice(0,42) 11 | }; 12 | }, 13 | Size:function(proto,payload){ 14 | return 42; 15 | } 16 | }; -------------------------------------------------------------------------------- /lib/dissectors/302d.js: -------------------------------------------------------------------------------- 1 | //302d000203032f032f01000000bd000fd8f6ffffffffffff55551ead01314b004219fcab4c61b806b3f037ca02 2 | module.exports={ 3 | Name:'302d', 4 | Depends:"Event", 5 | Condition:function(proto,payload){ 6 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x302d; 7 | }, 8 | Format:function(proto,payload){ 9 | return{ 10 | Payload:payload.slice(0,45) 11 | }; 12 | }, 13 | Size:function(proto,payload){ 14 | return 45; 15 | } 16 | }; -------------------------------------------------------------------------------- /lib/dissectors/3032.js: -------------------------------------------------------------------------------- 1 | //30320004030011001106000000bf000fd7f5ffffffffffff55553ea5add70673000000d10002be95a3bdb3527bf9be17b2cf 2 | //302d0002030067006606000000bf000fd7f7ffffffffffff555594f102393f021a2e0174c35f83fe64f477bc02 3 | //302d0002030067006606000000bf000fd7f7ffffffffffff555594f102393f021a2e0174c35f83fe64f477bc02 4 | //3032000403000b000b01000000bd000fa2b2ffffffffffff55553e8f5c290203000601f50003be77cbf200000000bea3075f 5 | //30310001030a190a1901000000bd000fa2b2ffffffffffff555541f8530b3320002c4009767d00380083ffdbdefffe000e 6 | //302d00020300f400f401000000bd000fa2b4ffffffffffff5555e05202a9ad0112e7efa358de29fedc9337ca1a30310001030a1a0a1901000000bd000fa2b6ffffffffffff555541f893af4020002c4039cd7d0038c082ffa3defffe0002 7 | module.exports={ 8 | Name:'3032', 9 | Depends:"Event", 10 | Condition:function(proto,payload){ 11 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x3032; 12 | }, 13 | Format:function(proto,payload){ 14 | return{ 15 | Payload:payload.slice(0,50) 16 | }; 17 | }, 18 | Size:function(proto,payload){ 19 | return 50; 20 | } 21 | }; -------------------------------------------------------------------------------- /lib/dissectors/303a.js: -------------------------------------------------------------------------------- 1 | module.exports={ 2 | Name:'303a', 3 | Depends:"Event", 4 | Condition:function(proto,payload){ 5 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x303a; 6 | }, 7 | Format:function(proto,payload){ 8 | return{ 9 | Payload:payload.slice(0,58) 10 | }; 11 | }, 12 | Size:function(proto,payload){ 13 | return 58; 14 | } 15 | }; -------------------------------------------------------------------------------- /lib/dissectors/3062.js: -------------------------------------------------------------------------------- 1 | //30620003030021002107000000ff000f8aa7ffffffffffff1a61000000010004000000000006005a00006e1ffd797f38ca4800000000000000003ef4f4f53f1595963db0b0b13edcdcdd3ce0e0e13f0a8a8b3f8ccccd3f19999a3dcccccd00000000 2 | module.exports={ 3 | Name:'3062', 4 | Depends:"Event", 5 | Condition:function(proto,payload){ 6 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt16BE(0)===0x3062; 7 | }, 8 | Format:function(proto,payload){ 9 | return{ 10 | Payload:payload.slice(0,98) 11 | }; 12 | }, 13 | Size:function(proto,payload){ 14 | return 98; 15 | } 16 | }; -------------------------------------------------------------------------------- /lib/dissectors/CommandControl.js: -------------------------------------------------------------------------------- 1 | module.exports={ 2 | Name:'CommandControl', 3 | Depends:"NinFrame", 4 | Condition:function(proto,payload){ 5 | return proto.Frame.IP.UDP.NinFrame.PayloadType===2; 6 | }, 7 | Format:function(proto,payload){ 8 | return { 9 | Payload:payload 10 | }; 11 | }, 12 | Size:function(proto,payload){return proto.Frame.IP.UDP.NinFrame.Length} 13 | }; -------------------------------------------------------------------------------- /lib/dissectors/Dummy.js: -------------------------------------------------------------------------------- 1 | module.exports={ 2 | Name:'Dummy', 3 | Depends:"NinFrame", 4 | Condition:function(proto,payload){ 5 | return proto.Frame.IP.UDP.NinFrame.PayloadType===0; 6 | }, 7 | Format:function(proto,payload){ //used to be an actual packet that had Dummy as the payload 8 | return {Text:'Dummy'}; 9 | }, 10 | Size:function(proto,payload){return proto.Frame.IP.UDP.NinFrame.Length} 11 | }; -------------------------------------------------------------------------------- /lib/dissectors/Event.js: -------------------------------------------------------------------------------- 1 | var zlib=require('zlib'); 2 | 3 | module.exports={ 4 | Name:'Event', 5 | Depends:"NinFrame", 6 | Condition:function(proto,payload){ 7 | return proto.Frame.IP.UDP.NinFrame.PayloadType===36; 8 | }, 9 | Format:function(proto,payload){ 10 | var sub=payload.readUInt8(1); 11 | var ret={ 12 | Type:sub, 13 | Frame:payload.readUInt16BE(2), 14 | } 15 | 16 | switch(sub){ 17 | case 0x11: 18 | ret.Meta=payload.slice(4,12); 19 | ret.Payload=payload.slice(12,16); 20 | break; 21 | case 0x21: 22 | ret.Meta=payload.slice(4,12); 23 | ret.Payload=payload.slice(12,24); 24 | break; 25 | case 0x31: 26 | case 0x32: 27 | case 0x33: 28 | ret.Meta=payload.slice(4,8); 29 | break; 30 | case 0x41: 31 | ret.Meta=payload.slice(4,12); 32 | break; 33 | case 0x81: 34 | case 0x82: 35 | case 0x83: 36 | case 0x84: 37 | ret.Meta=payload.slice(4,12); 38 | ret.Payload=payload.slice(12,16); 39 | break; 40 | case 0x91: 41 | ret.Meta=payload.slice(4,12); 42 | ret.Payload=payload.slice(12,20); 43 | break; 44 | case 0xa1: 45 | case 0xa2: 46 | ret.Meta=payload.slice(4,12); 47 | ret.Payload=payload.slice(12,24); 48 | break; 49 | case 0xd3: 50 | ret.Type='Player'; 51 | ret.Meta=payload.slice(4,12); 52 | ret.Payload=zlib.inflateSync(payload.slice(12,payload.length)); //offset 0x01 53 | break; 54 | case 0xc1: 55 | ret.Meta=payload.slice(4,12); 56 | ret.Payload=payload.slice(12,28); 57 | break; 58 | 59 | } 60 | return ret; 61 | }, 62 | Size:function(proto,payload){return proto.Frame.IP.UDP.NinFrame.Length} 63 | }; -------------------------------------------------------------------------------- /lib/dissectors/Gear.js: -------------------------------------------------------------------------------- 1 | var abilitiesList=[ 2 | 'Damage Up', 3 | 'Defense Up', 4 | 'Ink Saver (Main)', 5 | 'Ink Saver (Sub)', 6 | 'Ink Recovery Up', 7 | '0x0005', 8 | 'Swim Speed Up', 9 | 'Special Charge Up', 10 | '0x0008', 11 | 'Quick Respawn', 12 | 'Special Saver', 13 | '0x000b', 14 | 'Bomb Range Up' 15 | ]; 16 | 17 | function abilitiesMap(p,off){ 18 | var val=p.readUInt16BE(off); 19 | var name=abilitiesList[val]; 20 | if(name===undefined){ 21 | name=val.toString(16); 22 | for(var i=0;i<4;i++) 23 | name='0'+name; 24 | name='0x'+name; 25 | } 26 | return name; 27 | } 28 | 29 | function modelMap(p,off){ 30 | var val=p.readUInt8(off); 31 | if(val===0) 32 | return 'Inkling (female)'; 33 | if(val===1) 34 | return 'Inkling (male)'; 35 | return 'Unknown'; 36 | } 37 | module.exports={ 38 | Name:'Gear', 39 | Depends:"Event", 40 | Condition:function(proto,payload){ 41 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt8(0)===0x10&&payload.readUInt16BE(3)===0x0100; 42 | }, 43 | Format:function(proto,payload){ 44 | payload=payload.slice(8); 45 | return{ 46 | Model:modelMap(payload,8), 47 | SkinColor:payload.readUInt8(9), 48 | EyesColor:payload.readUInt8(10), 49 | Level:payload.readUInt8(62)+1, 50 | Weapon:{ 51 | Id:payload.readUInt16BE(12), 52 | u1:payload.readUInt16BE(14), 53 | u2:payload.readUInt16BE(16), 54 | u3:payload.readUInt16BE(18), 55 | Inked:payload.readUInt32BE(20), 56 | }, 57 | Shoes:{ 58 | Id:payload.readUInt16BE(24), 59 | SlotsActive:payload.readUInt16BE(32), 60 | SlotsUnlocked:payload.readUInt16BE(34), 61 | Sub:[ 62 | abilitiesMap(payload,26), 63 | abilitiesMap(payload,28), 64 | abilitiesMap(payload,30) 65 | ], 66 | }, 67 | Clothes:{ 68 | Id:payload.readUInt16BE(36), 69 | SlotsActive:payload.readUInt16BE(44), 70 | SlotsUnlocked:payload.readUInt16BE(46), 71 | Sub:[ 72 | abilitiesMap(payload,38), 73 | abilitiesMap(payload,40), 74 | abilitiesMap(payload,42) 75 | ], 76 | }, 77 | Head:{ 78 | Id:payload.readUInt16BE(48), 79 | SlotsActive:payload.readUInt16BE(56), 80 | SlotsUnlocked:payload.readUInt16BE(58), 81 | Sub:[ 82 | abilitiesMap(payload,50), 83 | abilitiesMap(payload,52), 84 | abilitiesMap(payload,54) 85 | ], 86 | }, 87 | Payload:payload.slice(0,88)//used in this case to fingerprint this event payload 88 | }; 89 | }, 90 | Size:function(proto,payload){return 88;} 91 | }; -------------------------------------------------------------------------------- /lib/dissectors/Handshake.js: -------------------------------------------------------------------------------- 1 | module.exports={ 2 | Name:'Handshake', 3 | Depends:"NinFrame", 4 | Condition:function(proto,payload){ 5 | return proto.Frame.IP.UDP.NinFrame.PayloadType===1; 6 | }, 7 | Format:function(proto,payload){ 8 | var sub=payload.readUInt8(0); 9 | var seq; 10 | var ret={}; 11 | if(payload.length>5) 12 | seq=payload.readUInt32BE(payload.length-4); 13 | 14 | switch(sub){ 15 | case 1: 16 | ret.Type="Hello"; 17 | ret.Payload=payload.slice(1,payload.length-4); 18 | ret.SeqId=seq; 19 | break; 20 | case 2: 21 | ret.Type="Name"; 22 | var name=new Buffer(31); 23 | var nameLength=payload[68]; 24 | payload.slice(37,37+31).copy(name); 25 | name=name.toString('ucs2'); 26 | ret.Name=name.substr(0,nameLength); 27 | ret.Payload=payload.slice(1,payload.length-4); 28 | ret.SeqId=seq; 29 | break; 30 | case 3: 31 | ret.Type='Disconnect'; 32 | break; 33 | case 4: 34 | ret.Type='Disconnect ACK'; 35 | break; 36 | case 5: 37 | ret.Type='ACK'; 38 | ret.SeqId=seq; 39 | break; 40 | default: 41 | } 42 | return ret; 43 | }, 44 | Size:function(proto,payload){return proto.Frame.IP.UDP.NinFrame.Length} 45 | }; -------------------------------------------------------------------------------- /lib/dissectors/Movement.js: -------------------------------------------------------------------------------- 1 | var readInt24LE=require('../util').readInt24LE; 2 | 3 | module.exports={ 4 | Name:'Movement', 5 | Depends:"Event", 6 | Condition:function(proto,payload){ 7 | return proto.Frame.IP.UDP.NinFrame.Event.Type==='Player'&&payload.readUInt8(0)===0x10&&payload.readUInt16BE(3)===0x0000; 8 | }, 9 | Format:function(proto,payload){ 10 | var buttons=payload.readUInt8(52); 11 | 12 | return{ 13 | Position:{ 14 | X:readInt24LE(payload,8), 15 | Y:readInt24LE(payload,11), 16 | Z:readInt24LE(payload,14) 17 | }, 18 | Rotation:readInt24LE(payload,36), 19 | Gyro:{ 20 | X:readInt24LE(payload,39), 21 | Y:readInt24LE(payload,42), 22 | Z:readInt24LE(payload,45) 23 | }, 24 | Actions:{ 25 | Jump:buttons&0x10?true:false, 26 | Squid:buttons&0x20?true:false, 27 | Firing:buttons&0x40?true:false, 28 | Alt:buttons&0x80?true:false 29 | }, 30 | Ink:payload.readUInt16LE(50), 31 | Payload:payload.slice(8) 32 | }; 33 | }, 34 | Size:function(proto,payload){return 60;} 35 | }; 36 | -------------------------------------------------------------------------------- /lib/dissectors/NinFrame.js: -------------------------------------------------------------------------------- 1 | module.exports={ 2 | Name:"NinFrame", 3 | Depends:"UDP", 4 | Condition:function(proto,payload){ 5 | var p=payload; 6 | return proto.Frame.IP.UDP.Length>=48&&(p[0]==0x32&&p[1]==0xAB&&p[2]==0x98); 7 | }, 8 | Format:function(proto,payload){ 9 | var ret={ 10 | Magic:payload.slice(0,4), 11 | Sub:payload.readUInt8(4), 12 | ID:payload.readUInt8(5), 13 | Counter:payload.readUInt16BE(6), 14 | Timeing:{ 15 | Local:payload.readUInt16BE(8), 16 | Remote:payload.readUInt16BE(10), 17 | Delta:payload.readUInt16BE(10)-payload.readUInt16BE(8) 18 | }, 19 | 'Flags':payload.slice(12,13), 20 | 'Slot':payload.readUInt8(13), 21 | Length:payload.readUInt16BE(14), 22 | Padding:payload.length-(payload.readUInt16BE(14)+44), 23 | Unknown1:payload.slice(16,20), 24 | NNID:payload.readUInt32BE(20), 25 | PayloadType:payload.readUInt8(24), 26 | Unknown2:payload.slice(25,31), 27 | HMAC:payload.slice(payload.length-12), //used to be 16byte hmac 28 | Payload:payload.slice(32,32+payload.readUInt16BE(14)) 29 | }; 30 | if(ret.ID===0) 31 | ret.Timeing.Delta=null; 32 | return ret; 33 | }, 34 | Size:function(proto,payload){return payload.length} //Consumes the total payload from UDP 35 | }; -------------------------------------------------------------------------------- /lib/dissectors/Ping.js: -------------------------------------------------------------------------------- 1 | module.exports={ 2 | Name:'Ping', 3 | Depends:"NinFrame", 4 | Condition:function(proto,payload){ 5 | return proto.Frame.IP.UDP.NinFrame.PayloadType===6; 6 | }, 7 | Format:function(proto,payload){ 8 | return{ 9 | ACK:payload.readUInt32BE(0), 10 | Seq:payload.slice(payload.length-5,payload.length) 11 | }; 12 | }, 13 | Size:function(proto,payload){return proto.Frame.IP.UDP.NinFrame.Length} 14 | }; -------------------------------------------------------------------------------- /lib/dissectors/index.js: -------------------------------------------------------------------------------- 1 | var mods=['NinFrame','Ping','Dummy','Handshake', 2 | 'CommandControl','Event','Movement', 3 | 'Gear','200a','200f','201a','303a','302a','302d'].map(function(name){ 4 | return require('./'+name); 5 | }); 6 | 7 | mods.AddStuctures=function(decoder){//avoid having this duplicated 8 | for(var i=0;i=0){ 77 | path.push(keys[i]); 78 | walk(proto,path); 79 | path.pop(); 80 | break; 81 | } 82 | }*/ 83 | } 84 | } 85 | } 86 | 87 | this.AddStucture=function AddStucture(c){ 88 | var name=c.Name; 89 | var depends=c.Depends; 90 | stuctures[name]={ 91 | Condition:wrapFunction(c.Condition), 92 | Format:wrapFunction(c.Format), 93 | Size:wrapFunction(c.Size) 94 | }; 95 | 96 | if(!(c.Depends in dependencies)){ 97 | dependencies[depends]=[]; 98 | } 99 | dependencies[c.Depends].push(name); 100 | }; 101 | this.RemoveStucture=function RemoveSturcture(name){ 102 | delete stuctures[name]; 103 | var keys=Object.keys(dependencies); 104 | for(var i=0,l=keys.length;i=0){ 107 | dependencies[keys[i]].splice(off,1); 108 | } 109 | } 110 | }; 111 | this.Decode=function Decode(proto){//rewalk the protocol structure and decode any missed payloads 112 | proto.ROOT=proto; 113 | proto.SUPER=proto; 114 | 115 | Object.defineProperty(proto,'ROOT',{ 116 | enumerable:false, 117 | configurable:false 118 | }); 119 | Object.defineProperty(proto,'SUPER',{ 120 | enumerable:false, 121 | configurable:false 122 | }); 123 | 124 | walk(proto,['Frame']); 125 | }; 126 | 127 | for(var i=0;i0) 55 | query(false); 56 | }.bind(this)); 57 | cursor.on('error',function(err){ 58 | 59 | }) 60 | }.bind(this); 61 | 62 | this.Start=function Start(sess){ 63 | db.Sessions.findOne({SessionId:sess},function(err,session){ 64 | timer=session.StartTime*1000; 65 | //{'Timestmap':1,SessionId:1,Direction:1,Frame:1}).sort({Timestamp:1}); 66 | SessionId=sess; 67 | count=session.PacketCount; 68 | 69 | query(false); 70 | lastTick=Date.now(); 71 | interval=setInterval(tick,5); 72 | 73 | }.bind(this)); 74 | }; 75 | 76 | 77 | 78 | 79 | this._read=function(size){ 80 | read=true; 81 | } 82 | 83 | var tick=function(){ 84 | var now=Date.now(); 85 | timer+=now-lastTick; 86 | lastTick=now; 87 | 88 | while(read&&(!buffer.isEmpty())&&(buffer.peek().Timestamp*1000)<=timer){ 89 | if(debug) 90 | process.stdout.write('+'); 91 | var packet=buffer.deq(); 92 | fixMongo(packet); 93 | if(!this.push(packet)){ 94 | if(debug) 95 | process.stdout.write('#'); 96 | read=false; 97 | break; 98 | } 99 | } 100 | 101 | if(buffer.isEmpty()){ 102 | if(debug) 103 | process.stdout.write('.'); 104 | if(count<=0){ 105 | clearInterval(interval); 106 | return this.push(null); 107 | } 108 | 109 | } 110 | if(fetching===false&&!buffer.isFull()){ 111 | fetching=true; 112 | // cursor.next(next); 113 | cursor.resume(); 114 | } 115 | 116 | }.bind(this); 117 | 118 | Object.defineProperty(this,'_read',{ 119 | configurable:false, 120 | enumerable:false, 121 | }); 122 | 123 | 124 | } 125 | util.inherits(Playback,stream.Readable); 126 | module.exports=Playback; -------------------------------------------------------------------------------- /lib/net/builtin.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | module.exports=[ 3 | { 4 | Name:"IP", 5 | Depends:"Frame", 6 | Condition:function(proto,payload){return proto.Frame.EtherType===2048;}, 7 | Format:function(proto,payload){ 8 | function IPProto(buffer,offset){ 9 | var proto=buffer.readUInt8(offset); 10 | switch(proto){ 11 | case 1:return'ICMP'; 12 | case 2:return'IGMP'; 13 | case 3:return'GGP'; 14 | case 4:return'IPinIP'; 15 | case 6:return'TCP'; 16 | case 7:return'EGP'; 17 | case 17:return'UDP'; 18 | } 19 | } 20 | function IPAddress(payload,offset){ 21 | var address=[payload.readUInt8(offset), 22 | payload.readUInt8(offset+1), 23 | payload.readUInt8(offset+2), 24 | payload.readUInt8(offset+3)]; 25 | return address.join('.'); 26 | } 27 | var length=payload.readUInt16BE(2); 28 | var headerSize=20; 29 | var IHL=payload.readUInt8(0)&0x0F; 30 | if(IHL>5) 31 | headerSize+=4 32 | return{ 33 | IHL:IHL, 34 | Length:length-headerSize, 35 | Protocol:IPProto(payload,9), 36 | SourceAddress:IPAddress(payload,12), 37 | DestinationAddress:IPAddress(payload,16), 38 | Payload:payload.slice(headerSize) 39 | } 40 | }, 41 | Size:function(proto,payload){ 42 | return payload.length; 43 | } 44 | }, 45 | { 46 | Name:"TCP", 47 | Depends:"IP", 48 | Condition:function(proto,payload){return proto.Frame.IP.Protocol==='TCP';}, 49 | Format:function(proto,payload){ 50 | var offset=(payload.readUInt8(12)>>4)&0x0F; 51 | return{ 52 | SourcePort:payload.readUInt16BE(0), 53 | DestinationPort:payload.readUInt16BE(2), 54 | SequenceNumber:payload.readUInt32BE(4), 55 | Acknowledgment:payload.readUInt32BE(8), 56 | DataOffset:offset, 57 | WindowSize:payload.readUInt16BE(14), 58 | Length:payload.length-offset*4, 59 | Payload:payload.slice(offset*4) 60 | } 61 | }, 62 | 63 | Size:function(proto,payload){ 64 | return payload.length; 65 | } 66 | }, 67 | { 68 | Name:"UDP", 69 | Depends:"IP", 70 | Condition:function(proto,payload){return proto.Frame.IP.Protocol==='UDP';}, 71 | Format:function(proto,payload){ 72 | var length=payload.readUInt16BE(4); 73 | return { 74 | SourcePort:payload.readUInt16BE(0), 75 | DestinationPort:payload.readUInt16BE(2), 76 | Length:length-8, 77 | Payload:payload.slice(8) 78 | }; 79 | }, 80 | Size:function(proto,payload){return payload.length} 81 | } 82 | ]; -------------------------------------------------------------------------------- /lib/peer/Handshake.js: -------------------------------------------------------------------------------- 1 | var event=require('event'); 2 | var util=require('util'); 3 | 4 | function Handshake(route){//consider extending Handshake with 5 | event.EventEmitter.call(this); 6 | handlers('Inbound',route,this); 7 | handlers('Outbound',route,this); 8 | 9 | } 10 | 11 | 12 | function handlers(direction,route,obj){ 13 | var seq; 14 | var synchronize; 15 | var meta; 16 | obj[direction]={ 17 | synchronize:undefined, 18 | meta:undefined 19 | } 20 | function handShake(dir,frame,next){ 21 | if(frame.Handshake.Type==="Synchronize"&&direction===dir){ 22 | seq=frame.Handshake.SeqId; 23 | obj[direction].synchronize=frame.Handshake.Payload; 24 | route.AddHandler(0x01,ack); 25 | route.RemoveHandler(0x01,handShake); 26 | next(true);//stop 27 | }else 28 | next(); 29 | } 30 | function established(dir,frame,next){ 31 | if(frame.Handshake.Type==="Established"&&direction===dir){ 32 | obj[direction].meta=frame.Handshake.Payload; 33 | seq=frame.Handshake.SeqId; 34 | next(true); 35 | }else 36 | next(); 37 | } 38 | function ack(dir,frame,next){ 39 | if(frame.Handshake.Type==='ACK'&&direction!==dir){ 40 | if(seq===frame.Handshake.SeqId){ 41 | if(obj[direction].synchronize){ 42 | route.AddHandler(0x01,established); 43 | }else if(obj[direction].meta){//all finished 44 | route.AddHandler(0x01,disconnect); 45 | obj.emit('established'); 46 | route.RemoveHandler(0x01,established); 47 | route.RemoveHandler(0x01,ack); 48 | }else{ 49 | console.log("Peer.Handshake: out of order ACK"); 50 | Log.Packet(frame); 51 | cleanup() 52 | } 53 | }else{ 54 | console.log("Peer.Handshake: ack with bad sequence"); 55 | Log.Packet(frame); 56 | cleanup() 57 | } 58 | } 59 | } 60 | 61 | function disconnect(dir,frame,next){ 62 | if(frame.Handshake.Type==='Disconnect'&&direction===dir){ 63 | route.AddHandler(0x01,dack); 64 | route.RemoveHandler(0x01,disconnect); 65 | next(true); 66 | }else{ 67 | next(); 68 | } 69 | } 70 | function dack(dir,frame,next){ 71 | if(direction!==dir){ 72 | route.RemoveHandler(0x01,dack); 73 | obj.emit('disconnect'); 74 | next(true); 75 | }else{ 76 | next(); 77 | } 78 | 79 | } 80 | function cleanup(){ 81 | route.RemoveHandler(0x01,handShake); 82 | route.RemoveHandler(0x01,established); 83 | route.RemoveHandler(0x01,ack); 84 | } 85 | route.AddHandler(0x01,handShake); 86 | } 87 | 88 | 89 | util.inherits(Handshake,event.EventEmitter); 90 | module.exports=Handshake; -------------------------------------------------------------------------------- /lib/peer/index.js: -------------------------------------------------------------------------------- 1 | var Log=require('Log'); 2 | var Handshake=require('./Handshake'); 3 | function Peer(ip,route,close){ 4 | var Stats={ 5 | 'Null':{ 6 | Inbound:0, 7 | Outbound:0 8 | }, 9 | Ping:{ 10 | Inbound:0, 11 | Outbound:0 12 | } 13 | }; 14 | var handshake=new Handshake() 15 | route.AddHandler(0x00,function Null(dir,frame,next){ 16 | if(frame.Payload.lenth!==0){ 17 | console.log("Peer.Null: Null type does not have zero length"); 18 | } 19 | Stats['Null'][dir]++; 20 | next(); 21 | }); 22 | 23 | route.AddHandler(0x06,function Ping(dir,frame,next){ 24 | if(!frame.Ping.ACK) 25 | Stats.Ping[dir]++; 26 | }) 27 | 28 | 29 | 30 | function DefaultLog(dir,frame){ 31 | Log.Packet(frame); 32 | } 33 | 34 | route.DefaultHandler(0x01,DefaultLog); 35 | route.DefaultHandler(0x02,DefaultLog); 36 | route.DefaultHandler(0x04,DefaultLog); 37 | route.DefaultHandler(0x06,DefaultLog); 38 | route.DefaultHandler(0x36,DefaultLog); 39 | } -------------------------------------------------------------------------------- /lib/state/Connections.js: -------------------------------------------------------------------------------- 1 | var stream=require('stream'); 2 | var util=require('util'); 3 | 4 | var _=require('lodash'); 5 | 6 | var Peer=require('./Peer'); 7 | 8 | function Connections(delay){ 9 | this.connections={}; 10 | var lastBuffer=new Buffer(0); 11 | 12 | stream.Writable.call(this,{ 13 | objectMode:true, 14 | highWaterMark:1 15 | }); 16 | 17 | this._write=function(packet,enc,done){ 18 | var frame=_.get(packet,'Frame.IP.UDP.NinFrame'); 19 | // console.log(frame); 20 | 21 | if(frame){ 22 | var direction=packet.Direction; 23 | if(packet.Direction==='Outbound'){//ignor all but one copy of the outbound packets 24 | if(frame.Payload.compare(lastBuffer)===0) 25 | return done(); 26 | lastBuffer=frame.Payload; 27 | } 28 | 29 | var ip=direction==='Outbound'?'localhost':packet.Frame.IP.SourceAddress; 30 | 31 | 32 | if(this.connections[ip]){ 33 | this.connections[ip].Packet(packet); 34 | }else{ 35 | var peer=new Peer(ip,frame.NNID,this); 36 | peer.Direction=direction; 37 | this.on('Disconnect',function(){ 38 | delete this.connections[ip]; 39 | }); 40 | this.emit('Connection',peer); 41 | 42 | peer.Packet(packet); 43 | this.connections[ip]=peer; 44 | } 45 | } 46 | done(); 47 | }.bind(this); 48 | } 49 | Connections.prototype.Clear=function(){ 50 | this.connections=[]; 51 | } 52 | Connections.prototype.Remove=function(ip){ 53 | delete this.connections[ip]; 54 | } 55 | util.inherits(Connections,stream.Writable); 56 | module.exports=Connections; -------------------------------------------------------------------------------- /lib/state/Peer.js: -------------------------------------------------------------------------------- 1 | var eventEmitter=require('events'); 2 | var util=require('util'); 3 | var _=require('lodash'); 4 | 5 | 6 | function Peer(ip,nnid){ 7 | var timeout; 8 | var disconnected=false; 9 | eventEmitter.call(this); 10 | 11 | this.IP=ip; 12 | this.NNID=nnid; 13 | this.Gear={}; 14 | this.Slot=undefined; 15 | 16 | 17 | var hsCnd=true; 18 | 19 | this.Packet=function(frame){ 20 | if(disconnected) 21 | return; 22 | 23 | var ninFrame=_.get(frame,'Frame.IP.UDP.NinFrame'); 24 | if(ninFrame===undefined) 25 | return; 26 | 27 | resetTimeout(); 28 | 29 | if(hsCnd&&ninFrame.Handshake) 30 | hsCnd=Handshake(ninFrame); 31 | 32 | if(ninFrame.Handshake&&ninFrame.Handshake.Type==='Disconnect'){ 33 | disconnected=true; 34 | this.emit('Disconnect'); 35 | } 36 | 37 | if(ninFrame.Event&&ninFrame.Event.Type==='Player'){ 38 | var event=ninFrame.Event; 39 | if(event.Gear) 40 | Gear(event); 41 | if(event.Movement) 42 | Movement(event); 43 | } 44 | }; 45 | 46 | var resetTimeout=function(){ 47 | if(timeout) 48 | clearTimeout(timeout); 49 | 50 | timeout=setTimeout(function(){ 51 | disconnected=true; 52 | this.emit('Disconnect'); 53 | }.bind(this),5000); 54 | }.bind(this); 55 | 56 | var Handshake=function(ninFrame){ 57 | var handshake=ninFrame.Handshake; 58 | this.Slot=ninFrame.Slot; 59 | if(handshake.Type==="Hello"){ 60 | this.Hello=handshake.Payload; 61 | }else if(handshake.Type==="Name"){ 62 | this.Name=handshake.Name; 63 | } 64 | if(this.Hello&&this.Name&&this.Slot!==253){ 65 | this.emit('Hello',{ 66 | Hello:this.Hello, 67 | Name:this.Name, 68 | Slot:this.Slot 69 | }); 70 | return false; 71 | } 72 | return true; 73 | }.bind(this); 74 | 75 | var GearP=new Buffer(80); 76 | var Gear=function(event){ 77 | if(event.Gear&&event.Gear.Payload.compare(GearP)!==0){ 78 | event.Gear.Payload.copy(GearP); 79 | delete event.Gear.Payload; 80 | var gear=event.Gear 81 | 82 | this.Gear=gear; 83 | this.emit('Gear',gear); 84 | } 85 | return true; 86 | }.bind(this); 87 | 88 | var MoveP=new Buffer(52); 89 | var Movement=function(event){ 90 | if(event.Movement&&event.Movement.Payload.compare(MoveP)!==0){ 91 | event.Movement.Payload.copy(MoveP); 92 | this.Movement=event.Movement; 93 | this.emit('Movement',this.Movement) 94 | } 95 | return true; 96 | }.bind(this); 97 | } 98 | 99 | 100 | 101 | 102 | util.inherits(Peer,eventEmitter); 103 | module.exports=Peer; -------------------------------------------------------------------------------- /lib/state/Route.js: -------------------------------------------------------------------------------- 1 | function Route(catchAll){ 2 | var stack={}; 3 | var defaults={}; 4 | this.AddHandler=function AddRoute(type,fn){ 5 | if(!(type in stack)) 6 | stack[type]=[]; 7 | stack[type].push(fn); 8 | }; 9 | 10 | this.RemoveHandler=function RemoveRoute(type,fn){ 11 | if(!(type in stack)) 12 | return; 13 | var idx=stack[type].indexOf(fn); 14 | if(idx>=0) 15 | stack[type].splice(idx,1); 16 | }; 17 | 18 | this.DefaultHandler=function AddDefault(type,fn){ 19 | defaults[type]=fn; 20 | }; 21 | 22 | this.Handle=function(packet){ 23 | var frame=packet.IP.UDP.NinFrame; 24 | var dir=packet.Direction; 25 | var payloadType=frame.PayloadType; 26 | if(stack[payloadType]!==undefined){ 27 | var handlers=stack[payloadType]; 28 | var idx=0; 29 | next(); 30 | 31 | function next(stop){ 32 | if(stop) 33 | return; 34 | 35 | if(idxlimit; 45 | }); 46 | } 47 | } 48 | 49 | this.Stats=function Stats(){ 50 | cullAvg(); 51 | var ret=[]; 52 | for(var i in connections){ 53 | ret.push({ 54 | IP:i, 55 | PacketsPerSecond:connections[i].PacketsPerSecond.length, 56 | TotalPackets:connections[i].TotalPackets, 57 | StartTime:connections[i],StartTime 58 | }); 59 | } 60 | return ret; 61 | } 62 | 63 | } 64 | 65 | util.inherits(State,stream.Writable); 66 | module.exports=State; -------------------------------------------------------------------------------- /lib/util.js: -------------------------------------------------------------------------------- 1 | 2 | //_bsontype objects are the bane of my existence >:( 3 | exports.fixMongo=function(obj){ 4 | var objStack=[obj]; 5 | var keyStack=[Object.keys(obj)]; 6 | var idxStack=[0]; 7 | while(idxStack.length){ 8 | var skip=false; 9 | for(var depth=idxStack.length-1;idxStack[depth]>8;//move the number back 8 bits to return orginal. 37 | } -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name":"SplatNet", 3 | "version":"0.1.0", 4 | "description":"Tool to analize splatoon packet data", 5 | "dependencies":{ 6 | "body-parser":"^1.13.2", 7 | "express":"latest", 8 | "mongojs":"^1.2.1", 9 | "pcap":"latest", 10 | "q":"latest", 11 | "lodash":"latest", 12 | "socket.io":"latest" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /play.js: -------------------------------------------------------------------------------- 1 | 2 | var Playback=require('./lib/net/Playback'); 3 | var Capture=require('./lib/net/Capture'); 4 | var Decoder=require('./lib/net/Decoder'); 5 | var Dissectors=require('./lib/dissectors'); 6 | var Connections=require('./lib/state/Connections'); 7 | 8 | 9 | var config=require('./config'); 10 | var io=require('socket.io')(config.Port); 11 | 12 | 13 | var state=new Connections(); 14 | state.on('end',function(){ 15 | console.log('state end'); 16 | }); 17 | 18 | if(process.argv.length===3){ 19 | console.error('requires session'); 20 | var play=new Playback(); 21 | play.on('end',function(){ 22 | console.log('db end'); 23 | process.exit(); 24 | }); 25 | play.pipe(state); 26 | }else{ 27 | var cap=new Capture(config.TargetMAC); 28 | var decode=new Decoder(); 29 | Dissectors.AddStuctures(decoder); 30 | cap.pipe(decode); 31 | decode.pipe(state); 32 | } 33 | 34 | var SplatPeers={}; 35 | var ioPeers={}; 36 | 37 | io.on('connection',function(socket){ 38 | socket.emit('StatePush',SplatPeers); 39 | }); 40 | 41 | state.on('Connection',function(peer){ 42 | var name=peer.IP; 43 | console.log('Peer connected '+name); 44 | io.emit('PeerConnection',peer); 45 | SplatPeers[peer.IP]=peer; 46 | 47 | peer.on('Disconnect',function(){ 48 | io.emit('PeerDisconnect',peer.IP); 49 | delete SplatPeers[peer.IP]; 50 | console.log(name+' disconnected'); 51 | }); 52 | 53 | peer.on('Hello',function(inkling){ 54 | // console.log(name+' Name'+inkling.Name); 55 | io.emit('Hello',{ 56 | IP:peer.ip, 57 | State:inkling 58 | }); 59 | console.log(peer.Slot+' '+peer.Name); 60 | name=inkling.Name; 61 | }); 62 | peer.on('Gear',function(gear){ 63 | io.emit('Gear',{ 64 | IP:peer.ip, 65 | State:gear 66 | }); 67 | console.log(peer.Slot+' '+peer.Name+' '+gear.Model+', lvl '+gear.Level+', wp '+gear.Weapon.Id); 68 | }); 69 | 70 | peer.on('Movement',function(move){ 71 | io.emit('Movement',{ 72 | IP:peer.ip, 73 | State:move 74 | }); 75 | var p=move.Position; 76 | // console.log(name+' ('+p.X+','+p.Y+','+p.Z+')') 77 | }); 78 | }); 79 | 80 | 81 | server.listen(config.Port); 82 | play.Start(process.argv[2]); 83 | 84 | --------------------------------------------------------------------------------