Legimi na Kindle #3 – Watermark

4 min.

Na stronie Legimi watermark w sekcji „Jak działa watermark?” możemy przeczytać:

Niewidoczny znak wodny – w pliku zakodowane są informacje o nabywcy w sposób niejawny z wykorzystaniem zaawansowanych technik. Użytkownik nie będzie w stanie usunąć tych informacji pomimo manipulowania zawartością ebooka.

oraz

Informacja widoczna – na początku książki zamieszczana jest wzmianka o zastosowanym zabezpieczeniu pliku.

Trochę niżej zaś znajdziemy informację, że z tego zabezpieczenia korzystają różne podmioty np. Empik, Woblink, wydawnictwo KNV, Virtualo czy WSiP. Występuje więc dość powszechnie.

Czym jest watermark?

Po polsku – znak wodny.

W teorii: skuteczne oznaczenie właściciela pliku w neutralnym miejscu, nie mające wpływu na wygląd i działanie e-booka.

W praktyce: kolejne zabezpieczenie, które dokucza jedynie legalnym nabywcom. Często uszkadza e-booka, dość powszechnie psując formatowanie. Zmanipulujemy zawartość e-booka tak, by pozbyć się tych „śmieci”.

Watermark w Legimi dla Kindle

Dzięki wsparciu 6 anonimowych informatorów przeanalizowałem różnice w egzemplarzach tego samego e-booka pobranego przez różne osoby. Poniżej przedstawię zauważone ślady stosowania znaku wodnego.

Na początek plik MOBI, odchudzony z DRM-u (metodą omówioną w poprzednim artykule) rozpakowujemy narzędziem kindleUnpack. Może to być wtyczka dla calibre lub skrypt uruchomiony niezależnie.

W tropieniu watermarku skoncentruję się na e-booku „Azyl” Jarosława Grzędowicza (porównanie 4 wersji), a dodatkowo wskażę alternatywne elementy znalezione w „Bastionie” Stephena Kinga oraz książkach z komisarzem Forstem (Remigiusza Mroza).

Oznaczenia w obrazkach

W katalogu mobi7/Images/ znajdują się grafiki występujące w e-booku. W przypadku wszystkich badanych książek, nie stwierdzono trefnych, ale tu trzeba uważać.

Oczywiście jeśli w e-booku jest niewielka liczba obrazków, to najbezpieczniej jest je wszystkie wymienić. Gdy całość ogranicza się do okładki to nie ma żadnego problemu – pobieramy alternatywną (może być identyczna) z internetu i zapisujemy pod odpowiednią nazwą.

W ekstremalnych przypadkach można zrobić zwyczajnie zdjęcie każdego obrazka i zapisanie jako nowe pliki – metoda ciekawa gdy mamy dobrej jakości aparat i uzyskane grafiki nie będą zauważalnie gorszej jakości niż oryginalne.

OPF

Na „dzień dobry” wycinamy wszystko od linijki <!-- BEGIN INFORMATION ONLY do linijki END INFORMATION ONLY --> i to koniec.

NCX

Tu najlepiej plik od razu usunąć i zbudować potem nowy np. w sigilu. Odwołania do konkretnych miejsc w pliku HTML są często oznaczane minimalnie innym numerem np. w jednej kopii e-booka jako #filepos12345, a w innej jako #filepos12347. Można też po prostu pozamieniać sobie te etykiety na własne, oczywiście równolegle ze zmianą ich w pliku HTML.

HTML

Przechodzimy do sedna. Na początek odnajdujemy i usuwamy kompletnie niepotrzebny fragment:

<div width="0" align="center">
<blockquote width="0">
<font color="black"><i>
<font color="#000000">Dokument</font> chroniony elektronicznym znakiem wodnym
</i>
</font>
</blockquote>
</div>

<font color="#000000"> jest zmodyfikowane poprzez dodanie lub nie „1” do składowych koloru – w każdej kopii inaczej. Fragment ten znajduje się bezpośrednio po spisie treści.

Uwaga! Oryginalnie jest to ciąg zapisany w jednym wierszu, ale dla sprawniejszej analizy podzieliłem sobie ten długi wers na krótsze, w miejscu wystąpienia np. znaków </ itp. Należy też zauważyć, że niektóre wersy w powyższym kodzie kończą się spacją.

Ogólnie każdy fragment <font color="#000000">cokolwiek</font> (zmodyfikowany metodą o której wspomniałem powyżej) należy zamienić na samo cokolwiek. To pierwszy filar omawianego zabezpieczenia – w badanych kopiach sekwencja użycia tych lekko podmienionych kolorów była unikatowa dla każdej kopii. Pierwsza okazja przy słowie „spis” (nagłówek „Spis treści”), ale oczywiście nie będziemy tego robić pojedynczo dla każdego wystąpienia. W edytorze obsługującym wyrażenia regularne (z rozszerzeniem Perla) zamieniamy: <font color.+?>(.+?)</font> na \1.

Przypominam o podmienieniu numerków w etykietach typu filepos123456.

W paru miejscach znajduje się zapis <div height="20"></div> (oczywiście zamiast 20, może być inna liczba). Maksymalnie spotkałem to 2 razy (blisko początku pliku). Najlepiej usunąć, bo w paru plikach są, a w innych nie ma. Nie jestem przekonany czy to część watermarku, ale są podstawy by tak sądzić.

Pora na cięższe przewinienie – w pliku znajdują się różne znaki niedrukowane. Są to np. &zwj; lub &zwnj; czyli znaki specjalne stosowane do wymuszania lub zakazu tworzenia ligatur. W e-bookach z Legimi dla Kindle zawsze po nich następuje spacja, czyli ich użyteczność jest zerowa. Dodatkowo jeden z informatorów pożalił się do mnie słowami:

…znaki &zwnj;&zwj; psuły mi przyjemność czytania, często pojawiały się spacje różnej szerokości w jednej linii…

Najważniejsze jest jednak to, że sekwencja użycia tych encji jest unikatowa dla każdej badanej kopii e-booka, więc to drugi filar watermarku. Oczywiście każdy taki znak wycinamy (zamieniamy na puste pole).

Na koniec znalazłem zapisy takie jak np. przeszło<a id="filepos12345" />ści, a w innym pliku przeszłoś<a id="filepos12345" />ci itp. 4 badane kopie – w każdej inna kombinacja. Ogólnie trzeba sprawdzić wszystkie fileposy i skorygować. W „Azylu” tylko jeden wyraz był tak oznakowany, więc szukania nie ma dużo.

„Azyl” jest po takich operacjach oczyszczony, ale…

Przy końcu każdego rozdziału jest taki kod:

<data-AmznRemoved>
<span data-AmznRnd="1"></span>
<span data-AmznRnd="2"></span>
<span data-AmznRnd="3"></span>
<span data-AmznRnd="4"></span>
<span data-AmznRnd="5"></span>
<span data-AmznRnd="6"></span>
<span data-AmznRnd="7"></span>
<span data-AmznRnd="8"></span>
</data-AmznRemoved>

Prawdopodobnie kindlegenowi coś się nie spodobało przy kompilacji i powycinał ten szkodliwy fragment. Tymczasem w „Bastionie”, w tym samym miejscu jest coś w rodzaju:

<span style="color: white;">
===ABCD1EFGH2IJKL3MNOP4QRST5UVWX6YZAB7CDEF8GHIJ
</span>

Ta sama sygnatura jest w innych miejscach, z tym że zamiast trzech znaków = na początku – występują dwa. Łatwo wytropić.

Różnica pomiędzy badanymi e-bookami jest m.in. taka, że „Bastion” został zbudowany przy pomocy programu kindlegen 1.2.33307 (Linux), a dwie pozostałe książki – kindlegen 2.9.1028-0897292 (Linux).

W e-bookach o komisarzu Forst’cie występuje jeszcze inny zbędny element – tuż po <body> są zakomentowane 24 znaki np. takie: a/BcD1eF/gH2iJk/L3mNoP==. Traktujemy je jak każdy inny komentarz, czyli usuwamy z pliku.

Ogólnie warto sprawdzić w każdym e-booku czy nie występuje gdzieś ciąg ==. Przy nim z reguły znajdują się nieprzydatne dla nas elementy.

Konkluzja

Usunięcie znaku wodnego jest żmudniejsze niż pozbycie się DRM-u, ale jeśli irytują nas np. nierównej wielkości spacje w jednym wierszu, to trzeba się go pozbyć. Po prostu watermark Legimi jest bardzo agresywny i jeszcze pogarsza nienajlepszą, delikatnie ujmując, jakość e-booków w tej usłudze.

Tagi:

Kategorie:

Ostatnia aktualizacja: