# 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)
