Go to file
Jordan Cristiano e3ccd21314 Changed netdata struct array to use std array 2015-10-15 00:40:40 -04:00
demboyz Changed netdata struct array to use std array 2015-10-15 00:40:40 -04:00
docs DEM format documentation 2015-07-03 00:27:45 -04:00
external Fixed compilation of bitbuf on gcc/clang 2015-08-31 22:16:29 -04:00
premake Changed output dir of compiled binaries to bin 2015-08-31 23:58:47 -04:00
.gitignore added Vagrantfile and fixed executable privileges 2014-10-29 01:13:55 -04:00
LICENSE Initial commit 2014-10-28 23:41:34 -04:00
README.md Added testing task to contribution notes 2015-10-15 00:33:21 -04:00
Vagrantfile added Vagrantfile and fixed executable privileges 2014-10-29 01:13:55 -04:00
vagrant.sh add vagrant.sh for setting up linux deps; add usage instructions 2015-05-15 19:29:17 -04:00

README.md

demboyz

we dem boyz

What is it?

Demboyz is a command line tool to convert TF2 STV demos into a human readable json format. Demboyz runs on Linux, Windows, and OSX. It supports the following conversions:

.dem/.json <-> .dem/.json
.dem/.json -> .con

The .dem format is the TF2 STV demo format.
The .json format is the demboyz streaming json demo format.
The .con format is a log equal to what would be produced by TF2
with netmessage/demmessage logs enabled.

Potential Uses

  • Exporting Stats: Parsing for player stats and motion throughout maps.
  • Anticheat: Interpreting player net data for malicious behavior and cheating
  • Anti-Anticheat: Modifying player net data to hide your malicious behaviour and cheating
  • Censoring: Cover up rude communication by removing player voice and chat messages
  • Social engineering: Make your friends seem rude by adding phony player voice and chat messages
  • ConeBone69 revival: Change the names of all players to ConeBone69

Usage

./demboyz mystvdemo.dem mystvdemo.json
./demboyz mystvdemo.dem mystvdemo.con
./demboyz mystvdemo.json mystvdemo.dem
./demboyz mystvdemo.json mystvdemo.con

In the first example, mystvdemo.dem will be read from the current working directory, while mystvdemo.json will be written to the current working directory.

Contributing

For Developers

If you would like to contribute to demboyz, here are a few tasks up for grabs:

General programming experience:

  • Add automated tests to demboyz.
    • Using the Catch C++ testing framework.
    • Unit test the serialization of network messages.
    • System test exact binary matches of dem -> json -> dem transformations.
  • Document the .dem format.
    • Turn the working demboyz serialization code into a reference manual for the .dem fomat.
    • Any amount of work on this helps. Document one struct!
  • Develop an app that uses demboyz.
    • Provide feedback on the usefulness of the json demo format.
    • Create new tools previously impossible to make.

C++ and asm experience:

  • Continue reverse engineering the STV demo structs and serialization (svc_ messages).
    • Many of the reversed svc_ messages still have unknown binary chunks of data.
    • Reverse them for addition to the demboyz source.
  • Reverse engineer the POV demo structs and serialization (clc_ messages).
    • Currently, demboyz only supports STV demos due to POV demo messages being separate and unknown.
    • Work on reverse engineering the clc_ messages just like the svc_ messages.
  • Add a conversion to the replay demo format.
    • The replay demo format would require reverse engineering just like POV and STV demos.

For Users

  • Cheer on the developers.
  • Pressure the developers.
  • Become a developer.

Who Uses demboyz?

Compiling From Source

When following instructions below, the compiled binary will be output in the bin folder.

Using Vagrant

# Launch VM
vagrant up
vagrant ssh
cd /vagrant

# Install Linux dependencies (first time setup)
./vagrant.sh

# Build demboyz
cd premake
./gmake.sh && cd gmake
make

# Disconnect session and stop VM
exit
vagrant halt

With Visual Studio 2013

# Generate vs 2013 project
cd premake
vs2013.bat

Open generated VS solution at premake/vs2013/demboyz.sln