Skip to main content
Titanis is organized as a collection of focused libraries. You can take dependencies on only the packages relevant to your use case rather than pulling in the entire framework. This page describes the component areas, available packages, and how to add references to your project.

Architecture overview

The Titanis source tree is divided into five main areas under src/:
AreaPathPurpose
Basesrc/base/Core utilities, I/O abstractions, CLI framework, and PDU struct primitives used by every other component
Cryptosrc/crypto/Cryptographic algorithm implementations (AES-128-CMAC, DES, Diffie-Hellman, MD4, MD5, RC4, SHA-1, SHA-2, SP800-108)
Formatssrc/formats/Format parsers including ASN.1 and CD-ROM
Netsrc/net/Network protocol implementations: SMB2, DCE/RPC, DCOM, LDAP, MSRPC, SSH, SOCKS, D-Bus, X11
Securitysrc/security/Security protocols: NTLM, Kerberos, SPNEGO, and certificate handling

Available packages

Base packages

PackageDescription
Titanis.CoreCore types and utilities shared across all Titanis components
Titanis.IOIByteSource and ByteWriter abstractions for reading and writing binary data
Titanis.CliFramework for building command-line utilities with parameters, validation, and CTRL+C handling
Titanis.Cli.WorkflowStep-based workflow execution with rollback support
Titanis.Cli.CommonParametersShared parameter definitions reused across multiple CLI tools
Titanis.PduStructAttributes that drive the PDU source generator ([PduStruct], [PduField], etc.)
Titanis.DynamicDynamic dispatch helpers used by DCOM and WMI
Titanis.ReflectionReflection utilities
Titanis.MocksTest-oriented mock implementations of Titanis service interfaces

Crypto packages

PackageDescription
Titanis.CryptoBase cryptographic types
Titanis.Crypto.Aes128CmacAES-128-CMAC implementation
Titanis.Crypto.DesDES/3DES implementation
Titanis.Crypto.Md4MD4 implementation (used by NTLM)
Titanis.Crypto.Md5MD5 implementation
Titanis.Crypto.Rc4RC4 implementation
Titanis.Crypto.Sp800_108NIST SP 800-108 key derivation

Format packages

PackageDescription
Titanis.Asn1ASN.1 DER/BER parser and writer

Network packages

PackageDescription
Titanis.NetSocket, name resolution, and credential service interfaces and default implementations
Titanis.Smb2SMB 2.x/3.x client
Titanis.DceRpcDCE/RPC client
Titanis.DceRpc.CoreCore DCE/RPC types
Titanis.MsrpcMSRPC protocol bindings (LSA, SAM, SCM, EFS, registry, server service)
Titanis.LdapLDAP client
Titanis.SocksSOCKS5 proxy support
Titanis.SshSSH protocol support

Security packages

PackageDescription
Titanis.SecurityCore security interfaces and types
Titanis.Security.NtlmNTLM authentication
Titanis.Security.KerberosKerberos authentication with PKINIT, S4U, and ticket management
Titanis.Security.SpnegoSPNEGO negotiation wrapping NTLM and Kerberos
Titanis.CertificatesX.509 certificate handling

Adding references to your project

All Titanis packages share a single version number. When consuming packages from NuGet, reference the version you need:
project.csproj
<ItemGroup>
  <PackageReference Include="Titanis.Core" Version="0.9.0" />
  <PackageReference Include="Titanis.Net" Version="0.9.0" />
  <PackageReference Include="Titanis.Smb2" Version="0.9.0" />
  <PackageReference Include="Titanis.Security" Version="0.9.0" />
  <PackageReference Include="Titanis.Security.Ntlm" Version="0.9.0" />
  <PackageReference Include="Titanis.Security.Spnego" Version="0.9.0" />
  <PackageReference Include="Titanis.Security.Kerberos" Version="0.9.0" />
</ItemGroup>
If you are working inside the Titanis repository itself, use <ProjectReference> elements pointing to the .csproj files under src/ instead of <PackageReference>.
For Release builds, Titanis assemblies are optionally strong-named using Titanis.snk. Place the key file in the same directory as Titanis.sln before building in the Release configuration. If the file is absent the build succeeds without signing.

Developer guide pages

Versioning

How Titanis assembly versions and file versions work, and how central package management keeps versions consistent.

Using the SMB2 library

Create a project, add the required references, and perform authenticated file operations over SMB2.

Using services

Understand the service interfaces that let you inject custom socket, name resolution, and credential behavior.

Using source generation

Use the PDU source generator to automatically implement binary serialization for protocol data structures.

Building a CLI utility

Build a new command-line tool using the Titanis.Cli framework with typed parameters, validation, and CTRL+C handling.

Code samples

Browse the sample projects that demonstrate real-world usage across SMB, RPC, DCOM, and WMI.

Build docs developers (and LLMs) love