laps-rs

Crates.iolaps-rs
lib.rslaps-rs
version0.1.2
sourcesrc
created_at2024-06-30 17:31:38.879446
updated_at2024-07-01 11:01:46.905657
descriptionLibrary for the retrieval of LAPS passwords
homepage
repositoryhttps://github.com/jschpp/laps-rs
max_upload_size
id1288101
size37,313
Johannes Schöpp (jschpp)

documentation

README

laps-rs

THIS CRATE IS WINDOWS ONLY!

Library for the retrieval of LAPS passwords

Central for that are the two structs [AdConnection] and [AdConnectionAsync] which hold a connection to the Active Directory and implement try_search()

Usage

In Cargo.toml:

[dependencies.laps_rs]
version = "0.1.0"

Example

Both examples perform a search for "computername"

Synchronous search

use laps_rs::{AdSettings, AdConnection, LdapProtocol, Scope};

let settings = AdSettings::new(
   "dc.test.internal",
   636,
   LdapProtocol::Secure,
   "OU=path,OU=to,OU=computers,DC=test,DC=internal",
   Scope::Subtree,
);
let mut con: AdConnection = settings.connect()?;
let password = con.try_search("computername", &settings)?;
println!("{password:?}");

See also [AdConnection::try_search()]

Asynchronous search

use laps_rs::{AdSettings, AdConnectionAsync, LdapProtocol, Scope};

let settings = AdSettings::new(
   "dc.test.internal",
   636,
   LdapProtocol::Secure,
   "OU=path,OU=to,OU=computers,DC=test,DC=internal",
   Scope::Subtree,
);
let mut con: AdConnectionAsync = settings
   .connect_async()
   .await?;
let password = con
   .try_search("computername", &settings)
   .await?;
println!("{password:?}");

See also [AdConnectionAsync::try_search()]

Quirks

Since it can be the case that both encrypted and unencrypted LAPS data exists for the same computer [process_ldap_search_result()] will prefer the encrypted information in case of an identical password expiration.

In any other case the password with the longer expiration will be returned.

Current Version

0.1.2

Commit count: 67

cargo fmt