Skip to content

A collection of packet-related tools for a certain MMO

License

Notifications You must be signed in to change notification settings

redstrate/XIVPacketTools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XIVPacketTools

A collection of packet-related tools for a certain MMO.

cfcap-expand

This extracts packets from captures (.cfcap) recorded from Project Chronofoil into a directory for easy browsing.

Usage

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.

Translating IPC opcodes

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.

License

GPLv3

This project is licensed under the GNU General Public License 3. The ChronofoilCaptureFile.proto definition file is from Project Chronofoil.

About

A collection of packet-related tools for a certain MMO

Topics

Resources

License

Stars

Watchers

Forks

Languages