intial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# 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)
|
||||
Reference in New Issue
Block a user