infrastructure tier

infrastructure-registry-forensics

Thin bounded wrapper around hivex: parses Windows registry hive exports into the RegistryRecord type infrastructure-host-forensics' rule engine already consumes, so rules that were written and tested but never had an input source can run against a real hive

Thin bounded wrapper around hivex: parses Windows registry hive exports into the RegistryRecord type infrastructure-host-forensics' rule engine already consumes, so rules that were written and tested but never had an input source can run against a real hive

Tierinfrastructure
Roleadapter
Pathcrates/infrastructure/registry-forensics
Edition2021
Targetsinfrastructure_registry_forensics, evtx_export, reg_export
Public items3 across 0 modules
Tests13

What it is for

infrastructure-registry-forensics — the input infrastructure-host-forensics never had.

That crate calls itself a pure rule engine over already-parsed registry records and puts the parser out of scope. Nothing in the workspace filled the gap, so usbstor_history, ifeo_debugger_present and credential_enrollment were written, tested, and unreachable on a real machine. This crate parses what hivex emits into the RegistryRecord those rules consume.

Same shape as infrastructure-memory-forensics around Volatility3 and infrastructure-firmware-forensics around CHIPSEC: a pure parser that carries the whole contract and is unit-tested against captured output, plus a thin bounded subprocess edge. Nothing here interprets. A record is a fact and a citation; whether it means anything is a question for a human reading it.

Works against a mounted image, not a running machine — the hives are files, so analysis happens offline against a verified capture and the subject is never booted.

Capabilities

RegistryForensicsError

infrastructure-registry-forensics — the input infrastructure-host-forensics never had.

Item
pub enum RegistryForensicsError
fn parse_evtx_xml(xml : & str) -> Result <Vec <LogonEventRecord>, RegistryForensicsError>
fn parse_reg_export(hive : & str, export : & str,) -> Result <Vec <RegistryRecord>, RegistryForensicsError>

How to use it

No examples/ target and no doctest in this crate's rustdoc. The tests listed under Verification are the closest executable usage.

Module structure

No public modules: the crate root is its whole surface.

Public surface

`crate root`

ItemWhat it is
pub enum RegistryForensicsErrorWhat can go wrong turning a hive export into records.
fn parse_evtx_xml(xml : & str) -> Result <Vec <LogonEventRecord>, RegistryForensicsError>Parse evtxexport -f xml output into logon records
fn parse_reg_export(hive : & str, export : & str,) -> Result <Vec <RegistryRecord>, RegistryForensicsError>Parse hivexregedit --export output into records

No pub use re-exports: every item above is declared in this crate.

Boundary

Reaches into foundation.

Shares tier infrastructure with 82 other crates: infrastructure-acquire, infrastructure-adapters-google-calendar, infrastructure-adapters-google-gmail, infrastructure-adapters-google-places, infrastructure-adapters-google-trends, infrastructure-adapters-shodan, infrastructure-adapters-yelp, infrastructure-agent, … (82 total).

_What this crate deliberately does NOT own is a judgment. No committed registry records one for it, so none is stated here._

Where it sits

Tier (ontology)infrastructure
Architectural role (taxonomy)adapter
Locationcrates/infrastructure/registry-forensics
Vocabulary in force (lexicon)current

Tier flow. Which tiers this crate's own edges cross.

flowchart LR
  n_infrastructure["infrastructure"] --> n_foundation["foundation"]

Dependencies

Runtime, in this workspace.

CrateTierOptionalOnly on
`foundation-bounded-io`foundationnoalways
`infrastructure-host-forensics`infrastructurenoalways

Runtime, from outside the workspace.

CrateRequirementFeaturesOptionalOnly on
chrono^0.4serdenoalways
thiserror^2noalways

Development. None.

Build. None.

Depended on by. 1 workspace crate.

Signal flow — what reaches this crate, and what it reaches.

flowchart LR
  n_tools_ir_triage["tools-ir-triage"] -->|uses| SELF
  SELF["infrastructure-registry-forensics"]
  SELF -->|runtime| n_foundation_bounded_io["foundation-bounded-io"]
  SELF -->|runtime| n_infrastructure_host_forensics["infrastructure-host-forensics"]
  classDef self fill:#1f883d,stroke:#1f883d,color:#fff;
  class SELF self;

Feature flags

No Cargo features are defined: every capability is unconditional, so no consumer can receive a half-wired crate.

Targets

KindNameSource
libinfrastructure_registry_forensics`src/lib.rs`
testevtx_export`tests/evtx_export.rs`
testreg_export`tests/reg_export.rs`

Error model

Error typeNamed by
RegistryForensicsErrorparse_evtx_xml, parse_reg_export

Operational characteristics

PropertyEvidence
async public surfacenone detected
async runtimenone detected
database accessnone detected
network I/Onone detected
unsafe codenone detected
environment variablesnone detected

No unsafe block, unsafe fn, unsafe impl or unsafe trait was found by the parser anywhere in this crate's source.

Configuration

No environment variable is read with a literal name anywhere in this crate. A variable whose key is computed at run time cannot be listed here, and is not claimed to be absent.

1 workspace crate depends on this one: tools-ir-triage.

Verification

KindCount
Unit tests0
Integration tests13
Examples0
Doctests0

Evidence by module. How often each public module is named by something executable.

ModuleTestsExamplesConsumers
crate root302

What the tests establish, by name:

Documentation coverage

MeasureDocumentedTotal
Public items with rustdoc33
Public modules with a //! block00
pie showData
    title Public items with rustdoc
    "Documented" : 3
    "No rustdoc detected" : 0

Metrics

MetricValue
Rust source files1
Source lines348
Code lines245
Public API items3
Public modules0
Tests13
Examples0
Cargo features0
Direct runtime dependencies4
Workspace reverse dependencies1
pie showData
    title Public API by kind
    "enum" : 1
    "function" : 2
pie showData
    title Rust source composition
    "Code" : 245
    "Blank or comment" : 103

Generation

Rendered by tools-corpus corpus readme from repository evidence alone, renderer schema 2, lexicon current. No model, network service or database was consulted. Regenerate with tools-corpus corpus readme --write; verify with --check.

All infrastructure · Manual