Dev Chat: 10/15/2013 - CharCreate and Spawn Packets
Posted: Tue Oct 15, 2013 9:51 am
Started Character Create discussion, and sorting out what is now known as "PacketType" (0x1, 0x2, 0x9) and Opcode location, and discovering something screwy with the Spawn Packets.
[quote]Session Start: Tue Oct 15 09:51:11 2013
[09:51] <@Xinux_Work> character create
[09:51] <@Xinux_Work> name already taken
[09:51] <@Xinux_Work> 18 :0 0.0.0.0:52331 19 RecvFrom
[09:51] <@Xinux_Work> 0000 00 09 00 07 02 00 86 03 00 00 03 00 00 00 01 00 ................
[09:51] <@Xinux_Work> 0010 00 D4 88 ...
[09:51] <@Xinux_Work> character accepted
[09:51] <@Xinux_Work> 22 :0 0.0.0.0:52331 19 RecvFrom
[09:51] <@Xinux_Work> 0000 00 09 00 08 02 00 86 03 00 00 03 00 00 00 00 00 ................
[09:51] <@Xinux_Work> 0010 00 0A 49 ..I
[11:34] <@Xinux_Work> hopefully this helps explains the 09 packet better
[11:34] <@Xinux_Work> viewtopic.php?f=7&t=45
[13:08] <~john> does my pasting tons of packets do any good? I know you can dig them out of the logs yourself.
[13:09] <@Xinux_Work> yea helps to berak them down
[13:09] <~john> more importantly, do you have any ideas why the "opcode" collector finds isn't correct on some logs? is it that chopping header off thingy?
[13:10] <~john> i'm confused on the spawn packet opcode values.
[13:10] <@Xinux_Work> yea but it need's to be tweaked to handle locations better
[13:12] <@Xinux_Work> plus the packets seem to be different based off the subopcode atleast that is what i'm calling it
[13:12] <@Xinux_Work> did the post help explain soe opcode 9 better?
[13:12] <~john> you mean like eq2's EqCommand::EqOtherOpcode?
[13:13] <~john> yeah, we were pretty confused by SWG's packet docs, though it kinda made sense.
[13:22] <@Xinux_Work> the packet header seem's to be differnt based off the subopcode
[13:23] <~john> interesting.
[14:10] <@Xinux_Work> dod thta post help explain it Scat?
[14:10] <@Xinux_Work> did that
[14:12] <@Scatman> yes i just read it
[14:12] <@Scatman> thanks very much
[14:30] <@Xinux_Work> spawn packets atleast that is what they look like seem to have 2 seperate sequences
[14:36] <@Xinux_Work> and obviously some of the spots where the collector is reading opcodes is length
[14:41] <~john> i think that answered my question about why 4 spawns had 4 different opcodes
[14:41] <@Scatman> heh
[14:41] <~john> and Xinux, do you see any packed/reversed/compressed packet data yet? like those spawns... packed? I couldn't unpack them using what we know about eq2emu.
[14:43] <@Xinux_Work> well they are utilizing zlib to what extent i don't know
[14:45] <~john> well you know how eq2's spawn packet is packed. and, we unpack it, and it grows ginormous. where all the details of the spawn are. tried doing that with Chi Sau Openpalm and couldn't. Has to be more to his spawn info than that little 135 or so bytes.
[15:01] <@Xinux_Work> vanguard stores alot of info client side compared to eq2 tho
[15:03] <@Scatman> xin. so what is up with the 16 bit subopcode, then 32 bit opcode?
[15:03] <@Xinux_Work> yea trying to figure that out
[15:04] <@Xinux_Work> for instance spam inc
[15:04] <@Xinux_Work> –- OP_Unknown_104 --
[15:04] <@Xinux_Work> 10/14/2013 15:10:22
[15:04] <@Xinux_Work> 69.174.203.10 -> 192.168.1.100
[15:04] <@Xinux_Work> 0000: 01 00 68 00 00 00 32 19 5B C6 00 48 60 98 CD BE ..h...2.[..H`...
[15:04] <@Xinux_Work> 0010: 67 63 28 9B 3E 18 60 16 00 00 00 00 00 F8 13 70 gc(.>.`........p
[15:04] <@Xinux_Work> 0020: 18 21 40 68 54 05 00 00 00 76 0D 41 6F 6D 61 20 .!@hT....v.Aoma
[15:04] <@Xinux_Work> 0030: 53 69 78 66 69 73 68 00 57 DF B3 31 94 4D 1F A4 Sixfish.W..1.M..
[15:04] <@Xinux_Work> 0040: 02 90 01 00 00 04 E9 13 00 18 00 00 00 60 63 0D .............`c.
[15:04] <@Xinux_Work> 0050: 00 00 B2 44 0E 00 00 6C 08 00 00 80 F8 40 C2 DE ...D...l.....@..
[15:04] <@Xinux_Work> 0060 6E 00 00 20 FF FF FF FF 8F FF FF FF FF 0F n.. ..........
[15:04] <@Xinux_Work> .
[15:04] <@Xinux_Work> this is what i have so far
[15:04] <@Xinux_Work> 01 00 subopcode
[15:04] <@Xinux_Work> 68 00 00 00 total length
[15:04] <@Xinux_Work> 32 19 Sequence
[15:04] <@Xinux_Work> 5B C6 Sequence 2
[15:06] <@Xinux_Work> it's almost like differnt subopcodes use different structs all together
[15:07] <@Scatman> hmm
[15:11] <@Xinux_Work> here is the first line from a few packets inorder with skipping a few packets that don't look like them
[15:11] <@Xinux_Work> .
[15:11] <@Xinux_Work> 01 00 F9 01 00 00 2F 19 1B C2 01 68 F1 9D CD 7E
[15:11] <@Xinux_Work> 01 00 5D 00 00 00 30 19 DB 03 01 28 55 98 CD BE
[15:11] <@Xinux_Work> 01 00 6C 00 00 00 31 19 4B C6 00 48 64 98 CD AE
[15:11] <@Xinux_Work> 01 00 68 00 00 00 32 19 5B C6 00 48 60 98 CD BE
[15:11] <@Xinux_Work> 01 00 9A 00 00 00 33 19 6B C6 00 E8 91 58 0F 5C
[15:11] <@Xinux_Work> 01 00 55 00 00 00 4F 19 7B 46 00 68 4D 98 CD 1E
[15:16] <@Scatman> so is it 00 00 01 F(
[15:16] <@Scatman> F9
[15:16] <@Scatman> or 00 00 and 01 F9
[15:16] <@Scatman> hmmmm
[15:17] <@Xinux_Work> f9 01 00 00 is the correct length for the packet
[15:17] <@Scatman> ok
[15:17] <@Xinux_Work> 505
[15:17] <@Scatman> so then those were combined?
[15:17] <@Xinux_Work> those are the very first line from 6 different packets
[15:18] <@Xinux_Work> i see sub opcode , packet length, sequence 1 and sequence 2
[15:19] <@Scatman> 2 sequences?
[15:19] <@Xinux_Work> that is what it looks like to me
[15:20] <@Scatman> i do agree, the numbers appear to be incrementing
[16:53] <@Xinux_Work> humm the collector misses stuff like /who results
[19:41] <~john> beginning some docs. Review, critique. Too much info? Too soon to waste time writing? Doxygen will do all this for me?
[19:41] <~john> http://wiki.vgoemulator.net/Docs/LoginServer[/quote]
[quote]Session Start: Tue Oct 15 09:51:11 2013
[09:51] <@Xinux_Work> character create
[09:51] <@Xinux_Work> name already taken
[09:51] <@Xinux_Work> 18 :0 0.0.0.0:52331 19 RecvFrom
[09:51] <@Xinux_Work> 0000 00 09 00 07 02 00 86 03 00 00 03 00 00 00 01 00 ................
[09:51] <@Xinux_Work> 0010 00 D4 88 ...
[09:51] <@Xinux_Work> character accepted
[09:51] <@Xinux_Work> 22 :0 0.0.0.0:52331 19 RecvFrom
[09:51] <@Xinux_Work> 0000 00 09 00 08 02 00 86 03 00 00 03 00 00 00 00 00 ................
[09:51] <@Xinux_Work> 0010 00 0A 49 ..I
[11:34] <@Xinux_Work> hopefully this helps explains the 09 packet better
[11:34] <@Xinux_Work> viewtopic.php?f=7&t=45
[13:08] <~john> does my pasting tons of packets do any good? I know you can dig them out of the logs yourself.
[13:09] <@Xinux_Work> yea helps to berak them down
[13:09] <~john> more importantly, do you have any ideas why the "opcode" collector finds isn't correct on some logs? is it that chopping header off thingy?
[13:10] <~john> i'm confused on the spawn packet opcode values.
[13:10] <@Xinux_Work> yea but it need's to be tweaked to handle locations better
[13:12] <@Xinux_Work> plus the packets seem to be different based off the subopcode atleast that is what i'm calling it
[13:12] <@Xinux_Work> did the post help explain soe opcode 9 better?
[13:12] <~john> you mean like eq2's EqCommand::EqOtherOpcode?
[13:13] <~john> yeah, we were pretty confused by SWG's packet docs, though it kinda made sense.
[13:22] <@Xinux_Work> the packet header seem's to be differnt based off the subopcode
[13:23] <~john> interesting.
[14:10] <@Xinux_Work> dod thta post help explain it Scat?
[14:10] <@Xinux_Work> did that
[14:12] <@Scatman> yes i just read it
[14:12] <@Scatman> thanks very much
[14:30] <@Xinux_Work> spawn packets atleast that is what they look like seem to have 2 seperate sequences
[14:36] <@Xinux_Work> and obviously some of the spots where the collector is reading opcodes is length
[14:41] <~john> i think that answered my question about why 4 spawns had 4 different opcodes
[14:41] <@Scatman> heh
[14:41] <~john> and Xinux, do you see any packed/reversed/compressed packet data yet? like those spawns... packed? I couldn't unpack them using what we know about eq2emu.
[14:43] <@Xinux_Work> well they are utilizing zlib to what extent i don't know
[14:45] <~john> well you know how eq2's spawn packet is packed. and, we unpack it, and it grows ginormous. where all the details of the spawn are. tried doing that with Chi Sau Openpalm and couldn't. Has to be more to his spawn info than that little 135 or so bytes.
[15:01] <@Xinux_Work> vanguard stores alot of info client side compared to eq2 tho
[15:03] <@Scatman> xin. so what is up with the 16 bit subopcode, then 32 bit opcode?
[15:03] <@Xinux_Work> yea trying to figure that out
[15:04] <@Xinux_Work> for instance spam inc
[15:04] <@Xinux_Work> –- OP_Unknown_104 --
[15:04] <@Xinux_Work> 10/14/2013 15:10:22
[15:04] <@Xinux_Work> 69.174.203.10 -> 192.168.1.100
[15:04] <@Xinux_Work> 0000: 01 00 68 00 00 00 32 19 5B C6 00 48 60 98 CD BE ..h...2.[..H`...
[15:04] <@Xinux_Work> 0010: 67 63 28 9B 3E 18 60 16 00 00 00 00 00 F8 13 70 gc(.>.`........p
[15:04] <@Xinux_Work> 0020: 18 21 40 68 54 05 00 00 00 76 0D 41 6F 6D 61 20 .!@hT....v.Aoma
[15:04] <@Xinux_Work> 0030: 53 69 78 66 69 73 68 00 57 DF B3 31 94 4D 1F A4 Sixfish.W..1.M..
[15:04] <@Xinux_Work> 0040: 02 90 01 00 00 04 E9 13 00 18 00 00 00 60 63 0D .............`c.
[15:04] <@Xinux_Work> 0050: 00 00 B2 44 0E 00 00 6C 08 00 00 80 F8 40 C2 DE ...D...l.....@..
[15:04] <@Xinux_Work> 0060 6E 00 00 20 FF FF FF FF 8F FF FF FF FF 0F n.. ..........
[15:04] <@Xinux_Work> .
[15:04] <@Xinux_Work> this is what i have so far
[15:04] <@Xinux_Work> 01 00 subopcode
[15:04] <@Xinux_Work> 68 00 00 00 total length
[15:04] <@Xinux_Work> 32 19 Sequence
[15:04] <@Xinux_Work> 5B C6 Sequence 2
[15:06] <@Xinux_Work> it's almost like differnt subopcodes use different structs all together
[15:07] <@Scatman> hmm
[15:11] <@Xinux_Work> here is the first line from a few packets inorder with skipping a few packets that don't look like them
[15:11] <@Xinux_Work> .
[15:11] <@Xinux_Work> 01 00 F9 01 00 00 2F 19 1B C2 01 68 F1 9D CD 7E
[15:11] <@Xinux_Work> 01 00 5D 00 00 00 30 19 DB 03 01 28 55 98 CD BE
[15:11] <@Xinux_Work> 01 00 6C 00 00 00 31 19 4B C6 00 48 64 98 CD AE
[15:11] <@Xinux_Work> 01 00 68 00 00 00 32 19 5B C6 00 48 60 98 CD BE
[15:11] <@Xinux_Work> 01 00 9A 00 00 00 33 19 6B C6 00 E8 91 58 0F 5C
[15:11] <@Xinux_Work> 01 00 55 00 00 00 4F 19 7B 46 00 68 4D 98 CD 1E
[15:16] <@Scatman> so is it 00 00 01 F(
[15:16] <@Scatman> F9
[15:16] <@Scatman> or 00 00 and 01 F9
[15:16] <@Scatman> hmmmm
[15:17] <@Xinux_Work> f9 01 00 00 is the correct length for the packet
[15:17] <@Scatman> ok
[15:17] <@Xinux_Work> 505
[15:17] <@Scatman> so then those were combined?
[15:17] <@Xinux_Work> those are the very first line from 6 different packets
[15:18] <@Xinux_Work> i see sub opcode , packet length, sequence 1 and sequence 2
[15:19] <@Scatman> 2 sequences?
[15:19] <@Xinux_Work> that is what it looks like to me
[15:20] <@Scatman> i do agree, the numbers appear to be incrementing
[16:53] <@Xinux_Work> humm the collector misses stuff like /who results
[19:41] <~john> beginning some docs. Review, critique. Too much info? Too soon to waste time writing? Doxygen will do all this for me?
[19:41] <~john> http://wiki.vgoemulator.net/Docs/LoginServer[/quote]