Skip to main content

Crate hermes_tdata

Crate hermes_tdata 

Source
Expand description

Pure Rust parser for Telegram Desktop tdata folders. Converts tdata to grammers sessions.

Low-level binary parser requiring direct byte indexing, arithmetic for offsets, and integer type conversions.

§Features

  • Parse tdata folders from Telegram Desktop
  • Extract authorization keys (auth_key) and datacenter IDs
  • Convert to grammers session format
  • Support for password-protected tdata (Local Passcode)
  • Zero Python dependencies

§Example

use hermes_tdata::TDesktop;

fn main() -> Result<(), hermes_tdata::Error> {
    // Load tdata from default location
    let tdesktop = TDesktop::from_path("/path/to/tdata")?;
     
    // Get the main account's session
    if let Some(account) = tdesktop.main_account() {
        let session = account.to_grammers_session()?;
        println!("DC ID: {}", account.dc_id());
    }
     
    Ok(())
}

Re-exports§

pub use crypto::AuthKey;
pub use crypto::LOCAL_ENCRYPT_SALT_SIZE;
pub use qdatastream::QDataStream;
pub use qdatastream::QT_VERSION_5_1;

Modules§

crypto
Cryptographic operations for tdata (PBKDF2, AES-IGE, checksums) Cryptographic operations for tdata
qdatastream
QDataStream parser for Qt binary serialization format QDataStream parser implementation

Structs§

Account
A Telegram account extracted from tdata
TDesktop
Telegram Desktop client representation
TDesktopBuilder
Builder for TDesktop with more control over loading

Enums§

Error
Errors that can occur during tdata parsing

Constants§

AUTH_KEY_SIZE
Auth key size in bytes (256 bytes = 2048 bits)
DEFAULT_KEY_FILE
Default key file name
MAX_ACCOUNTS
Maximum number of accounts supported by Telegram Desktop

Type Aliases§

Result
Result type alias for hermes-tdata operations