A collection of packet-related tools for a certain MMO.
This extracts packets from captures (.cfcap
) recorded from Project Chronofoil into a directory for easy browsing.
Run using cargo run
, giving it the path to your .cfcap
file.
$ cargo run --bin cfcap-expand 91682a6e-73cc-49ce-a42d-6fe484c46aa5.cfcap
Once the process is complete, you will find it has created a structure like:
<capture-id>/
lobby/ <lobby connection>
...
chat/ <chat connection>
...
zone/ <zone connection>
<index>-<segment-type>-[ipc opcode] (to <client/server>)/
data.bin
ipc_header.bin (if ipc)
Notes:
<index>
is indexed across every connection, so it will usually start in Lobby and ends in Zone.ipc_header.bin
is the IPC segment header data, if applicable.data.bin
is the data of the segment with the headers stripped out.ipc opcode
is in hexadecimal format.
To associate IPC opcodes with a well defined name, place an opcodes.json
in the same directory where you run cfcap-expand
. It should be in the following format:
{
"ServerZoneIpcType": [
{
"name": "WellDefinedOpcode",
"opcode": 258
}
],
"ClientZoneIpcType": [
{
"name": "AnotherWellDefinedOpcode",
"opcode": 250
}
],
"ServerLobbyIpcType": [],
"ClientLobbyIpcType": [],
"ServerChatIpcType": [],
"ServerChatIpcType": [],
}
Segments already have well-defined names, so it's not possible to change those at the moment. Opcodes should be written in decimal. This format is intentionally similiar to the one used in FFXIVOpcodes, so it's easier to move opcodes between.
This project is licensed under the GNU General Public License 3. The ChronofoilCaptureFile.proto
definition file is from Project Chronofoil.