# trustedsec/titanis architecture

> Architecture diagram of the GitHub repository trustedsec/titanis, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/trustedsec/titanis
- Repository: https://github.com/trustedsec/titanis

## Overview

Titanis is a cross-platform Windows-protocol library and command-line toolkit. A user invokes a command or PowerShell provider, supplies target and authentication parameters, and receives protocol-operation results; LDAP querying and SMB filesystem access are visible entry points. Its broader documented capabilities include MSRPC, directory replication, remote registry, and Windows authentication mechanisms. The tree and excerpts support these subsystem boundaries, but do not expose all protocol implementations or call sites, so uncertain internal wiring is omitted.

Main entry points: [`src/net/Titanis.DceRpc/Client/RpcClient.cs`](https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc/Client/RpcClient.cs) (RPC Client), [`src/security/Titanis.Security.Spnego/SpnegoClientContext.cs`](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Spnego/SpnegoClientContext.cs) (SPNEGO Negotiation), [`tools/Ldap/QueryCommand.cs`](https://github.com/trustedsec/titanis/blob/public/tools/Ldap/QueryCommand.cs) (LDAP Query), [`src/security/Titanis.Security.Kerberos/KerberosClientContextBase.cs`](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Kerberos/KerberosClientContextBase.cs) (Kerberos)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interfaces["User Interfaces"]
  node_cli["CLI Framework<br/>[Titanis.Cli]"]
  node_ldapcmd["LDAP Query<br/>[QueryCommand.cs]"]
  node_smbps["SMB PowerShell<br/>[SmbProvider.cs]"]
  node_rpccommands["RPC Commands<br/>[RpcCommand.cs]"]
end

subgraph group_protocols["Protocol Clients"]
  node_rpccli["RPC Client<br/>[RpcClient.cs]"]
  node_rpcepm["Endpoint Mapper<br/>[EpmClient.cs]"]
  node_rpcndr["NDR Codec<br/>[NdrEncoder.cs]"]
  node_registry["Registry Clients"]
  node_directory["Directory Replication"]
end

subgraph group_security["Authentication"]
  node_authbase["Auth Context"]
  node_spnego["SPNEGO Negotiation"]
  node_kerberos["Kerberos"]
  node_ntlm["NTLM"]
  node_sspi["Windows SSPI"]
end

subgraph group_foundation["Encoding and Utilities"]
  node_asn1["ASN.1 Encoding<br/>[Asn1DerEncoder.cs]"]
  node_crypto["Cryptography"]
  node_core["Core Utilities<br/>[Titanis.Core]"]
end

node_operator(("Operator"))
node_ldapservice(("LDAP Service"))
node_windows(("Windows Services"))

node_operator -->|"invokes"| node_cli
node_cli -->|"dispatches"| node_ldapcmd
node_operator -->|"uses"| node_smbps
node_ldapcmd -->|"queries"| node_ldapservice
node_rpccommands -->|"invokes"| node_rpccli
node_rpccli -->|"resolves endpoints"| node_rpcepm
node_rpccli -->|"encodes calls"| node_rpcndr
node_rpccli -->|"sends RPC"| node_windows
node_smbps -->|"accesses SMB"| node_windows
node_registry -->|"accesses registry"| node_windows
node_directory -->|"replicates directory"| node_windows
node_spnego -->|"extends"| node_authbase
node_spnego -->|"selects mechanism"| node_kerberos
node_spnego -->|"selects mechanism"| node_ntlm
node_spnego -->|"selects mechanism"| node_sspi
node_kerberos -->|"encodes tokens"| node_asn1
node_ntlm -->|"encodes tokens"| node_asn1
node_kerberos -->|"uses algorithms"| node_crypto
node_ntlm -->|"uses algorithms"| node_crypto
node_rpccli -->|"authenticates"| node_authbase
node_ldapcmd -->|"uses utilities"| node_core

click node_cli "https://github.com/trustedsec/titanis/tree/public/src/base/Titanis.Cli"
click node_ldapcmd "https://github.com/trustedsec/titanis/blob/public/tools/Ldap/QueryCommand.cs"
click node_smbps "https://github.com/trustedsec/titanis/blob/public/src/Titanis.Smb2.PowerShell/SmbProvider.cs"
click node_rpccli "https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc/Client/RpcClient.cs"
click node_rpcepm "https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc.Epm/EpmClient.cs"
click node_rpcndr "https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc.Ndr/NdrEncoder.cs"
click node_rpccommands "https://github.com/trustedsec/titanis/blob/public/src/base/Titanis.Cli.DceRpc/RpcCommand.cs"
click node_authbase "https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security/AuthClientContext.cs"
click node_spnego "https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Spnego/SpnegoClientContext.cs"
click node_kerberos "https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Kerberos/KerberosClientContextBase.cs"
click node_ntlm "https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Ntlm/NtlmClientContext.cs"
click node_sspi "https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Sspi/SspiClientContext.cs"
click node_asn1 "https://github.com/trustedsec/titanis/blob/public/src/formats/Titanis.Asn1/Serialization/Asn1DerEncoder.cs"
click node_crypto "https://github.com/trustedsec/titanis/tree/public/src/crypto"
click node_core "https://github.com/trustedsec/titanis/tree/public/src/base/Titanis.Core"
click node_registry "https://github.com/trustedsec/titanis/tree/public/src/base/Titanis.Winterop.Registry"
click node_directory "https://github.com/trustedsec/titanis/blob/public/src/net/msrpc/Titanis.Msrpc.Msdrsr/DomainControllerInfo.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_ldapcmd,node_smbps,node_rpccommands toneBlue
class node_rpccli,node_rpcepm,node_rpcndr,node_registry,node_directory toneAmber
class node_authbase,node_spnego,node_kerberos,node_ntlm,node_sspi toneMint
class node_asn1,node_crypto,node_core toneRose
class node_operator,node_ldapservice,node_windows toneIndigo
```

## Components

### User Interfaces

- [CLI Framework](https://github.com/trustedsec/titanis/tree/public/src/base/Titanis.Cli): `src/base/Titanis.Cli`
- [LDAP Query](https://github.com/trustedsec/titanis/blob/public/tools/Ldap/QueryCommand.cs): `tools/Ldap/QueryCommand.cs`
- [SMB PowerShell](https://github.com/trustedsec/titanis/blob/public/src/Titanis.Smb2.PowerShell/SmbProvider.cs): `src/Titanis.Smb2.PowerShell/SmbProvider.cs`
- [RPC Commands](https://github.com/trustedsec/titanis/blob/public/src/base/Titanis.Cli.DceRpc/RpcCommand.cs): `src/base/Titanis.Cli.DceRpc/RpcCommand.cs`

### Protocol Clients

- [RPC Client](https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc/Client/RpcClient.cs): `src/net/Titanis.DceRpc/Client/RpcClient.cs`
- [Endpoint Mapper](https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc.Epm/EpmClient.cs): `src/net/Titanis.DceRpc.Epm/EpmClient.cs`
- [NDR Codec](https://github.com/trustedsec/titanis/blob/public/src/net/Titanis.DceRpc.Ndr/NdrEncoder.cs): `src/net/Titanis.DceRpc.Ndr/NdrEncoder.cs`
- [Registry Clients](https://github.com/trustedsec/titanis/tree/public/src/base/Titanis.Winterop.Registry): `src/base/Titanis.Winterop.Registry`
- [Directory Replication](https://github.com/trustedsec/titanis/blob/public/src/net/msrpc/Titanis.Msrpc.Msdrsr/DomainControllerInfo.cs): `src/net/msrpc/Titanis.Msrpc.Msdrsr/DomainControllerInfo.cs`

### Authentication

- [Auth Context](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security/AuthClientContext.cs): `src/security/Titanis.Security/AuthClientContext.cs`
- [SPNEGO Negotiation](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Spnego/SpnegoClientContext.cs): `src/security/Titanis.Security.Spnego/SpnegoClientContext.cs`
- [Kerberos](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Kerberos/KerberosClientContextBase.cs): `src/security/Titanis.Security.Kerberos/KerberosClientContextBase.cs`
- [NTLM](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Ntlm/NtlmClientContext.cs): `src/security/Titanis.Security.Ntlm/NtlmClientContext.cs`
- [Windows SSPI](https://github.com/trustedsec/titanis/blob/public/src/security/Titanis.Security.Sspi/SspiClientContext.cs): `src/security/Titanis.Security.Sspi/SspiClientContext.cs`

### Encoding and Utilities

- [ASN.1 Encoding](https://github.com/trustedsec/titanis/blob/public/src/formats/Titanis.Asn1/Serialization/Asn1DerEncoder.cs): `src/formats/Titanis.Asn1/Serialization/Asn1DerEncoder.cs`
- [Cryptography](https://github.com/trustedsec/titanis/tree/public/src/crypto): `src/crypto`
- [Core Utilities](https://github.com/trustedsec/titanis/tree/public/src/base/Titanis.Core): `src/base/Titanis.Core`

### Other components

- **Operator**
- **LDAP Service**
- **Windows Services**

## Connections

- Operator → CLI Framework: invokes
- CLI Framework → LDAP Query: dispatches
- Operator → SMB PowerShell: uses
- LDAP Query → LDAP Service: queries
- RPC Commands → RPC Client: invokes
- RPC Client → Endpoint Mapper: resolves endpoints
- RPC Client → NDR Codec: encodes calls
- RPC Client → Windows Services: sends RPC
- SMB PowerShell → Windows Services: accesses SMB
- Registry Clients → Windows Services: accesses registry
- Directory Replication → Windows Services: replicates directory
- SPNEGO Negotiation → Auth Context: extends
- SPNEGO Negotiation → Kerberos: selects mechanism
- SPNEGO Negotiation → NTLM: selects mechanism
- SPNEGO Negotiation → Windows SSPI: selects mechanism
- Kerberos → ASN.1 Encoding: encodes tokens
- NTLM → ASN.1 Encoding: encodes tokens
- Kerberos → Cryptography: uses algorithms
- NTLM → Cryptography: uses algorithms
- RPC Client → Auth Context: authenticates
- LDAP Query → Core Utilities: uses utilities
