# Kobo Highlight Exfiltrator A simple, statically-linked binary to extract highlights from your Kobo e-reader. ## Features - **Zero dependencies**: Fully statically linked with musl libc and SQLite - **Cross-platform**: Builds for both x86_64 (development) and ARM (Kobo) - **Small binary**: ~780KB for ARM release build - **Simple**: Just point it at your KoboReader.sqlite database ## Building ### For local testing (x86_64) ```bash zig build ./zig-out/bin/kb_exfiltrator local-dev.sqlite ``` ### For Kobo (ARM) ```bash ./build-kobo.sh # or manually: zig build -Dtarget=arm-linux-musleabihf -Doptimize=ReleaseSmall ``` ## Usage on Kobo 1. Copy `zig-out/bin/kb_exfiltrator` to your Kobo (via USB or SSH) 2. Run: ```bash ./kb_exfiltrator /mnt/onboard/.kobo/KoboReader.sqlite ``` 3. Or save to a file: ```bash ./kb_exfiltrator /mnt/onboard/.kobo/KoboReader.sqlite > highlights.txt ``` ## How It Works The program: 1. Opens the SQLite database at the path you provide 2. Queries the `Bookmark` table for all highlights (entries with non-NULL `Text`) 3. Displays each highlight with: - Date created - Book identifier (ContentID) - Highlight text - Any annotations/notes you added ## Dependencies All dependencies are bundled into the binary: - SQLite 3.48.0 (amalgamation build) - musl libc (for ARM target) ## Requirements - Zig 0.15.2 or later ## Notes - The binary is statically linked, so you can copy just the single file to your Kobo - Uses musl libc for smaller binary size and better portability - SQLite is compiled with: - `SQLITE_THREADSAFE=0`: No threading support (smaller, faster) - `SQLITE_OMIT_LOAD_EXTENSION`: No dynamic extensions (more secure)