Skip to main content

Fast ESE database parser with Rust backend

Project description

ESE-RS

High-performance Microsoft ESE (Extensible Storage Engine) database parser written in Rust with Python bindings.

Features

  • 🚀 40x faster than Impacket's Python implementations
  • 🦀 Memory-safe Rust implementation
  • 🐍 Python bindings via PyO3
  • 📦 Zero-copy parsing where possible
  • 🔧 Cross-platform (Windows, Linux, macOS)

Installation

Python

pip install ese-parser

Rust

[dependencies]
ese-rs = "0.1"

Quick Start

Python

from ese_parser import EseDatabase

# Open database
db = EseDatabase("database.edb")

# List tables
for table in db.get_tables():
    print(table)

# Read table
records = db.read_table("MSysObjects")
for record in records:
    print(record)

Rust

use ese_rs::Database;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let db = Database::open("database.edb")?;
    
    let mut cursor = db.open_table(b"MSysObjects")?;
    while let Some(record) = cursor.next_row()? {
        println!("{:?}", record);
    }
    
    Ok(())
}

Documentation

Performance

Benchmark parsing 340,288+ records from 3 databases:

  • Python (Impacket): 82.12 seconds
  • Rust (ese-rs): 2.18 seconds
  • Speedup: 37.69x

Supported Database Types

  • Windows Search (.edb)
  • Active Directory (.dit)
  • Exchange (.edb)
  • SRUM (SRUDB.dat)
  • WebCache (WebCacheV*.dat)
  • Any ESE database (Windows 2003+)

License

Dual-licensed under MIT OR Apache-2.0.

Acknowledgments

Based on the ESE format specification and inspired by Impacket's ese.py implementation.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ese_parser-0.1.3.tar.gz (48.6 kB view details)

Uploaded Source

File details

Details for the file ese_parser-0.1.3.tar.gz.

File metadata

  • Download URL: ese_parser-0.1.3.tar.gz
  • Upload date:
  • Size: 48.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.10.2

File hashes

Hashes for ese_parser-0.1.3.tar.gz
Algorithm Hash digest
SHA256 958a3ce73caed3797adedafaaf9902a5b82983a49b48144403150a34052a3833
MD5 7c794d25e4e890475b6234a29958690b
BLAKE2b-256 ac91c184b41ae1595026b7165cc09cf178cf3ad913fff23ddba422f2c1de1f3e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page