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)
- 🔍 Forensic carving for recovering UTF-16LE strings from unreferenced page slack
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)
# Forensic carving (UTF-16LE)
# Note: carved results may come from page slack and not correspond to live records.
hits = db.carve_utf16le_strings_scoped("slack", "hopto.org", min_chars=6, max_hits=50)
for h in hits:
print(h)
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.
Metadata
Release files for ese-parser 0.1.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
Total release size: 3.6 MB
Release files / ese_parser-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | ese_parser-0.1.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 467.4 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
6734d402f3cef892d7d6c575c50a77296f9a8a96e523a5a19fec88379694cf82
|
|
BLAKE2b-256 checksum How to use checksums |
957e2d6a407b2c6a6146d2cb96a613669c4e306d3fdae64f61043883ff532ec2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | ese_parser-0.1.8-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 446.6 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f74df459568815dd5a1d231194271b5a31fd71bb3da4642ad44da6bad42f7d2e
|
|
BLAKE2b-256 checksum How to use checksums |
a780189a5ae6695339a3192802bc33215d58dd8f6efddc5db6115d10c863ef24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | ese_parser-0.1.8-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 460.6 kB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
d6e53022731caaa883316b1e9deb2ed925f2ffad927fbb22dd4a54aaa7ece834
|
|
BLAKE2b-256 checksum How to use checksums |
c719766adf0f89e2429671f7355b5f2bfb6b8eb373c5b966480ea9e428ba3037
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp310-cp310-win_amd64.whl
| Download URL | ese_parser-0.1.8-cp310-cp310-win_amd64.whl |
|---|---|
| Size | 369.5 kB |
| Tags | CPython 3.10 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
31a5c624e7f05af550072c05d62d10e5a3bac53cacb505ff78f73ceef1cfdd9b
|
|
BLAKE2b-256 checksum How to use checksums |
4287d7abce63a2d4d515b69f00a89fce12fb8294bd2e0a605e1ee3b9026ab5cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | ese_parser-0.1.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 475.1 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
dc1ccc265e90a38f3f0e1bf64bcf611b009ba046a17ca86ff38ad8c36bb36c22
|
|
BLAKE2b-256 checksum How to use checksums |
416b79697903cb55f286ec332e60ab0866fd02188eeb781d7a4f3514a12bd8d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | ese_parser-0.1.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 470.3 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ ARM64 |
|
SHA-256 checksum How to use checksums |
7de6c52677e6ddcf64be2c45b4d07a3344ad5afc878b682da1a77ef33e8a9362
|
|
BLAKE2b-256 checksum How to use checksums |
899b98581f0dd020fc11e60ade25991d951b03dfeb0a98e2b7d700f8b52851d0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp310-cp310-macosx_11_0_arm64.whl
| Download URL | ese_parser-0.1.8-cp310-cp310-macosx_11_0_arm64.whl |
|---|---|
| Size | 449.6 kB |
| Tags | CPython 3.10 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
49aa922357341f4adf71712f9cf0132bbfe6f9cf96fc8487b3e418f83d7ed843
|
|
BLAKE2b-256 checksum How to use checksums |
8764a8be110dbb6507dd0fa60464fe51c20f0d9e9c73e5f6d31e76aa6b6ebc86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Release files / ese_parser-0.1.8-cp310-cp310-macosx_10_12_x86_64.whl
| Download URL | ese_parser-0.1.8-cp310-cp310-macosx_10_12_x86_64.whl |
|---|---|
| Size | 463.7 kB |
| Tags | CPython 3.10 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
18c9d940af431a5b79abb98f9fce98883573279c05d85b995cfdb5e1609a2ca4
|
|
BLAKE2b-256 checksum How to use checksums |
79d11ed6836811c949252f7204edea26918aedd7f76b5b4e669a9019038eb480
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
maturin/1.13.1
|
Security for ese-parser 0.1.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.