Files
kb_exfiltrator/README.md
T
2025-12-01 12:36:35 -05:00

1.7 KiB

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)

zig build
./zig-out/bin/kb_exfiltrator local-dev.sqlite

For Kobo (ARM)

./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:

    ./kb_exfiltrator /mnt/onboard/.kobo/KoboReader.sqlite
    
  3. Or save to a file:

    ./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)