ibiRecovery

ibi Database Schema & Recovery Tools - Community Resource

🎯 Purpose

This repository contains complete reverse-engineered documentation for ibi device databases, enabling the data recovery community to build tools for recovering family photos and videos from ibi devices.

Context: SanDisk officially discontinued ibi support on August 31, 2024, leaving thousands of families unable to access their photos. This open-source toolkit provides the free alternative to expensive commercial recovery services.

📋 What’s Included

1. Complete Schema Documentation

2. Analysis & Insights

3. Working Recovery Tools

🚀 Quick Start for Tool Developers

Basic Database Parsing

from docs.reference_implementation import IbiDatabaseParser

# Initialize parser
parser = IbiDatabaseParser('path/to/index.db', 'path/to/files/')
parser.connect()

# Get all files with metadata
files = parser.get_all_files()

# Get AI content tags
tags = parser.get_content_tags_summary()

# Verify file recovery rate
recovery = parser.verify_file_recovery_rate()
print(f"Recovery rate: {recovery['recovery_rate']:.1f}%")

File Storage Access

# ibi uses this formula for file storage:
content_id = "jT9JduP8vIHpwuY32gLQ"
file_path = f"/files/{content_id[0]}/{content_id}"
# Results in: /files/j/jT9JduP8vIHpwuY32gLQ

Key Database Queries

-- Get all recoverable files
SELECT f.name, f.contentID, f.mimeType
FROM Files f
WHERE f.contentID IS NOT NULL;

-- Get AI content tags
SELECT f.name, ft.tag
FROM Files f
JOIN FilesTags ft ON f.id = ft.fileID
WHERE ft.auto = 1;

-- Get album organization
SELECT fg.name, f.name
FROM FileGroups fg
JOIN FileGroupFiles fgf ON fg.id = fgf.fileGroupID
JOIN Files f ON fgf.fileID = f.id;

🎁 What Makes This Valuable

For Data Recovery Professionals:

For Families:

For Developers:

📊 Typical Dataset Statistics

🛠️ Tool Development Guidelines

✅ Include (Portable Data):

❌ Exclude (ibi-Specific Data):

📄 Standard Export Formats

Adobe Lightroom

Filename,Keywords,Caption,Album,GPS
IMG_001.jpg,"person; child; beach","Family vacation","Hawaii 2010","21.3099,-157.8581"

digiKam Hierarchical Tags

Name,Tags,Album,Date,Latitude,Longitude
IMG_001.jpg,"People/person|Places/Beach/beach","Hawaii 2010","2018-03-15",21.3099,-157.8581

XMP Sidecar Files

<?xml version="1.0" encoding="UTF-8"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/">
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/">
      <dc:subject>
        <rdf:Bag>
          <rdf:li>person</rdf:li>
          <rdf:li>beach</rdf:li>
        </rdf:Bag>
      </dc:subject>
    </rdf:Description>
  </rdf:RDF>
</x:xmpmeta>

🔬 Research Applications

This schema enables research into:

📜 License & Usage

GPLv3 - Use freely with source code sharing:

Source code sharing required for any derivative works or improvements.

🤝 Contributing to the Community

Share Your Discoveries

Extend the Tools

Research Applications

📞 Community & Support

For Data Recovery Professionals:

For Developers:

For Researchers:

🎯 Impact

This documentation transforms ibi data recovery from “just getting files back” to “complete photo library reconstruction” with:

Result: Families get back not just their photos, but their organized, searchable photo libraries.