All Projects → mattboyer → sqbrite

mattboyer / sqbrite

Licence: MIT license
SQBrite is a data recovery tool for SQLite databases

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to sqbrite

BlockHashLoc
Recover files using lists of blocks hashes, bypassing the File System entirely
Stars: ✭ 45 (+66.67%)
Mutual labels:  forensics, recovery
Fatcat
FAT filesystems explore, extract, repair, and forensic tool
Stars: ✭ 201 (+644.44%)
Mutual labels:  forensics, recovery
Seqbox
A single file container/archive that can be reconstructed even after total loss of file system structures
Stars: ✭ 480 (+1677.78%)
Mutual labels:  forensics, recovery
btrfscue
Recover files from damaged BTRFS filesystems
Stars: ✭ 28 (+3.7%)
Mutual labels:  forensics, recovery
ad-privileged-audit
Provides various Windows Server Active Directory (AD) security-focused reports.
Stars: ✭ 42 (+55.56%)
Mutual labels:  forensics
ingest-file
Ingestors extract the contents of mixed unstructured documents into structured (followthemoney) data.
Stars: ✭ 40 (+48.15%)
Mutual labels:  forensics
Algorithms
Algorithms competition, Leetcode solutions, deep learning algorithms, parallel computing, and SQL solutions.
Stars: ✭ 42 (+55.56%)
Mutual labels:  databases
vminspect
Tools for inspecting disk images
Stars: ✭ 25 (-7.41%)
Mutual labels:  forensics
UnifiedLogReader
A parser for Unified logging tracev3 files
Stars: ✭ 56 (+107.41%)
Mutual labels:  forensics
PSTrace
Trace ScriptBlock execution for powershell v2
Stars: ✭ 38 (+40.74%)
Mutual labels:  forensics
db-wilayah-indonesia
Data wilayah Indonesia meliputi Provinsi, Kabupaten / Kota, Kecamatan, Kelurahan disertai dengan kodepos dan standar singkatan provinsi dan kabupaten / kota.
Stars: ✭ 53 (+96.3%)
Mutual labels:  databases
CC33Z
Curso de Ciência da Computação
Stars: ✭ 50 (+85.19%)
Mutual labels:  databases
fingerprint denoising
U-Net for fingerprint denoising
Stars: ✭ 19 (-29.63%)
Mutual labels:  forensics
nsa-codebreaker-2020
My solutions to the 2020 NSA Codebreaker Challenge
Stars: ✭ 69 (+155.56%)
Mutual labels:  forensics
dreamy-db
🔥 Dreamy-db - A Powerful database for storing, accessing, and managing multiple database.
Stars: ✭ 25 (-7.41%)
Mutual labels:  databases
uac
UAC is a Live Response collection script for Incident Response that makes use of native binaries and tools to automate the collection of AIX, Android, ESXi, FreeBSD, Linux, macOS, NetBSD, NetScaler, OpenBSD and Solaris systems artifacts.
Stars: ✭ 260 (+862.96%)
Mutual labels:  forensics
iTunes Backup Reader
Python 3 Script to parse out iTunes backups
Stars: ✭ 108 (+300%)
Mutual labels:  forensics
DFIR-O365RC
PowerShell module for Office 365 and Azure log collection
Stars: ✭ 158 (+485.19%)
Mutual labels:  forensics
OutlookPasswordRecovery
This tool usable for recover Outlook passwords and it working with all versions. I tested with 2007, 2010, 2013 and 2016.
Stars: ✭ 14 (-48.15%)
Mutual labels:  recovery
Imm2Virtual
This is a GUI (for Windows 64 bit) for a procedure to virtualize your EWF(E01), DD (raw), AFF disk image file without converting it, directly with VirtualBox, forensically proof.
Stars: ✭ 40 (+48.15%)
Mutual labels:  forensics

Bring the shine back into your database with SQBrite!

Continuous Integration status Scrutinizer Code Quality Latest Version Download format Supported Python versions

SQBrite is a data recovery/forensics tool for SQLite databases. It uses a Python 3 implementation of the SQLite on-disk file format to recover deleted table rows.

SQBrite's name is inspired by PL Daniels' undark, but is a completely separate implementation.

SQBrite demo terminal recording

Installing SQBrite

SQBrite requires Python 3. To install, simply run:

$ pip3 install --user sqbrite
$ sqbrite --help

Background

SQLite uses a paginated data model in which each database is a collection of same-size pages. There are several kinds of pages, of which one type (B-Tree Table Leaf pages) contains the starting point for actual data belonging to individual table rows.

When a row is deleted by means of a DELETE FROM table (...) statement, the space occupied by that row's data (a record) within the relevant B-Tree Table Leaf page is marked as free and may subsequently be used to store new records or update existing records. However, it is common to see freed space within a page (a freeblock, in SQLite parlance) left alone after rows are deleted. In that case, it *may* be possible to retrieve deleted row data from within the freeblock.

Heuristics

The SQLite file format doesn't keep track of where deleted records start and end within a leaf page's freeblocks. This means that SQBrite needs a mechanism to find out where record headers start. This is achieved through the use of byte-wise regular expressions specific to tables in known databases. These regular expressions and the offset that separates matches from the first byte in a well-formed header are stored in a user-editable YAML file.

SQBrite aims to ship with heuristics for popular SQLite databases, so do send pull requests if you've got good results with your heuristics.

Features

  • Export all records to CSV or reinject "undeleted" records into a copy of the database
  • Extensible heuristics - just add entries to ~/.local/share/sqbrite/sqbrite.yaml!
  • SQBrite can recover records from within active B-tree table leaf pages or from former table-leaf Freelist pages.
  • Heuristics for iOS and Firefox databases

Limitations

  • SQBrite works better when ptrmap pages are present
  • The undelete subcommand may fail when re-inserting deleted rows into a table causes a constraint violation
  • SQBrite cannot recover records deleted with the SQLite secure_delete pragma enabled
  • Recovering data from overflow pages that have become Freelist leaf pages is not currently supported

Acknowledgments

Big thanks to @tobraha for contributing bugfixes in 2022.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].