There are a few different ways to sniff the packets.
You have wireshark which monitors all outgoing and incoming packets. Normally if I want to filter packets from a certain port I use this filter expression:
. This shows me all the packets send to and coming from port 15779.
This is a great way to get the packets but unfortunately you'll have to parse all the packets by yourself which is pretty hard.
Then there is PHConnector and nuconnector. These are basicly proxy's so you can connect to them with a program and you receive all the packets send from C -> S and S -> C. But you'll still have to parse them by yourself. Although this makes it easier to parse them since you receive the packets in your program and you can do with them whatever you want.
And then there is edxSilkroadLoader which I like the most. The packet parser parses and dumps the packets for you. You only have to find out what the values mean and you're done. But if you're using an official server this can be pretty hard since the security will most likely crash the client. But if you're using a private server you can find a server which doesn't have xtrap enabled and use this loader.
A lot of packets are the same in every version of silkroad so it can really be worth it to find out values of packets in the vsro server files.