Skip to main content
Building Titanis from source gives you the latest code and lets you make modifications to the library or CLI tools. Titanis targets .NET 8 and builds on both Windows and Linux.

Prerequisites

Install the .NET 8 SDK before you build. It is the only required dependency.
Follow the .NET 8 SDK installation instructions for Linux on the Microsoft documentation site. Package manager instructions are available for all major distributions (apt, dnf, zypper, and others).
Verify the SDK is installed and on your PATH:
dotnet --version
The output should report version 8.x.x or higher.

Building with dotnet build

This method works on both Windows and Linux.
1

Clone the repository

Clone the Titanis source code from GitHub:
git clone https://github.com/trustedsec/Titanis.git
cd Titanis
2

Build the solution

Run dotnet build from the root of the repository. This compiles the entire solution including all libraries, tools, and tests:
dotnet build
The build output is placed in each project’s bin/ subdirectory.
3

Locate the tool binaries

Each CLI tool is built into its own directory under tools/. For example, after a debug build you can find the Smb2Client binary at:
tools/Smb2Client/bin/Debug/net8.0/Smb2Client

Building with Visual Studio 2022

Visual Studio 2022 is supported on Windows only.
1

Open the solution

Open Titanis.sln in the root of the repository. Visual Studio will restore NuGet packages automatically.
2

Build

Click Build > Build Solution (or press Ctrl+Shift+B). All projects in the solution are compiled.

Release builds and signing

Release builds require a strong-name key file. If Titanis.snk is not present in the repository root, the Release configuration will fail to build.
Release builds sign the compiled assemblies using a strong-name key file (Titanis.snk). This key is not included in the public repository. If you are building for internal distribution and require signed assemblies, you will need to supply your own key file:
# Generate a new strong-name key pair
dotnet sn -k Titanis.snk

# Then build with Release configuration
dotnet build --configuration Release
Debug builds do not require Titanis.snk and are suitable for development and testing.

Project structure

The solution organizes code into the following functional groups:
GroupDescription
BaseUtilities shared across other components
CryptoCryptographic algorithm implementations
FormatsReaders and writers for formats such as ASN.1
ProtocolsNetwork protocol implementations (SMB2, MSRPC, LDAP)
SecuritySecurity protocol implementations (NTLM, Kerberos, SP-NEGO)
ToolsStandalone CLI tools
TestUnit tests
_BuildBuild configuration files

Build docs developers (and LLMs) love