eBooks unter LINUX nutzen

Posted on Di 11 Februar 2025 in Computer & Electronics

Wie Ihr sicher schon mitbekommen habt, interessiere ich mich für Elektronik und da bleibt es nicht aus, dass ich mir Bücher zum Thema kaufe. Die meisten Bücher meiner Elektronik-Bibliothek sind auf Englisch, denn irgendwie schaffen es deutsche Autoren scheinbar nicht, den langatmig belehrenden Stil von Schulbüchern der 50er Jahre abzustreifen. Englische Werke sind in der Regel viel zugänglicher, ansprechender illustriert und einfach angenehmer zu lesen. Allerdings gibt es auch Ausnahmen; so stehen seit vielen Jahren ein paar Bücher aus der Reihe "Beuth Elektronik" in meinem Schrank, die ich recht gut fand.

Kein gutes Werk bleibt ungestraft

Nun juckte es mich neulich, mal wieder in den dritten Band (Grundschaltungen) hineinzuschauen und ich finde das Buch nach wie vor gut (ich habe die 8. Auflage, aktuell ist die 18.). Nun liest man so ein Buch ja normalerweise nicht von Anfang bis Ende, wie einen Roman, sondern schlägt es eher gezielt auf, wenn man ein konkretes Problem hat und da wünsche ich mir oft ein PDF. Das kann man schnell durchsuchen und ich kann es immer auf meinem Rechner haben und auch unterwegs hineinschauen. Also habe ich ein wenig im Netz recherchiert und bin auch schnell fündig geworden. Buecher.de hat es im Angebot:

Sehr gut. Und umso besser, dass es nicht dieses blöde epub Format ist, sondern ein richtiges PDF! Und 28€ ist es mir wert auch wenn ich das Buch eigentlich schon habe. Also schnell auf Bestellen klicken, bezahlen und sich auf den Download freuen.

Umso größer war die Ernüchterung, als ich das File vor mir hatte:

❯ ls
Beuth_Grundschaltungen_7968143316389.acsm

acsm – WTF!?!

Was in aller Welt ist ein acsm File? Okular oder Atril können es jedenfalls nicht öffnen und das System hat keinen sinnvollen Vorschlag, womit man das lesen kann. Bei genauerer Betrachtung ist das auch kein Wunder, denn mit 1167 Byte ist es eindeutig zu klein, um tatsächlich ein Buch zu enthalten. Was also ist das?

❯ file Beuth_Grundschaltungen_7968143316389.acsm
Beuth_Grundschaltungen_7968143316389.acsm: ASCII text

Aha. Text also. Mal reinschauen:

<fulfillmentToken fulfillmentType="buy" xmlns="http://ns.adobe.com/adept" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <distributor>urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</distributor>
    <operatorURL>https://acs.pageplace.de/fulfillment</operatorURL>
    <expiration>2025-03-10T20:32:27Z</expiration>
    <transaction>SHBUECHER.BWS_xxxxxxxxx.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</transaction>
    <resourceItemInfo>
        <resource>urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</resource>
        <resourceItem>0</resourceItem>
        <metadata>
            <dc:title xmlns:dc="http://purl.org/dc/elements/1.1/">Grundschaltungen</dc:title>
            <dc:format xmlns:dc="http://purl.org/dc/elements/1.1/">application/pdf</dc:format>
            <dc:identifier xmlns:dc="http://purl.org/dc/elements/1.1/">urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</dc:identifier>
        </metadata>
        <src>https://api.pageplace.de/v1/files/adrm/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/DT0xxx.xxxxxxxxxxxxx_xxxxxxxxx.pdf</src>
        <downloadType>simple</downloadType>
    </resourceItemInfo>
    <hmac>xxxxxxxxxxxxxxxxxxxxxxxxxxxx</hmac>
</fulfillmentToken>

Die ganzen UUIDs und ähnliches habe ich zensiert, da zu vermuten ist, dass das mein Zugangs-Schlüssel ist. Das erste das mir ins Auge sticht ist, dass da ein Expiration Datum drin ist – in 1 Monat!?! Soll das heißen, dass ich danach den Zugriff verliere? Oder zumindest der erneute Download nicht mehr möglich ist? Das wäre sehr problematisch, denn was, wenn ich mal einen neuen Rechner habe und das File irgendwo in den Tiefen des Adobe Systems verborgen ist und ich garkein echtes PDF habe, das sich in meinem Backup findet?

Also tun wir das was eigentlich nie jemand tut: wir lesen das Kleingedruckte.

Na toll – da bin ich auf so ein blödes Digital Restriction Management reingefallen. Also kein PDF. Stattdessen ein Key-File für irgendein System von Adobe, das (selbstverständlich) nicht für LINUX zur Verfügung steht.

Also habe ich Buecher.de kontaktiert und sinngemäß wurde mir mitgeteilt:

ätsche-bätsch ist kein richtiges PDF. Stand ja auch da, dass mit "PDF" kein PDF gemeint ist, sondern ein DRM Dings. Wer lesen kann ist echt im Vorteil.

Bin ich hier bei den Simpsons oder was?

Also habe ich zurückgeschrieben, dass ich das sehr betrüblich finde und man halt nicht "PDF" schreiben soll, wenn man das garnicht so meint. Und überhaupt würde ich das Buch gerne zurückgeben, wenn ich es schon nicht nutzen kann.

Aber da habe ich wenig Hoffnung. Grrrrr.

Hilfe zur Selbsthilfe

Aber was kann man da sonst noch tun?

  1. Laute Flüche und Verwünschungen ausstoßen – das erleichtert.
  2. Sich ein bisschen mit dem DRM System befassen

Zunächst habe ich einen Online-Konverter probiert, der aber nur endlos eine "Bitte Warten" Animation gezeigt hat. Nach 10 Minuten hatte ich keine Lust mehr zu warten.

Also habe ich mich dann schnell Punkt 2 zugewandt und ein wenig recherchiert. Es scheint verschiedene Wege zu geben – der einfachste ist wohl unter Windows, denn soweit ich das lesen konnte bietet dieses Adobe Digital Editions Ding die Möglichkeit, das PDF (oder in anderen Fällen ePub) herunterzuladen und lokal zu speichern. Vermutlich braucht man dann immernoch das ACSM File oder ein Passwort oder so, aber immerhin kann man das PDF speichern und verliert es nicht. Aber das geht eben nur unter Windows oder MacOS.

Also erforschen wir mal, ob wir das unter LINUX hinkriegen.

Als erstes brauchen wir libgourou. Leider gibt es kein fertiges Debian Package, also selber bauen.

Zunächst müssen wir ein paar Dependencies installieren:

sudo apt install libcurl4-openssl-dev openssl libzip-dev libpugixml1v5-dev

Und dann klonen wir das git repository:

git clone https://forge.soutade.fr/soutade/libgourou.git

Und versuchen das zu kompilieren:

cd libgourou
make all

Doch leider:

Building libgourou 0.8.6
mkdir lib
./scripts/setup.sh
Cloning into 'lib/updfparser'...
fatal: remote error: access denied or repository not exported: /updfparser.git
./scripts/setup.sh: line 6: pushd: lib/updfparser: No such file or directory
make[1]: Entering directory '/home/pagel/tmp/libgourou'
Building libgourou 0.8.6
mkdir obj
g++ -Wall -fPIC -I./include -I./usr/include/pugixml -I./lib/updfparser/include -O2 -c src/libgourou.cpp -o obj/libgourou.o
src/libgourou.cpp:25:10: fatal error: uPDFParser.h: No such file or directory
   25 | #include <uPDFParser.h>
      |          ^~~~~~~~~~~~~~
compilation terminated.
make[1]: *** [Makefile:72: obj/libgourou.o] Error 1
make[1]: Leaving directory '/home/pagel/tmp/libgourou'
./scripts/setup.sh: line 8: popd: directory stack empty
make: *** [Makefile:63: lib] Error 1

Hm. Nach kurzer Fehlersuche wird klar: da ist ein Fehler in scripts/setup.sh. dort steht in Zeile 5:

git clone git://soutade.fr/updfparser.git lib/updfparser

Der Pfad stimmt nicht. Korrekt muss es heißen:

git clone git://soutade.fr/soutade/updfparser.git lib/updfparser

(Inzwischen ist das Problem im repository korrigiert worden.)

Also neuer Versuch:

make ultraclean
make all

Passt – der Build läuft brav durch. Sehr schön.

Die Tools liegen nun unter ./utils. Nun könnte man das ganze mittels sudo make install installieren, aber eigentlich glaube ich nicht, dass ich das so oft brauche. Also einfach lokal laufen lassen – ohne installation. Damit die gourou library von den Tools gefunden wird müssen wir erstmal eine Umgebungsvariable setzen:

LD_LIBRARY_PATH=$PWD
export LD_LIBRARY_PATH

Nun können wir die tools aufrufen:

❯ ./utils/adept_activate
adept_activate create new device files used by ADEPT DRM

Usage: adept_activate OPTIONS

Global Options:
  -a|--anonymous    Anonymous account, no need for username/password (Use it only with a DRM removal software)
  -u|--username     AdobeID username (ie adobe.com email account)
  -p|--password     AdobeID password (asked if not set via command line)
  -O|--output-dir   Optional output directory were to put result (default ./.adept). This directory must not already exists
  -H|--hobbes-version   Force RMSDK version to a specific value (default: version of current librmsdk)
  -r|--random-serial    Generate a random device serial (if not set, it will be dependent of your current configuration)
  -v|--verbose      Increase verbosity, can be set multiple times
  -V|--version      Display libgourou version
  -h|--help     This help

Sehr gut.

Als nächstes brauche ich einen Account bei diesem Adobe-Dienst. Dazu muss ich mich hier registrieren. Nun können wir ein config File erstellen:

❯ ./utils/adept_activate -u phil@techbotch.org
Enter password:
phil@techbotch.org fully signed and device activated in /home/phil/.config/adept/

Als nächstes laden wir das verschlüsselte PDF herunter:

❯ ./utils/acsmdownloader ~/media/books/electronics/Beuth_Grundschaltungen_9783834361769.acsm
Download 100%
Created Grundschaltungen Elektronik 3.pdf

Das PDF file ist passwortgeschützt. D.h. Okular & Co können es im Prinzip öffnen, aber Ihr müsst jedes mal das Passwort eingeben. Das Passwort, dass Ihr nicht kennt. Nun kann man das sicher aus den Daten im acsm File konstruieren, aber dazu habe ich gerade keine Lust.

Einfacher ist es, den Passwortschutz einfach zu entfernen:

❯ ./utils/adept_remove Grundschaltungen\ Elektronik\ 3.pdf -o Grundschaltungen\ Elektronik\ 3_unlocked.pdf
DRM removed into new file Grundschaltungen Elektronik 3_unlocked.pdf

Und schon kann man das Ganze ohne lästige Passworteingabe nutzen. Und um sicherzustellen, dass ihr das gekaufte PDF nicht versehentlich verbreitet, könnt Ihr mit pdftk wieder ein neues Passwort vergeben, das Ihr dann kennt:

pdftk Grundschaltungen\ Elektronik\ 3_unlocked.pdf output Grundschaltungen\ Elektronik\ 3_locked.pdf user_pwd GreaTsEaCret

Sehr schön. Nun bin ich wieder versöhnt und kann das Buch so verwenden, wie gedacht.

Lustigerweise hat sich Buecher.de gerade als ich fertig war wieder gemeldet: Sie würden das Buch kulanzweise zurücknehmen und mir eine Gutschrift geben. Ich glaube das wird nicht nötig sein und sie werden die Begründung nicht gut finden.

Immerhin ist das Buch immer noch so gut wie früher – nur die Abbildungen sind eine Katastrophe: Die wurden vom Verlag bei niedriger Auflösung und hoher Kompression als JPG eingebunden und sind entsprechend unscharf und voller Kompressionsartefakte. Da waren echte Profis am Werk ...

Darf man das?

Schwierige Frage. Einerseits haben die großen Medienkonzerne ja durchgesetzt, dass die Umgehung von derartigen Nutzungseinschränkungen als Kaptitalverbrechen gilt und mit dem Tode bestraft werden sollte. Andererseits gibt es da die Sache mit der Privatkopie. Wobei ich ja nicht mal eine Kopie gemacht, sondern einfach das Produkt nutzbar gemacht habe. D.h. wenn Ihr eine kompetente Antwort auf die Fragen haben wollt, müsst Ihr mit einem Anwalt reden. Ob die Antwort verständlich ausfällt wage ich nicht zu prognostizieren.