Architecture overview
The Titanis source tree is divided into five main areas undersrc/:
| Area | Path | Purpose |
|---|---|---|
| Base | src/base/ | Core utilities, I/O abstractions, CLI framework, and PDU struct primitives used by every other component |
| Crypto | src/crypto/ | Cryptographic algorithm implementations (AES-128-CMAC, DES, Diffie-Hellman, MD4, MD5, RC4, SHA-1, SHA-2, SP800-108) |
| Formats | src/formats/ | Format parsers including ASN.1 and CD-ROM |
| Net | src/net/ | Network protocol implementations: SMB2, DCE/RPC, DCOM, LDAP, MSRPC, SSH, SOCKS, D-Bus, X11 |
| Security | src/security/ | Security protocols: NTLM, Kerberos, SPNEGO, and certificate handling |
Available packages
Base packages
| Package | Description |
|---|---|
Titanis.Core | Core types and utilities shared across all Titanis components |
Titanis.IO | IByteSource and ByteWriter abstractions for reading and writing binary data |
Titanis.Cli | Framework for building command-line utilities with parameters, validation, and CTRL+C handling |
Titanis.Cli.Workflow | Step-based workflow execution with rollback support |
Titanis.Cli.CommonParameters | Shared parameter definitions reused across multiple CLI tools |
Titanis.PduStruct | Attributes that drive the PDU source generator ([PduStruct], [PduField], etc.) |
Titanis.Dynamic | Dynamic dispatch helpers used by DCOM and WMI |
Titanis.Reflection | Reflection utilities |
Titanis.Mocks | Test-oriented mock implementations of Titanis service interfaces |
Crypto packages
| Package | Description |
|---|---|
Titanis.Crypto | Base cryptographic types |
Titanis.Crypto.Aes128Cmac | AES-128-CMAC implementation |
Titanis.Crypto.Des | DES/3DES implementation |
Titanis.Crypto.Md4 | MD4 implementation (used by NTLM) |
Titanis.Crypto.Md5 | MD5 implementation |
Titanis.Crypto.Rc4 | RC4 implementation |
Titanis.Crypto.Sp800_108 | NIST SP 800-108 key derivation |
Format packages
| Package | Description |
|---|---|
Titanis.Asn1 | ASN.1 DER/BER parser and writer |
Network packages
| Package | Description |
|---|---|
Titanis.Net | Socket, name resolution, and credential service interfaces and default implementations |
Titanis.Smb2 | SMB 2.x/3.x client |
Titanis.DceRpc | DCE/RPC client |
Titanis.DceRpc.Core | Core DCE/RPC types |
Titanis.Msrpc | MSRPC protocol bindings (LSA, SAM, SCM, EFS, registry, server service) |
Titanis.Ldap | LDAP client |
Titanis.Socks | SOCKS5 proxy support |
Titanis.Ssh | SSH protocol support |
Security packages
| Package | Description |
|---|---|
Titanis.Security | Core security interfaces and types |
Titanis.Security.Ntlm | NTLM authentication |
Titanis.Security.Kerberos | Kerberos authentication with PKINIT, S4U, and ticket management |
Titanis.Security.Spnego | SPNEGO negotiation wrapping NTLM and Kerberos |
Titanis.Certificates | X.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
<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.