Clone or download
Failed to load latest commit information.
.nuget .travis.yml updates Mar 26, 2017
SQL Update object_names for serverside/non db2 spells (#342) Nov 29, 2017
WowPacketParser.Tests Revert a C# 7.0 only feature so that WPP compiles on Mono Apr 15, 2017
WowPacketParser Add 26899 build (#362) Jun 22, 2018
WowPacketParserModule.BattleNet.V37165 Revert a C# 7.0 only feature so that WPP compiles on Mono Apr 15, 2017
WowPacketParserModule.V4_3_4_15595 Fixed structure of CMSG_UPDATE_MISSILE_TRAJECTORY for Oct 29, 2017
WowPacketParserModule.V5_3_0_16981 Added opcode & structure SMSG_SPELL_ENERGIZE_LOG for 5.3.0 (#334) Sep 21, 2017
WowPacketParserModule.V5_4_0_17359 Added creature_template_locale parsing Jan 5, 2018
WowPacketParserModule.V5_4_1_17538 Added creature_template_locale parsing Jan 5, 2018
WowPacketParserModule.V5_4_2_17658 Added creature_template_locale parsing Jan 5, 2018
WowPacketParserModule.V5_4_7_17898 Added creature_template_locale parsing Jan 5, 2018
WowPacketParserModule.V5_4_8_18291 Added creature_template_locale parsing Jan 5, 2018
WowPacketParserModule.V6_0_2_19033 Update/Improve Parser (including 7.3.5) (#355) Apr 13, 2018
WowPacketParserModule.V7_0_3_22248 Fixed structure for SMSG_AUTH_RESPONSE after (#363) Jun 22, 2018
packages Enable NuGet Package Restore Aug 28, 2014
scripts Executable permissions for scripts/* files Mar 27, 2017
.gitignore Add VS profiler files to gitgnore Oct 2, 2015
.travis.yml .travis.yml updates Mar 26, 2017
COPYING Move COPYING file to root dir Apr 1, 2016
Dockerfile Update Dockerfile to use Mono 5.0.1 Jul 2, 2017
README.md Update README.md Apr 3, 2018
WowPacketParser.sln Set 22248 as the first 7.0.3 build instead of 22280 Aug 4, 2016
WowPacketParser.sln.DotSettings Update WowPacketParser.sln.DotSettings Apr 30, 2017


WowPacketParser (WPP)

GitHub license Coverity Scan Build Status Build Status TravisCI Build Status AppVeyor Docker Pulls Codacy Badge


  • Compile WowPacketParser using Visual Studio 2015 or higher (Windows) or Mono 4.4 or higher (Linux/OSX). Alternatively you can download compiled binaries from the links below.
  • Edit WowPacketParser.exe.config to fit your needs.
  • Drag one or more files (.pkt or .bin) to WowPacketParser.exe.
  • Command line usage: WowPacketParser.exe [--ConfigFile path --Option1 value1 ...] filetoparse1 ...

Optionally, WPP can connect to two kinds of MySQL databases: world from TrinityCore and its own database, WPP. This can be enabled by setting <add key="DBEnabled" value="true" /> in the .config file. Remember to set <add key="TargetedDatabase" value="1"/> in accordance with the targeted version of the core.

The world database is used when creating SQL files after parsing to produce the mimimum number of changes needed to update the database. For example, if only the faction of a creature that appears in the sniff needs to be updated, the produced SQL files will contain an UPDATE query, instead of a full INSERT to the table creature_template. WPP does not modify this database directly, all the tentative changes will be written to the output SQL files.

The WPP database is used to feed additional data that WPP may use while parsing. For example, in the output text files, the spell name can be displayed next to spell ids:

ServerToClient: SMSG_SPELL_START (0x2BB8) Length: 96 ConnIdx: 0 Time: 01/01/2016 00:22:33.235 Number: 701
(Cast) CasterGUID: Full: 0x03691F00000000000000000000000001 Player/0 R3558/S0 Map: 0 Low: 1
(Cast) SpellID: 2479 (Honorless Target)
(Cast) CastFlags: 15

This is available for a lot of other named entities (achievements, creatures, quests, etc.). The SQL files required for this database is in the SQL directory. create_WPP.sql creates the database and wpp_data_objectnames.sql has some data to fill the database.

Nightly Builds

.NET 4.5 (AnyCPU) by AppVeyor

Docker (experimental)

It is possible run WPP on Docker using the trinitycore/wpp image:

docker run -v /place/where/sniffs/are/kept:/usr/src/app/build/sniffs trinitycore/wpp sniffs/sniffname.pkt

/place/where/sniffs/are/kept should your local directory containing the .pkt file and sniffname.pkt the file to be parsed.

Output (.txt/.sql) of the parser will be added to /place/where/sniffs/are/kept.