Department Informatik

Größe: px
Ab Seite anzeigen:

Download "Department Informatik"

Transkript

1 Department Informatik Technical Reports / ISSN Zinaida Benenson, Frederik Berger, Anatoliy Cherepantsev, Sergey Datsevich, Long Do, Moritz Eckert, Tassilo Elsberger, Felix Freiling, Marius Frinken, Hendrik Glameyer, Steffen Hafner, Svenja Hagenhoff, Andreas Hammer, Stefan Hammerl, Florian Hantke, Felix Heindorf, Marcel Henninger, Daniel Höfer, Phillip Kuhrt, Maximilian Lattka, Tobias Leis, Christian Leubner, Katharina Leyrer, Christian Lindenmeier, Katharina Del Medico, Denise Moussa, Michael Nissen, Alina Öz, Jenny Ottmann, Katharina Reif, Nora Ripley, Armin Roth, Joschua Schilling, Robert Schleicher, David Schulz, Milan Stephan, Christoph Volkert, Max Wehner, Matthias Wild, Johannes Wirth, Julian Wolf, Julia Wunder, Jovana Zlatanovic Analyse verbreiteter Anwendungen zum Lesen von elektronischen Büchern Technical Report CS Dezember 2019 Please cite as: Zinaida Benenson, Frederik Berger, Anatoliy Cherepantsev, Sergey Datsevich, Long Do, Moritz Eckert, Tassilo Elsberger, Felix Freiling, Marius Frinken, Hendrik Glameyer, Steffen Hafner, Svenja Hagenhoff, Andreas Hammer, Stefan Hammerl, Florian Hantke, Felix Heindorf, Marcel Henninger, Daniel Höfer, Phillip Kuhrt, Maximilian Lattka, Tobias Leis, Christian Leubner, Katharina Leyrer, Christian Lindenmeier, Katharina Del Medico, Denise Moussa, Michael Nissen, Alina Öz, Jenny Ottmann, Katharina Reif, Nora Ripley, Armin Roth, Joschua Schilling, Robert Schleicher, David Schulz, Milan Stephan, Christoph Volkert, Max Wehner, Matthias Wild, Johannes Wirth, Julian Wolf, Julia Wunder, Jovana Zlatanovic,,,Analyse verbreiteter Anwendungen zum Lesen von elektronischen Büchern, Friedrich-Alexander-Universität Erlangen-Nürnberg, Dept. of Computer Science, Technical Reports, CS , Dezember Friedrich-Alexander-Universität Erlangen-Nürnberg Department Informatik Martensstr Erlangen Germany

2

3 Inhaltsverzeichnis 1 Einleitung Systematisierung digitaler Publikationsformen Buchmarkt Lesen als Rezeptionsprozess und soziale Praktik Umgebungen des E-Reading E-Reading Analytics Forschungsstand Entstehungsumstände und Fragestellungen dieses Berichts Ausblick auf diesen Bericht Technischer Hintergrund und Methodik der Anwendungsanalyse Methodik der Anwendungsanalyse Zustandsmethode Ereignismethode Webanwendungen (WebApps) Web Storage und andere Browsertechnologien Native Windows-Clients und Smartphone Apps Analyse der Kindle-Webanwendung Einführung Analyse der Benutzungsoberfläche Analyse der persistenten Spuren Analyse des JavaScript-Codes Debugging des Seite-Umblättern-Knopfes Metrik-Klassen der Webanwendung Alternative Analyse des Javascript-Codes und lokaler Daten KindleApp-min.js KindleReaderApp-min.js (HTTP-)Anfragen beim Lesen Web SQL Weitere Analyse der lokalen Daten Network Protocol Analysis reader/startreading reader/getfileurl reader/stillreading Event-based content/uploadmetrics reader/stopreading Timer-based content/uploadmetrics Zusammenfassung Analyse der Tolino-Webanwendung Einführung Analyse der lokal abgelegten Daten Analysis of Javascript Code Environment Files

4 4.3.3 Execution and results Analysis of Network Traffic Weitere Analyse des Netzwerkverkehrs Umblättern Markieren und Notieren Einfluss des Lesens auf Produktvorschläge Zusammenfassung Analyse der Datenschutzerklärungen der Web-Anwendungen Tolino-Webreader Kindle Zusammenfassung Analyse des Kindle-Windows-Clients Einführung Analyse persistenter Spuren Analyse mittels Zustandsmethode Anmelden und Buch öffnen Ereignismethode Dateistruktur Relevante Dateien Nutzung Alternative Analyse persistenter Daten Erstellte Festplatten-Abbilder Änderungen während der Installation und Registrierung Änderungen bei Benutzung Änderungen bei Benutzung ohne Internetverbindung Ergänzende Analyse mit Process Monitor: Registry-Einträge Ergänzende Analyse mit Process Monitor: Netzwerk Gefundene Spuren des Benutzerverhaltens Analyse des Netzwerkverkehrs Vorgehensweise Verwaltung der Bibliothek Synchronisation des Lesefortschritts Zusammenfassung Analysis of the Kindle App for Android Introduction Static Analysis Methodology Technical Analysis Logging Amazon Web Lab Dynamic Analysis Methology Results Summary

5 8 Analyse of the Tolino App for Android Introduction Methodology App structure overview Analysis of the tolino package The dao and database packages The backend package Dynamic Analysis Summary Betrachtungen zum Kopierschutz Digital Rights Management Hartes DRM Weiches DRM E-book file types (with focus on DRM) EPUB AZW (based on MOBI) Vergleich von Tools zum Entfernen des Kopierschutzes Verwendung von Skripten Konvertierungsservice von Webseiten Überblick über verfügbare Software Fazit Zusammenfassung 96 3

6 Analyse verbreiteter Anwendungen zum Lesen von elektronischen Büchern Zinaida Benenson, Frederik Berger, Anatoliy Cherepantsev, Sergey Datsevich, Long Do, Moritz Eckert, Tassilo Elsberger, Felix Freiling, Marius Frinken, Hendrik Glameyer, Steffen Hafner, Svenja Hagenhoff, Andreas Hammer, Stefan Hammerl, Florian Hantke, Felix Heindorf, Marcel Henninger, Daniel Höfer, Phillip Kuhrt, Maximilian Lattka, Tobias Leis, Christian Leubner, Katharina Leyrer, Christian Lindenmeier, Katharina Del Medico, Denise Moussa, Michael Nissen, Alina Öz, Jenny Ottmann, Katharina Reif, Nora Ripley, Armin Roth, Joschua Schilling, Robert Schleicher, David Schulz, Milan Stephan, Christoph Volkert, Max Wehner, Matthias Wild, Johannes Wirth, Julian Wolf, Julia Wunder, Jovana Zlatanovic Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU) Zusammenfassung Der Marktanteil elektronischer Bücher (E-Books) am Buchmarkt wächst beständig. Um E- Books zu rezipieren, benötigt man spezielle Leseumgebungen, die als Software (im Browser oder als eigene Anwendung) oder als Spezialgerät (E-Reader) realisiert sein können. Diese Leseumgebungen sind geeignet, Daten über das Leseverhalten zu sammeln. Im Rahmen einer universitären Lehrveranstaltung wurden die Software-Leseumgebungen der beiden deutschen Marktführer Kindle und Tolino untersucht. Der vorliegende Bericht fasst die Ergebnisse dieser Analysen zusammen. Das Ergebnis ist eine umfassende Bestandsaufnahme der digitalen Spuren, die durch die Benutzung der Programme entstehen. Betrachtet wurden die zum Untersuchungszeitpunkt aktuellen Versionen der jeweiligen Webanwendungen und Android-Apps sowie des Kindle-Windows-Clients. Die Ergebnisse entstanden im Rahmen einer Übung zur Vorlesung Fortgeschrittene forensische Informatik II im Wintersemester 2018/19 an der Friedrich- Alexander-Universität Erlangen-Nürnberg (FAU), die gemeinsam durchgeführt wurde vom Lehrstuhl für Informatik 1 und dem Institut für Buchwissenschaft an der FAU. 1. Einleitung 1.1. Systematisierung digitaler Publikationsformen Für das hier untersuchte Phänomen der Erhebung und Analyse von Leserdaten sind prinzipiell zwei Formen digitaler Publikationen von Relevanz. Die ältere Form ist die Online-Publikation im Browser, die mit dem Aufkommen des WWW als Teilmenge des Internet ab den 1990er Jahren schnell diffundiert sind. Zeitungen und Magazine hatten zügig Online-Präsenzen, journalistische Kommunikation ausschließlich in Print und ohne Online-Variante ist heute kaum noch vorstellbar. Die drei wesentlichen Merkmale dieser Publikationsform sind der Browser als relativ einfache und unspezifische Laufzeitumgebung, der Online-Modus, der für die Rezeption eine Verbindung zum Internet erfordert sowie die Möglichkeit der instantanen Aktualisierung der Kommunikate, losgelöst von Fertigstellungsterminen ( Redaktionsschluss ), die ehemals von Erfordernissen der Printtechnologie geprägt waren. Die jüngere Form sind digitale Artefakte, die als E-Objects bezeichnet werden können. Unter E- Objects (konkret: E-Book, oder E-Magazine) werden Artefakte verstanden, die als Datei zum Download bereitstehen und als Laufzeitumgebung typischerweise eine spezifische Software erfordern, die

7 z.b. als Lese-App auf einem Tablet installiert werden kann oder hart verdrahtet mit einem E-Reader ausgeliefert wird. Diese E-Objects sind nach ersten Versuchen ab den späten 1980er Jahren [46] marktrelevant seitdem bei der Hardware Durchbruchfortschritte in Bezug auf Format und Gewicht, Display Qualität und Energieversorgung gemacht wurden. Als Durchbruchsinnovation gilt einerseits das Spezialgerät Kindle von Amazon als erste funktionstüchtige Ausprägung der Geräteklasse E-Reader ab 2010, andererseits das moderne Smartphone, initial positioniert von Apple ab 2007, ein Universalgerät, das mit der Installation von Apps zum (beliebigen) Spezialgerät wird. Die wesentlichen Merkmale der E- Objects sind die typischerweise zunächst spezifische Laufzeitumgebung die aber inzwischen auch eine Entsprechung im Browser haben kann die Möglichkeit der Offline-Nutzung nach Download sowie der damit erforderliche Redaktionsschluss für die Inhalte. E-Objects sind in ihrer optischen Beschaffenheit häufig nah am gelernten Print-Medium, bis hin zu digitalen 1:1-Klonen. Beide Ausprägungsformen erlauben es prinzipiell, die Daten von Nutzern zu erfassen und auszuwerten: im Falle der Online-Publikationen im Browser wird seit jeher standardmäßig das Klickverhalten protokolliert und zur Basis der Bewirtschaftung von Werbeplätzen genutzt. Differenziertere Analyseinstrumente, wie z.b. Chartbeat, lehnen sich an die Idee des Business Analytics an und bieten unter dem Stichwort Content Intelligence for Publishers Echtzeitanalysen der Online-Seiten periodischer Medien inkl. Positionierung der Artikel auf der Webseite in Abhängigkeit des Nachfrageverhaltenn der Rezipienten [47, 27]. Im Fokus der hier vorliegenden Untersuchung stehen E-Objects in der konkreten Ausprägung E-Book. Sie sind gefühlt zunächst weniger geeignet für die Erhebung von Nutzungsdaten, sind nach Download offline nutzbar und werden als redaktionell abgeschlossene Objekte, deren Inhalte technisch in einer Kapsel (Datei in verschiedenen, spezifischen Formaten) ausgeliefert werden, auch nicht instantan und dynamisch erzeugt. Zudem gelten Bücher im Gegensatz zu Presseerzeugnissen ( periodische Druckschriften ) als Medien von geringerem Einfluss [40] auf die Gesellschaft und die für die Meinungsbildung relevanten Diskurse, die Buchkommunikation wird daher häufig auch als irrelevant für bestimmte Herausforderungen der medial vermittelten öffentlichen Kommunikation betrachtet. Gleichwohl ist ersichtlich, dass Daten zum Buchleseverhalten erhoben werden, andernfalls wäre z.b. eine Angabe der durchschnittlichen Lesezeit in der Kindle-Leseumgebung nicht machbar Buchmarkt Auf dem deutschen Buchmarkt wird ein Jahresumsatz von ungefähr 9,5 Milliarden e (10-Jahresschnitt von 2008 bis 2017 mit einer Standardabweichung von 200 Te) erwirtschaftet, wovon gut die Hälfte dem Sortimentsbuchhandel, die andere Hälfte den Vertriebswegen Direktverkauf Verlage, Internet, Buchgemeinschaften, Warenhäuser und sonstige Verkaufsstellen (z.b. Bahnhofsbuchhandel, Tankstellen) zugerechnet werden kann. Hinsichtlich der Verteilung des Umsatzes auf die Akteure des Buchhandels ist der Markt als konzentriert zu bezeichnen: die 10 größten Buchhandelsunternehmen kumulieren im DACH- Gebiet mit einem Gesamtumsatz von ca. 12 Milliarden e einen Umsatzanteil von ca. 30 % auf sich, wobei der Anteil bereits ab Rangplatz 5 im Bereich von nur noch 1 % liegt. Der Anteil des Umsatzes, der mit E-Books erzielt wird, liegt laut der Statistik des Börsenvereins des Deutschen Buchhandels bei ca. 5 6 % im Jahr 2018 bei einer durchschnittlichen jährlichen Steigerungsrate von ca. 40 % seit 2010 [23, S. 3]. Erfasst werden Umsätze auf den oben genannten Vertriebswegen mit Medien, die über eine ISBN verfügen. Umsätze mit Medien die keine ISBN aufweisen, wie es in Selfpublishing-Strukturen (z.b. Amazon Kindle Direct Publishing) häufig der Fall ist, sind nicht enthalten Lesen als Rezeptionsprozess und soziale Praktik Lesen ist eine Technik, bei der abstrakt gesprochen, informationstragende Zeichen, wie z.b. Buchstaben, visuell erfasst und zusammengetragen werden. Erst wenn aus dem zunächst rein physiologisch erfassten 5

8 (Abtasten der Zeichen mit dem Auge, z.b Erkennen der schwarzen Formationen auf dem hellen Hintergrund) Bedeutung konstruiert wird [28] lässt sich von Rezeption im Sinne einer zu erlernenden Kulturtechnik sprechen. Im Kontext dieser Studie wird Lesen (verengend) gleichgesetzt mit dem Rezipieren von publizistischen Schriftmedien bzw. sogar noch enger mit dem Lesen von Büchern. Lesen ist in diesem Zusammenhang mehr als die Konstruktion von Sinn aus zuvor physiologisch erfassten visuellen Zeichen, dieses würde auch beim Lesen einer Müslipackung oder einer Speisekarte passieren. Lesen im Sinne der Rezeption publizistischer Medien hingegen ist eine hochkomplexe soziale Praktik [45]. Das bürgerliche Lesepublikum existiert erst seit dem Ende des 18. Jahrhunderts [44], ab diesem Zeitpunkt ist eine breite Veränderung des Rezeptionsmodus vom lauten Lesen und Vorlesen zum stillen Lesen feststellbar (z.b. Messerli [42]) bis hin zum Lesen als im Kern private und quasi-intime Handlung (differenziert für das Medium Zeitschrift siehe Kuhn [39]). Und erst mit der Vollalphabetisierung um 1900 wurde Lesen zu einer gesellschaftsweiten Medienkompetenz und Praktik [44]. Aus Institutionenperspektive ist Lesen als Rezeptionsform eine Möglichkeit, sich aus allgemein zugänglichen Quellen ungehindert zu unterrichten [26], wie es die Gesellschaftsform der Bundesrepublik Deutschland für richtig erachtet. Eine ungehinderte Unterrichtung sowie vor allem eine folgende Chance auf Werteaneignung und Meinungsbildung setzt ein Maß an Privatheit in Bezug auf Kauf- und Rezeptionsvorgänge voraus (hierzu z.b. Saxer [43]). Wird Privatheit verstanden als Unkontrolliertheit so ist ersichtlich, dass eine standardmäßige, detaillierte und personenbezogene Beobachtung von Kauf- und Rezeptionsvorgängen umso erstrebenswerter ist, je totalitärer bzw. kontrollfixierter Gesellschafts- bzw. Herrschaftsformen sind Umgebungen des E-Reading Um ein E-Book zu rezipieren, können LeserInnen verschiedene Hard- und Software-Lösungen nutzen. Dabei lassen sich in Deutschland vier große Anbieter unterscheiden: Amazon, Apple, Google und die Tolino-Allianz. Während alle vier Anbieter Hard- und Software für das Lesen auf PCs, Tablets und Smartphones bereitstellen, stellen Amazon und die Tolino-Allianz auch eigens fürs Lesen konzipierte E-Reader her. Die beiden Anbieter dominieren nicht nur den Markt für E-Reader in Deutschland [48, 34], sondern haben auch den größten Marktanteil am Verkauf von E-Books: Amazon hatte 2016 einen Marktanteil von 55% inne, die Tolino-Allianz einen von 23% [25]. Die verschiedenen E-Reading-Anbieter verwenden unterschiedliche E-Book-Formate und Digital Rights Managment-Systeme (DRM). So nutzt Amazon ein eigenes Kopierschutz-System und das hauseigene, proprietäre Format azw bzw. azw3, das nur auf Kindle-Geräten und mit Kindle-Software geöffnet werden kann [31]; parallel verfährt Apple mit E-Books im Format ibooks, das nur auf ios- und macos- Geräten zu öffnen ist [30]. Die Tolino-Allianz und Google Play Books nutzen hingegen das Digital Rights Management-System Adobe DRM, mit dem Dateien im offenen E-Book-Format EPUB und dem nicht-responsiven PDF-Format geschützt werden können. Neben diesem sog. harten Kopierschutz, der das unautorisierte Öffnen von E-Books unterbindet, kommt bei Online-Buchhändlern der Tolino-Allianz auch ein sog. weicher Kopierschutz zum Einsatz. Dabei werden die E-Books mit einem Wasserzeichen versehen, das das Öffnen und die Weitergabe der Dateien nicht unterbindet, den ursprünglichen Käufer aber beispielsweise bei illegaler Nutzung identifizierbar macht. Darüber hinaus verbreiten alle vier Anbieter auch E-Books ohne Kopierschutz [35, 38]. Für das Lesen auf Tablet und Smartphone bieten Amazon, Google, Apple und die Tolino-Allianz eigene Apps an, die sowohl auf ios-, als auch auf Android-Geräten verfügbar sind: die Kindle-App, die Tolino-App, Google Play Books und die ibooks-app. Amazon- und Tolino-KundInnen können ihre E-Books zudem über die Browser Add-Ons Tolino-Webreader und Kindle-Cloud-Reader rezipieren. Darüber hinaus gibt es zahlreiche weitere E-Reading-Apps und -Add-Ons, die das Lesen verschiedener 6

9 Formate ermöglichen und teilweise kostenfreie E-Books enthalten. Dabei bieten die Apps verschiedene Funktionalitäten, beispielsweise das Einstellen von Schriftgröße, Schriftart und Helligkeit, Unterstreichen, Annotieren, Volltextsuche, Wörterbücher und das Setzen von Lesezeichen E-Reading Analytics Anders als bei der Rezeption gedruckter Büchern ermöglicht das Lesen im Digitalen die automatische Erfassung und die genaue Analyse des Rezeptionsprozesses und Leserverhaltens, sog. Reading Analytics [41, S. 1]. So kann automatisch erfasst werden, welche LeserInnen zu welchem Zeitpunkt welche Bücher gelesen haben; was sie unterstrichen und angemerkt haben; wieviel Seiten innerhalb einer Lese- Session gelesen wurden, wann eine Session abgebrochen wurde und wie persönliche digitale Bibliotheken zusammengesetzt sind [41]. Die Erfassung und Auswertung dieser Daten stellt eine Bedrohung für die Privatsphäre der LeserInnen dar. Privatsphäre bei der Rezeption von Inhalten ist jedoch für die demokratische Meinungsbildung unabdingbar: The autonomy to freely cast about for ideas to inform our opinions and statements, without worrying about who might be looking over our shoulder, is a basic assumption underlying free expression [37, S. 63]. So kann die Überwachung des Leseverhaltens zu Folge haben, dass LeserInnen aus Angst vor gesellschaftlichen oder behördlichen Repressionen die Rezeption bestimmter Inhalte vermeiden: der sog. Chilling Effect. Zudem entsteht ein Machtungleichgewicht zwischen den Unternehmen bzw. Institutionen, die Lesedaten sammeln und auswerten, und den jeweils betroffenen Individuen [37] Forschungsstand Allerdings gibt es bisher kaum wissenschaftliche Erkenntnisse über Einsatz und Verwendung von Reading Analytics. Eine Analyse der Privacy Policies von (unter anderem) Google Books, Amazon Kindle und dem Adobe Content Server ADE durch die Electronic Frontier Foundation (EFF) aus dem Jahr 2012 macht deutlich, dass Google Play Books und Amazon Kindle aufzeichnen, welche Bücher gesucht und gelesen werden. Zudem teilen sie die Daten mit anderen Google- bzw. Amazon-Diensten und geben sie teilweise auch an Dritte weiter. Die Privacy Policy von Adobe Digital Editions legt hingegen fest, keine Daten über gelesene Bücher zu speichern und sie daher auch nicht weiterzugeben [29]. Darüber hinaus zeigt eine Log-Studie zur russischen E-Reading-App Bookmate, welche Erkenntnisse durch Reading Analytics über das Leseverhalten gewonnen werden können. So ermittelte die Studie beispielsweise, dass vor allem abends und nachts gelesen wurde und die durchschnittliche Lesedauer bei 150 Wörter pro Minute lag. Zudem wurden nur 35,7% der heruntergeladenen Bücher vollständig gelesen, wobei das Lesen durchschnittlich nach 64% des Buches abgebrochen wurde. Dabei hatte die Länge des Buches keinen Einfluss auf die Abbruchsquote [24]. In der technischen Literatur ist uns lediglich eine Arbeit bekannt, die Möglichkeiten untersucht, die auf der Hardware des E-Readers Kindle gespeicherten Daten zu extrahieren [33]. Hierzu wird eine Schwachstelle des Software-Update-Mechanismus ausgenutzt, die heute nicht mehr funktioniert. Auch bleibt die Analyse der auf dem Gerät gespeicherten Daten recht oberflächlich. Insgesamt ist also kaum erforscht, welche AkteurInnen welche Daten sammeln, wozu diese verwendet werden und an wen sie weitergegeben werden. Lynch konstatiert daher: Much of what s happening is very speculative [...]. We are challenged to move from abstract outrage to understanding genuine harm or vulnerability [41, S. 18] Entstehungsumstände und Fragestellungen dieses Berichts Die in diesem Bericht zusammengefassten Ergebnisse entstanden im Rahmen einer Übung zur Vorlesung Fortgeschrittene forensische Informatik II im Wintersemester 2018/19 an der Friedrich-Alexander- 7

10 Universität Erlangen-Nürnberg (FAU), die gemeinsam durchgeführt wurde vom Lehrstuhl für Informatik 1 und dem Institut für Buchwissenschaft an der FAU. Die Analyse erfolgte in Teams, die jeweils Teilaspekte der Anwendungen untersuchten. Die Ergebnisse der Teams wurden in Auswahl in den vorliegenden Bericht integriert. Alle Studierenden, die zur Analyse beitrugen, sind als Autoren dieses Berichts aufgeführt. Das Betreuungsteam der Übung (die Personen Benenson, Freiling, Hagenhoff, Leyrer und Wolf) waren für die Integration der Übungsergebnisse in den Gesamttext und die einleitenden Textteile verantwortlich. Es wurde bewusst darauf verzichtet, Analysen in englischer Sprache eingereicht wurden, zu übersetzen. Der vorliegende Text enthält also auch englischsprachige Textteile. Teilweise werden auch dieselben Sachverhalte aus unterschiedlichen Blickwinkeln (also von den unterschiedlichen Gruppen) redundant analysiert, was die gemeinsam gefundenen Ergebnisse verstärkt. Allgemein ging es bei der Analyse der verschiedenen Systeme um die Beantwortung der Frage, welche Spuren die Anwendungen bei der Benutzung hinterlassen, etwa beim Kauf eines E-Books, beim Blättern oder beim Hinzufügen von Notizen oder Lesezeichen. Im Fokus standen insbesondere die folgenden Fragen: Welche persistenten Spuren entstehen lokal auf dem untersuchten Systems (z.b. auf der Festplatte) und was bedeuten sie? Welche transienten Spuren entstehen bei der Benutzung des Systems im Netzwerk und was bedeuten sie, d.h. welcher Netzwerkverkehr mit welchen externen Servern wird durch welche Aktivitäten verursacht? Die Analyse erfolgte zwischen dem und dem Falls keine anderweitigen Versionsnummern der analysierten Software angegeben ist, handelt es sich also um die jeweils in diesem Zeitraum aktuelle Version Ausblick auf diesen Bericht Der Text richtet sich an Personen, die über fortgeschrittene Kenntnisse in Informatik verfügen. Nichtsdestotrotz wurde versucht, die einführenden und zusammenfassenden Textteile allgemeinverständlich zu halten. Zudem beginnt der Bericht in Abschnitt 2 mit einer kurzen Darstellung technischer Hintergründe, die bei entsprechenden Vorkenntnissen übersprungen werden kann. Im Anschluss daran folgen die technischen Analysen der Webanwendungen von Kindle (Abschnitt 3) und Tolino (Abschnitt 4), der Client-Anwendung von Kindle für Windows (Abschnitt 6) und der beiden Android Apps (Kindle in Abschnitt 7, Tolino in Abschnitt 8). Untersuchungen von Methoden zum Kopierschutz (Abschnitt 9) und den Datenschutzerklärungen der beiden Anbieter (Abschnitt 5) schließen den Analyseteil ab. Abschnitt 10 fasst die Ergebnisse in kompakter Form zusammen. 2. Technischer Hintergrund und Methodik der Anwendungsanalyse 2.1. Methodik der Anwendungsanalyse Im Mittelpunkt der Anwendungsanalyse steht die Frage, welche Veränderungen bestimmte Anwendungsaktionen am System bewirken und was diese bedeuten. Bezogen auf persistente Spuren auf der Festplatte stellt sich also die Frage, welche Dateien eine Anwendung im Dateisystem unter welchen Bedingungen verändert und was diese Veränderungen für eine Bedeutung haben. Diese Fragestellung kann auch auf transiente Spuren wie Netzwerkverkehr übertragen werden. Dort stellt sich also die Frage, welche Daten unter welchen Bedingungen gesendet werden und was sie bedeuten. Zur Vereinfachung der Darstellung betrachten wir hier im Folgenden aber nur persistente Spuren. Abstrakt kann man ein Computersystem als Zustandsmaschine modellieren. Diese abstrakte Betrachtungsweise kann man auch auf Anwendungen übertragen. Wir reduzieren hier den Zustand auf die 8

11 Menge der im Dateisystem vorhandenen Dateien und deren Zeitstempel. Ziel der Betrachtungen ist herauszufinden, welche Aktionen welche Veränderungen am Dateisystem hinterlassen. Abbildung 1: Zustandsmethode vs. Ereignismethode. In Abbildung 1 ist ein Ausschnitt aus dem Graphen einer beliebigen Anwendung dargestellt. Die Kreise modellieren wieder die einzelnen Zustände (also hier: individuelle Zustände der Festplatte) und die Pfeile die Zustandsübergänge (also die Aktionen, die im System passieren). Dargestellt sind drei Zustände a, b und c und zwei Aktionen σ 1 und σ 2. Angenommen, die Aktion σ 1 stellt den Start der Anwendung dar und soll untersucht werden. Um zu bestimmen, welche Veränderungen am Dateisystem die Anwendungen hinterlässt, kann man zwei grundsätzlich unterschiedliche Methoden anwenden: 1) die Zustandsmethode und 2) die Ereignismethode. Beide haben Vor- und Nachteile. Die Zustandsmethode vergleicht die Zustände vor und nach der Ausführung der Aktion. Dies ist in Abbildung 1 unten dargestellt. Wenn man Aktion σ 1 untersuchen möchte, dann müsste man natürlich nur die Zustände a und b vergleichen. Das Problem der Zustandsmethode ist jedoch, dass es aufgrund der Nebenläufigkeit im System (dem Vorhandensein vieler paralleler Aktivitäten) schwer ist, Aktionen isoliert zu betrachten und es somit passieren kann, dass man die Zustände a und c vergleicht. Wie man damit umgeht, werden wir unten sehen. Die Ereignismethode beginnt ebenfalls mit dem Wissen über den Zustand, der vor der Ausführung der betreffenden Aktion σ 1 besteht. Statt aber nur Zustände zu vergleichen, beobachtet die Ereignismethode ausschließlich die Zustandsänderungen, die durch die Aktionen der Anwendung selbst durchgeführt werden. Das Problem der Ereignismethode ist, tatsächlich alle relevanten Ereignisse zu beobachten. Wir betrachten im Folgenden beide Methoden genauer Zustandsmethode. Bei der Zustandsmethode betrachtet man die Zustände des Dateisystems. Möchte man wissen, welche Spuren Anwendung A bei der Aktion σ 1, des Startens, hinterlässt, so speichert man den Zustand a des Dateisystems vor der Ausführung der Aktion, d. h. vor dem Starten der Anwendung A. Nun führt man die Aktion aus. Anschließend speichert man den Zustand b nach dem Ausführen der Aktion σ 1. Nun vergleicht man die Zustände a und b und protokolliert alle Änderungen. Theoretisch müsste jede Änderung von der Aktion σ 1 hervorgerufen worder sein. In der Praxis lässt sich jedoch oftmals nicht ausschließen, dass nicht auch noch eine andere Aktionen σ 2 ausgeführt worden. Ursachen dafür können beispielsweise Betriebssystemtätigkeiten oder Hintergrundprozesse sein. Der Vorteil der Zustandsmethode ist, dass man direkt mit Zuständen arbeitet, also mit Spuren in der Form, in der sie eine Untersuchungsperson später auch in einem System vorfindet. Der Nachteil der Zustandsmethode wurde oben bereits angesprochen: Es ist unter Umständen schwer festzustellen, ob alle 9

12 Abbildung 2: Schematische Darstellung einer Webanwendung. Änderungen am Zustand von der betreffenden Aktion ausgelöst wurden. Mit der Zustandmethode werden darum die Spuren einer Anwendung generell überapproximiert Ereignismethode. Bei der Ereignismethode analysiert man keine Zustände sondern beobachtet das System im laufenden Betrieb und speichert die Ereignisse die zu einer Zustandsänderung führen. Ein wesentlicher Vorteil dieser Vorgehensweise ist, dass man gezielt nur bestimmte Ereignisse und nicht nur den finalen Zustand beobachten kann. So kann man z. B. nur die Dateizugriffe eines bestimmten Programms beobachten und blendet somit das Hintergrundrauschen aus, das ein Problem der Zustandsmethode ist. Das Hauptproblem der Ereignismethode ist jedoch, alle Ereignisse zu erfassen, die zu einer bestimmten Aktion gehören. Es gibt also auch bei der Ereignismethode eine gewisse Unschärfe. Problematisch dabei ist, dass die üblichen Werkzeuge, die für die Ereignismethode verwendet werden können, an Betriebssystemprozesse gebunden sind, also an die Ausführung einzelner Programme und Anwendungen. Wenn man bei der Beobachtung eines Prozesses die kausale Abhängigkeit eines anderen Prozesses übersieht, dann fehlen einem diese Ereignisse. Tendentiell werden also mit der Ereignismethode die Spuren einer Anwendung unterapproximiert. Je nach Untersuchungsziel verwendet man in der Praxis deshalb häufig beide Methoden Webanwendungen (WebApps) Webanwendungen (engl. Web Applications, kurz WebApps) sind Anwendungsprogramme, die zumeist nach dem Client-Server-Modell funktionieren. Auf einem Webserver läuft der Server-Teil der WebApp, der die Datenhaltung und einen (häufig großen) Teil der Anwendungslogik bereitstellt. Auf dem Webclient läuft entsprechend der Client-Teil der WebApp, der die Benutzerschnittstelle und einen (kleineren Teil) der Anwendungslogik enthält. Die Besonderheit von WebApps liegt darin, dass der Webclient nicht auf dem Client-Rechner installiert werden muss sondern in Form einer aktiven Webseite in einem Webbrowder ausgeführt wird. WebApps benötigen im Gegensatz zu klassischen Anwendungsprogrammen also kein spezielles Betriebssystem und können bei Verfügbarkeit eines Browsers überall ausgeführt werden. Dieser Umstand ist schematisch in Abbildung 2 dargestellt. Die Kommunikation zwischen Webclient und Webserver erfolgt in der Regel über HTTP: der Client schickt eine entsprechende Anfrage (Request) an den Server, der mit den gewünschten Daten antwortet (Response). Dabei können über entsprechende HTTP-Befehle (GET und POST) Parameter an den Server übermittelt werden. Da HTTP auf Client-Ebene zustandslos ist, kann der Server mittels kleiner Textbausteine auf dem Client (Cookies) Informationen hinterlegen, die er später wieder abfragen kann. Da HTTP standardmäßig keine Verschlüsselung vorsieht, werden heute die meisten HTTP-Verbindungen durch eine Verschlüsselungsschicht erweitert (HTTP Secure, HTTPS). 10

13 Art des Web Storage Ort im Dateisystem IndexedDB Chrome (Windows) %AppData%\Local\Google\Chrome\User Data\Default\IndexedDB Chrome (Linux) home/.config/google-chrome/default/indexeddb Firefox (Windows) %AppData%\Roaming\Mozilla\Firefox\Profiles\<profile>\indexedDB\domain Firefox (Linux) home/.mozilla/firefox/<profile>/storage/persistent Local Storage Chrome (Windows) %AppData%\Local\Google\Chrome\User Data\Default\Local Storage Chrome (Linux) home/.config/google-chrome/default/local Storage Firefox (Windows) %AppData%\Roaming\Mozilla\Firefox\Profiles\<profile>\webappsstore.sqlite Firefox (Linux) home/.mozilla/firefox/<profile>/webappsstore.sqlite Tabelle 1: Speicherorte von Web Storage in modernen Browsern. Eine vom Server abgerufene Webseite wird in Form eines HTML-Dokuments (im Rahmen von HTTP) übertragen, im Browser verarbeitet und dort dem Benutzer dargestellt. Durch Technologien wie Javascript ist es möglich, neben statischen Darstellungselementen wie Text, Bildern und Tabellen auch Programme zu übermitteln, die im Kontext des Browsers von diesem ausgeführt werden. Webseiten mit derart eingebettetem Code nennt man auch aktive Webseiten. Während früher eingebettete Javascript-Programme lediglich Elemente der Benutzungsoberfläche aktualisierten, sind heute clientseitig ganze Anwendungen in Javascript-Implementiert (beispielsweise Office-Pakete oder -Programme, die rein im Browser ablaufen). Javascript-Programme sind in ihren Zugriffsrechten auf die Sphäre des Browsers selbst beschränkt und können also nicht ohne Weiteres auf beliebige Teile des Rechners oder der Festplatte zugreifen. Eine Webseite wird innerhalb des Browsers in Form eines komplexen hierarchischen Objekts gespeichert, das als Document Object Model (DOM) bezeichnet wird. Eingebettete Programme können über eine Programmierschnittstelle die Inhalte der Webseite verändern. Diese Programmierschnittstelle ist in modernen Browsern wie Chrome und Firefox auch Benutzern zugänglich über die Developer Tools. Mit Hilfe dieser Werkzeuge kann man die Inhalte einer Webseite clientseitig beliebig verändern, Javascript-Code selektiv ausführen und debuggen, sowie den ein- und ausgehenden Netzwerkverkehr mitzuschneiden und zu analysieren. Eine vertiefte und präzisere Darstellung der Funktionsweise moderner Webanwendungen und ihrer Sicherheitsmechanismen gibt Zalewski [50] Web Storage und andere Browsertechnologien Moderne WebApps bedienen sich größtenteils standartisierter Techniken um clientseitig Daten zu speichern. Die Möglichkeiten umfassen dabei insbesondere Web Storage (auch DOM-Storage oder Local Storage genannt), die Indexed Database API (IndexedDB), sowie Cookies und die inzwischen obsolete Web SQL Database API. Die mit diesen Techniken abgespeicherten Daten werden durch den Browser an speziellen Stellen des Dateisystems im Client abgelegt. Tabelle 1 gibt einen Überblick über die Orte für IndexedDB und Local Storage. Bei der Analyse von Webanwendungen ist also anzunehmen, dass an diesen Orten viele Dateiänderungen durchgeführt werden Native Windows-Clients und Smartphone Apps Im Gegensatz zu Webanwendungen sind native Clients reguläre Anwendungen, die auf einem Desktop- Computer installiert werden. Sie stehen Webanwendungen in de Funktionalität nicht nach, rangieren aber von ihren Zugriffsrechten her auf derselben Ebene wie der Browser selbst und sind damit prinzipiell etwas mächtiger als Webanwendungen. 11

14 Native Client-Anwendungen lassen sich mit denselben Methoden untersuchen wie jede andere native Anwendung auch. Zwar bestehen Anwendungen im Windows-Kontext aus standardisierten Dateien im Portable Executable-Format. Im Gegensatz zu Web-Anwendungen, die in Javascript geschrieben sind, ist ihre Funktionalität jedoch in Form von Binärcode gespeichert, der nur mit speziellen Hilfsmitteln (Disassembler, Decompiler wie IDA-Pro [36]) vernünftig untersucht werden kann (binäres Reverse Engineering). Wenn es lediglich um das Ein-/Ausgabe-Verhalten der Anwendung geht, dann können die oben vorgestellten Methoden zur Anwendungsanalyse (Zustandsmethode und Ereignismethode) angewendet werden. Auch hier kommen spezielle Werkzeuge zum Einsatz. Im Bereich der Zustandsmethode wird häufig das Programm idifference aus dem DFXML-Paket von Garfinkel [32] eingesetzt, im Bereich der Ereignismethode der in Windows eingebaute Process Monitor. Smartphone-Apps nehmen eine Zwischenrolle ein zwischen nativen Client-Anwendungen und Webanwendungen, denn sie sind in etwa so abgeschottet vom Rest des Systems wie eine Webanwendung im Browser, werden aber heute in der Regel als Binärcode ausgeliefert. Die Rechte, die eine Smartphone-App besitzt, werden im Kontext von Android durch feingranulare Permissions verwaltet (wie beispielsweise der Zugriff auf die Standortdaten oder die Kamera), die zur Laufzeit ausgegeben und auch widerrufen werden können. Smartphone-Apps lassen sich umso leichter analysieren, je mehr Kontrolle man über deren Ausführungsumgebung hat. Denkbare Analyseansätze sind die Verwendung von Emulatoren oder die Analyse auf Smartphones mit Administratorrechten ( ge-rootete Smartphones). Beide Umstände werden heutzutage häufig durch Apps erkannt, wodurch die Analyse erschwert werden kann, weil Apps sich dann durch nicht-standardmäßiges Verhalten versuchen, der Analyse zu entziehen. Problematisch bei Smartphone-Apps ist zudem die Analyse des von der App ausgesendeten und empfangenen Netzwerkverkehrs, wenn dieser mittels HTTPS verschlüsselt wird. Wenn man die Ausführungsumgebung der App nicht kontrolliert, hat man keine Möglichkeit, auf die Daten in unverschlüsselter Form zuzugreifen. Ein Ansatzpunkt zum Mitlesen des Datenverkehrs besteht dann darin, der App eine falsche Gegenstelle vorzugauckeln. Wenn die App beispielsweise ausschließlich mit dem Server x sprechen will, dann kann man sich selbst als Server x ausgeben und erhält den Netzwerkverkehr im Klartext. Dies funktioniert allerdings nur dann, wenn die App die Authentifikationsinformationen (Zertifikate) des Servers x unzureichend überprüft. Zumeist akzeptieren Apps beliebige Zertifikate des Servers, also auch Zertifikate, die man selbst ausgestellt hat. Dies erlaubt das Abhören in der Mitte zwischen Client und Server (Man-in-the-Middle Attack). Möchte die App sicher mit dem echten Server x sprechen, dann akzeptiert sie nur bestimmte Zertifikate (Certificate Pinning). In einem solchen Fall ist das Mitlesen des Netzwerkverkehrs deutlich erschwert. 3. Analyse der Kindle-Webanwendung 3.1. Einführung Der Kindle-Cloud-Reader (read.amazon.com) ist eine webbasierte Anwendung zum On- und Offlinelesen von E-Books aus dem E-Book-Sortiment von Amazon. Der Zugriff auf die Inhalte bedarf einer Anmeldung mittels -Adresse und einem bei der Registrierung festgelegten Passwort. Nach einer erfolgreichen Authentifizierung erfolgt eine Weiterleitung auf eine Single-Page-Webanwendung, die den Zugriff auf die Bibliothek und Buchinhalte bereitstellt. In diesem Abschnitt erfolgt die Analyse der Webanwendung im Browser Mozilla Firefox. Wir geben zunächst einen Überblick über die Weboberfläche und Funktionalität der Webanwendung. Anschließend folgen verschiedene Analysen der persistenten Spuren und transienten Spuren. Für die technische Analyse wurde eine virtuelle Maschine mit Ubuntu verwendet. Die Kindle- Webanwendung wurde im Mozilla Firefox geöffnet. Um persistente Spuren zu untersuchen, wurden 12

15 Buchtitel Genre Seiten Dateigröße (laut Amazon) Whiskey on the Rocks Liebesroman KB unglaubliche Fakten Sachbuch KB Avengers vs. Thanos Comic KB Tabelle 2: Zur Analyse verwendete Bücher. Abbildung 3: Ansicht der Bibliothek der Kindle-Webanwendung. die durch den Browser angelegten Dateien mit einem Hexeditor betrachtet. Zum Auslesen von sqlite- Datenbanken wurde die terminalbasierte Anwendung sqlite3 verwendet. Für die Suche nach transienten Spuren wurde der Netzwerkverkehr mit dem Netzwerkanalysetool von Firefox analysiert. Außerdem wurde der integrierte Debugger des Browsers für die Analyse des JavaScript-Codes zur Hilfe genommen. Für die Analyse der Kindle-Webanwendung wurde ein Amazon-Prime-Account verwendet. Mit diesem Account war es möglich, Bücher kostenlos zu nutzen. So wurden auf drei zufällige kostenlose Werke ausgewählt und automatisch zur Lese-Bibliothek hinzugefügt. Zwei davon waren Bücher, eins davon ein Comic, der im Gegensatz zu den Büchern nicht aus reinen Textelementen sondern aus Bildern besteht. Eine detaillierte Übersicht der geladenen Bücher zeigt Tabelle Analyse der Benutzungsoberfläche Bevor eine genauere technische Analyse erfolgt, wird zunächst die Benutzungsoberfläche der Webanwendung betrachtet. Dazu haben wir die Seite im Browser geöffnet und uns angemeldet. Die darauf folgende Ansicht auf die persönliche Bibliothek ist in Abbildung 3 dargestellt. Wie dort zu sehen ist, kann man zwischen einer Cloud-Bibliothek und einer Bibliothek mit den heruntergeladenen Büchern wechseln. In der Bibliothek Cloud werden sämtliche gekauften Bücher angezeigt, in der Bibliothek Heruntergeladen werden nur die bereits heruntergeladenen Bücher eingeblendet. 13

16 Abbildung 4: Bedienelemente im Lesemodus. Abbildung 5: Markierung und Notiz hinzufügen. Wählt man ein Buch aus, gelangt man in den Lesemodus. Im Lesemodus sind einige Funktionen aktiv, die wir kurz erklären möchten. Die entsprechenden Bedienungselemente sind in Abbildung 4 gekennzeichnet. Mit den beiden Pfeilen Rechts (Element 1a) und Links (Element 1b) kann man vorwärts und rückwärts blättern. Mit der Funktion Gehe zu (Element 2) kann man zu einer beliebigen Position im Buch wechseln. Zudem kann man eine optische Veränderungen wie beispielsweise Schriftgröße oder Hintergrundfarbe vornehmen (mit Element 3). Mit Element 4 kann man an einer beliebigen Seite im Buch ein Lesezeichen setzen, welches in der rechten oberen Ecke angezeigt wird. Man kann auch mehrere Lesezeichen gleichzeitig setzen. Man kann auch beliebige Wörter im Text hervorheben und diese markieren oder eine Notiz hinzufügen (siehe Abbildung 5). Alle hinzugefügten Markierungen und Notizen können durch Element 5 angezeigt werden (siehe Abbildung 6). 14

17 Abbildung 6: Markierung und Notiz: Übersicht. Abbildung 7: Storage-Ordner in Firefox 3.3. Analyse der persistenten Spuren Hauptaufgabe bei der Suche nach Spuren, die lokal im Dateisystem der virtuellen Maschine gespeichert werden, ist die Analyse des Cache-Ordners von Mozilla Firefox. Bevor die Kindle-Webanwendung das erste mal geöffnet wurde, wurde ein Abbild des Firefox-Cache der Virtuellen Maschine gemacht. Wir haben die Seite dann geöffnet und uns dort angemeldet. Anschließend wurde erneut ein Abbild des Cache-Ordners gesichert. Neben zahlreichen vermutlich bedeutungslosen Dateien wurde im Storage-Ordner /.mozilla/firefox/<profile>.default/storage/default/ ein neuer Ordner https+++read.amazon.com angelegt (siehe Abbildung 7), in dem sich zwei sqlite- Datenbanken befinden, die wir wie in Abbildung 8 mit DB 1 und DB 2 bezeichnen werden. 15

18 Abbildung 8: Ordner mit sqlite-datenbanken. Tabelle Anzahl Einträge database 1 index_data 0 unique_index_data 0 object_store 11 hline object_data 0 object_store_index 19 file 0 Tabelle 3: Tabellen von DB 1 vor Herunterladen eines Buches. Auf den ersten Blick wirken die Bezeichner der Datenbanken zufällig und kryptisch. Jedoch hat sich durch Vergleich ergeben, dass die beiden Datenbanken unabhängig vom Amazon-Konto, Computer und Betriebssystem identische Dateinamen haben. Die beiden gleichnamigen Ordner sind leer. Im weiteren Verlauf dieses Unterkapitels werden die beiden Datenbanken genauer untersucht, um herauszufinden, welche Daten darin gespeichert werden. Zunächst werden dazu die beiden Datenbanken zur Sicherung in einen anderen Ordner kopiert und anschließend mit sqlite3 ausgelesen. Beide Datenbanken sind zu Beginn Byte groß. Mit dem Befehl.tables werden alle vorhandenen Tabellen angezeigt. Beide Datenbanken weisen die gleichen Tabellen auf, jedoch unterscheiden sie sich in ihren Inhalten. Eine Übersicht über alle Tabellen und die Anzahl der Elemente ist in den Tabellen 3 und 4 dargestellt. Anschließend wird das Buch 1000 unglaubliche Fakten geöffnet. Dabei wird im rechten unteren Bereich der Downloadfortschritt angezeigt (siehe Abbildung 9). Ein Download kann auch in der Bibliothek Tabelle Anzahl Einträge database 1 index_data 8 unique_index_data 0 object_store 4 object_data 8 object_store_index 2 file 0 Tabelle 4: Tabellen von DB 2 vor Herunterladen eines Buches. Abbildung 9: Downloadfortschritt eines Buches. 16

19 Tabelle Anzahl Einträge Anzahl neuer Einträge database 1 0 index_data unique_index_data 0 0 object_store 11 0 object_data object_store_index 19 0 file 0 0 Tabelle 5: Tabellen von DB 1 nach Herunterladen eines Buches. Tabelle Anzahl Einträge Anzahl neuer Einträge database 1 0 index_data 8 0 unique_index_data 0 0 object_store 4 0 object_data 8 0 object_store_index 2 0 file 0 0 Tabelle 6: Tabellen von DB 2 nach Herunterladen eines Buches durch Rechtsklick auf das jeweilige Buch angestoßen werden. Um zu testen, ob das geladene Buch auch offline verfügbar ist, wird der Browser geschlossen, die Netzwerkverbindung deaktiviert und die Seite erneut geöffnet. Im Gegensatz zu den Büchern, die zuvor nicht heruntergeladen wurden, kann man das Buch auch ohne Netzwerkverbindung öffnen und lesen. Nun wird untersucht, wie sich DB 1 und DB 2 nach Download des Buches verändert haben. Zunächst fällt auf, dass die erste Datenbank nun Byte groß ist und die zweite Byte. Daraus lässt sich vermuten, dass der Inhalt des Buches in der ersten Datenbank gespeichert ist. In den Tabellen 5 und 6 wird veranschaulicht, wie viele Einträge sich nun in den jeweiligen Tabellen befinden. Offenbar werden die Inhalte des Buches in den beiden Tabellen object_data und index_data der ersten Datenbank verwaltet. Aus den Tabelleneinträgen jedoch lassen sich nicht ohne Weiteres Buchinhalte herauslesen. Um die Funktionsweise der beiden Datenbanken noch weiter zu analysieren, wird das geladene Buch im offline-modus mit Firefox geöffnet und ein Kommentar ( Ich bin ein Kommentar ) an einer beliebigen Stelle im Buch hinzugefügt. Danach wird Firefox geschlossen. Anschließend werden die beiden Datenbanken in einem Hexeditor betrachtet und nach dem entsprechenden Kommentar gesucht. Während die Suche in der zweiten Datenbank erfolglos ist, findet man den Kommentar in der ersten Datenbank an insgesamt zwei Stellen, und zwar an Offset 0x82B73 und 0x821C7. Um zu prüfen, ob dies die relevanten Speicherstellen sind, wird an beiden Speicherorten der Eintrag verändert, indem die Zahlen 4 und 5 getauscht werden (also Ich bin ein Kommentar ). Daraufhin wird das Buch erneut in der Webanwendung geöffnet und alle Kommentare angezeigt. Dort wird der (modifizierte) Kommentar angezeigt. Offenbar werden Kommentare durch die erste Datenbank DB 1 verwaltet Analyse des JavaScript-Codes Um die Funktionsweise der Webanwendung besser zu verstehen wird nun der JavaScript-Code betrachtet. Im Folgenden wird insbesondere nach Hinweisen auf die Sammlung von analytischen Daten bezüglich des Leseverhaltens des Nutzers gesucht. 17

20 Abbildung 10: Bereich, der bei Klicken ein Weiterblättern auslöst. Bei der Analyse wurden drei wichtige JavaScript-Dateien gefunden, durch die die Funktionen der Kindle-Webanwendung grundsätzlich bereitgestellt werden: KindleApp-min.js KindleLibrary-min.js KindleReaderApp-min.js Auffällig ist, dass der Code teilweise obfuskiert wirkt, da einige Funktionen einfache Buchstaben als Bezeichnung haben. Der Suffix -min deutet darauf hin, dass die Dateien minifiziert wurden, um Bandbreite bei der Übertragung im Netz zu sparen. Da eine gesamte statische Codeanalyse zu aufwendig wäre, werden verschiedene Funktionen des E- Readers mithilfe des Firefox-Debuggers zielgerichtet analysiert. Wir haben uns dabei konzentriert auf den Knopf zum Weiterblättern einer Seite (siehe Abbildung 10). Gerade dieser Knopf ist interessant, da zu erwarten ist, dass mit seiner Hilfe Leseverhalten des Nutzers am besten überwacht werden kann. Sind die Zeitabstände bekannt, in denen ein Nutzer die Seiten eines Buches weiterblättert, kann dadurch auf die durchschnittliche Lesegeschwindigkeit des Lesers geschlossen werden. Außerdem kann zu Beginn des Buches eine Stoppuhr gestartet werden, die mit dem Beenden der letzten Seite die gesamte Zeit angibt, die der Nutzer für das Lesen des Buches benötigt hat Debugging des Seite-Umblättern-Knopfes. Im Folgenden wird der Ablauf für das Umblättern einer Seite des E-Readers nun einzeln analysiert und beobachtet, welche JavaScript-Funktionen aufgerufen werden. Der Code der ausgeführt wird, befindet sich in der Datei KindleReaderApp-min.js. Wie in Abbildung 10 zu sehen, wird das Umblättern einer Seite durch das Klicken auf einen ganzen Bereich der Seite ausgelöst. Dieser Bereich ist ein HTML-Objekt vom Typ div mit der Bezeichnung kindlereader_pageturnarearight. Außerdem ist ein event an dieses Objekt gebunden, dass ausgelöst wird, wenn darauf geklickt wird. 18

21 Abbildung 11: Aufruf der Funktion x mit den entsprechenden Parametern. Abbildung 12: Funktion x verzweigt abhängig von der Richtung des Blätterns. Klickt der Nutzer nun auf das div-objekt, wird der Klick-Event ausgelöst, sodass eine Funktion x aufgerufen wird, der unter anderem die Richtung übergeben wird, in die geblättert werden soll (siehe Abbildung 11). Abhängig von der jeweiligen Richtung wird in der Funktion x entweder die Funktion v oder y aufgerufen, wobei in diesem Fall v aufgerufen wird, da nach rechts (RIGHT) geblättert wird (siehe Abbildung 12) Die Funktionen v (siehe Abbildung 14) ruft zunächst setnetworkaccessed mit dem Wert false auf dem Objekt Q auf, wobei in Abbildung 13 zu sehen ist, welche Schnittstellen Q anbietet. Weiterhin wird einer Funktion isios der Klasse KindleHostDeviceDetector aufgerufen, um herauszufinden ob das Gerät des Nutzers mit dem Betriebssystem ios läuft. Bei näherer Betrachtung der Klasse lassen sich weitere Funktionen finden, die versuchen festzustellen welches System der Leser benutzt. Danach wird die Funktion iszoomed der Klasse KindleReaderZoomableManager aufgerufen, die für die weitere Analyse nicht weiter wichtig ist. Zum Schluss wird die Funktione H gestartet, die eine große Anzahl von weiteren Funktionen aufruft (siehe Abbildung 15). Zunächst werden die Funktionen zur Geräteerkennung von KindleHostDeviceDetector gestartet. Die Ergebnisse sind wichtig um die Seite entsprechend angepasst an das System des Nutzers darstellen zu können. Danach kommt eine Funktion der Klasse KindleReaderMetrics zum Einsatz. Hierbei wird startpageturntimer aufgerufen. Es wird also offensichtlich eine Art Stoppuhr gestartet, die misst wie viel Zeit der Leser für die kommende Seite benötigt. Außerdem wird die Funktion cancelcurrentheartbeat der Klasse KindleReaderArrhytmicHeartBeatHandler aufgerufen, die die Berichterstattung für die aktuelle Seite abbricht. Dabei werden in unregelmäßgen Abständen GET- Anfragen an den Cloud-Server geschickt, die anzeigen, dass der Nutzer noch aktiv liest. Die Funktionen u und j werden nicht weiter analysiert, da dort keine weiteren Daten über das Leseverhalten gesammelt werden. Der Inhalt der Funktion F ist in Abbildug 16 zu sehen. Hierbei werden lediglich die visuellen Anzeigen des E-Readers auf den neuesten Stand gebracht. Die Funktion l führt wiederrum interessante Routinen aus (siehe Abbildung 17). Unter anderem wird die Funktion Y aufgerufen. In dieser Funktion werden die Bemerkungen für die zu kommende Seite mithilfe des ANNOTATION_MANAGER geladen. Von der aktuellen Position ausgehend werden die Bemerkungen mithilfe der Funktion getannotationsinrange bis zum Ende der neuen Seite geholt. Außerdem wird geprüft, ob die nächste Seite ein Lesezeichen enthält (siehe Abbildung 18). Zum Schluss wird nun die Funktion pa aufgerufen, die ein Lesezeichen darstellt, falls für die kommende Seite eines gesetzt ist (siehe Abbildung 19). Innerhalb der Funktion l wird weiterhin onpagechange der Klasse KindleReaderLPRManager aufgerufen. Hierbei werden einige Daten erneuert wie die Position im Buch, auf der sich der Leser gerade befindet, und die Zeit, wann der Leser das Buch das letzte mal gelesen hat. Diese Informationen werden in einer Datenbank gesichert (siehe Abbildung 20). 19

22 Abbildung 13: Schnittstellen des Objektes Q lassen darauf schließen, dass es sich um ein Verwaltungsobjekt für das gelesene Buch handelt. Abbildung 14: Funktion v, die aufgerufen wird, wenn nach rechts geblättert wird Metrik-Klassen der Webanwendung. Während der Analyse sind uns einige Klassen in der Datei KindleReaderApp-min.js aufgefallen, die verschiedene Metrik-Daten sammeln und so Funktionen für eine Leseüberwachung durchführen. Wir geben nun einen kurzen Überblick über die einzelnen Klassen: KindleReaderMetrics Mit der Funktion j dieser Klasse wird auf den METRICS_MANAGER zugegriffen, der die gesammelten Metrik-Daten verwaltet. Außerdem besitzt die Klasse die folgenden Funktionen, die die Zeit während des Lesens messen: startbookopentimer, startpageturntimer und endpageturntimer. Des Weiteren werden verschiedene Aktionen des Nutzers an den Server durch die folgenden Funktionen weitergeleitet: reportbackbuttonusage, reportgotoannotationsusage, reportscrub- 20

23 Abbildung 15: Funktion H, die weitere Funktionen aufruft. Abbildung 16: Funktion F, die am Ende von H aufgerufen wird. Abbildung 17: Funktion l. Abbildung 18: Funktion Y, die Bemerkungen und Lesezeichen lädt. Abbildung 19: Funktion pa, die ein gesetztes Lesezeichen darstellt. 21

24 Abbildung 20: Funktion onpagechange, die verschiedene Werte aktualisiert. Abbildung 21: Beispiel für einen json-string der Funktion uploadmetrics. berusage und reportannotationspaneopened. Beim Öffnen eines Buches oder dem Fehlschlagen des Öffnens wird eine Funktion uploadmetrics aufgerufen, die gesammelte Daten in Form eines json-strings mit einer POST-Anfrage an den Server überträgt. Ein Beispiel findet sich in Abbildung 21. KindleReaderLPRManager Diese Klasse verwaltet hauptsächlich die Datenbank der Webanwendung und hält diese aktuell. Dabei verwendet sie Funktionen wie: updatelastreadtime, onreadingstart, onpagechange, onreadingend und getstartreadingposition. Ihre Funktionen sind wichtig, damit auch im Offline-Modus weitere Daten gesammelt werden können, so dass eine Synchronisierung auch dann möglich wird, nachdem die Internetverbindung unterbrochen worden war. KindleReaderArrhythmicHeartBeatHandler Die Webandwendung schickt in unregelmäßgen Abständen Anfragen an den Server, wobei dabei das aktuelle Leseverhalten des Nutzers mitgeschickt wird. Dafür werden die Funktionen stillreading, onreadingstart und onreadingend mit passenden Parametern aufgerufen, die exemplarisch im Folgenden dargestellt sind: startreading: asin=b079hwm6lb clientversion= stillreading: asin=b079hwm6lb kindlesessionid=cc85b967-9da5-418f-ad06-f81702f523b0 lastpageread=39773 localtimeoffset=60 countrycode=us positiontype=mobi7 22

25 guid=cr!hac91wf62h437drdwge0a4yyv2af%3af2c79499 donereading: asin=b079hwm6lb kindlesessionid=cc85b967-9da5-418f-ad06-f81702f523b0 lastpageread=43538 localtimeoffset=60 countrycode=de positiontype=mobi7 guid=cr!hac91wf62h437drdwge0a4yyv2af%3af2c79499 KindleMetricsProfiler Dies ist eine Klasse, die es ermöglicht, ein Metrik-Profil für ein Buch zu erstellen. Dabei werden hauptsächlich Zähler- und Timer-Schnittstellen wie endtimer, addcount, createsubtimer und logaspercentageoftime des Buches verwendet 3.5. Alternative Analyse des Javascript-Codes und lokaler Daten Es folgt eine weitere (alternative) Analyse des JavaScriptCodes und der lokal abgespeicherten Daten. Diese Analyse wurde mit Hilfe der Chromium DevTools im Browser durchgeführt. Bei der Analyse wurden zwei JavaScript-Dateien angezeigt, welche ausgeführt werden: KindleApp-min.js KindleReaderApp-min.js Wie die Endung -min vermuten lässt, sind beide Dateien minifiziert, was bedeutet, dass bei den meisten Methoden und Variablen lediglich kryptische Namen zu Deklaration verwendet werden. Diese Tatsache erschwert die Analyse deutlich, jedoch ist allein der Code in beiden Dateien recht aussagekräftig KindleApp-min.js. In der Datei KindleApp-min.js kann man gleich am Anfang sehen, dass festgestellt wird, auf welchem OS man arbeitet und welcher Browser verwendet wird. Im KindleRegistrationHandler werden verschiedene URLs zusamengebaut. So kann man beispielsweise die später noch erwähnten Aufrufe von stillreading und startreading sehen (siehe Listing 1). In Listing 2 ist noch der dazugehörige Aufruf der Methode w(a,b) dargestellt, welche in stillreading aufgerufen wird. Der Code legt nahe, dass beim Lesen HTTP-Requests abgesetzt werden und so serverseitig verfolgt werden kann, wann der Leser welche Abschnitte zu lesen beginnt und wie schnell er welche Abschnitte liest (bei w(a,b) werden asin und position mitgeschickt und durch den HTTP-Request letztendlich auch ein Zeitstempel). In der Klasse KindleHostDeviceDetector gibt es noch einige Abfragen zur Umgebung, also beispielsweise welcher Browser verwendet wird, ob Web SQL unterstützt wird oder auch welche Sprache im Browser eingestellt ist. Als Letztes gibt es in dieser Javascript-Datei noch die Klasse LinkUrls. Daraus ist insbesondere die Methode a() interessant, die in Listing 3 dargestellt ist. Hier kann man sehen, dass us als einer der Zweige fest voreingestellt vorliegt, was erklären könnte, warum beim Aufruf von stillreading immer us als countrycode verwendet wird. Dieser Umstand wird weiter unten bei der Analyse der HTTP-Anfragen nochmals aufgegriffen KindleReaderApp-min.js. Die erste Klasse, die in der Datei KindleReaderApp-min.js der Analyse aufgefallen ist, ist der KindleReaderArrhythmicHeartBeatHandler. Bei diesem wird in der Methode b() eine stillreading Methode aufgerufen, die in Listing 4 dargestellt ist. Hierbei fallen auch wieder die Argumente mit asin und position auf, also dieselben Argumente, die auch oben in KindleApp-min verwendet wurden. 23

26 Listing 1: Funktionalität von startreading und stillreading. startreading: function (a) { var b = v(a.kcrfree), e = { metricid: "Service::StartReadingServiceCall", url: function () { var e = b? J : E; e += "startreading?asin=" + a.asin; e += a.kindlesessionid? "&kindlesessionid=" + a.kindlesessionid : ""; e += a.contentversion? "&contentversion=" + a.contentversion : ""; e += a.formatversion? "&formatversion=" + a.formatversion : ""; e += a.issample!== void 0? "&issample=" + (a.issample? "true" : "false") : ""; j && (e += "&clientversion=" + j); return encodeuri(e) }() }; return (b? f : s)(e) }, stillreading: function (a) { return s({metricid: "Service::StillReadingCall", url: w("stillreading", a)}) } Listing 2: Funktionalität von w(a,b). function w(a, b) { var e = E + a + "?asin=" + b.asin + "&kindlesessionid=" + b.kindlesessionid; return b.position && b.position > 0? (e += "&lastpageread=" + b.position + "&localtimeoffset=" + b.localtimeoffset + "&countrycode=" + b.countrycode, e += "&positiontype=" + b.positiontype, e = encodeuri(e) + (!b.refemid? "" : "&guid=" + encodeuricomponent(b.refemid))) : encodeuri(e) } 24

27 Listing 3: Funktionalität von Funktion a() in Klasse LinkUrls. function a() { b (Kindle.URL.isPreProd()? (d = (d = Kindle.URL.getPreProdCountryCode())? d : "us", b = Kindle.CountryToDomainMap[d]) : (b = Kindle.URL.getAmazonDomain(), d = Kindle.DomainToCountryMap[b])) } Listing 4: Funktionalität von Funktion b(). function b() { var a = m(); u && (r? r : KindleModuleManager.getModuleSync( KindleModuleManager.SERVICE_CLIENT)).stillReading({ asin: o, position: a, positiontype: q, localtimeoffset: v, countrycode: x, refemid: s, kindlesessionid: t }).then(j, e); l = void 0; navigator.online && (n = settimeout(f, k)) } Des Weiteren gibt es noch im return minifizierte Anweisungen für onreadingstart, onreadingend, isstillreading, setnetworkmodule, handleheartbeat und cancelcurrentheartbeat. Dies sind mutmaßlich die verschiedenen Aufrufe, die beim Lesen abgesetzt werden. Die gleich darauffolgenden Klasse KindleReaderLPRManager kümmert sich um die letzte gelesene Seite. So wird am Anfang die letzte Seite abgerufen und bei jedem weiteren Seitenwechsel die neue Seite gespeichert. In der Klasse KindleReaderMetrics kann gesehen werden, dass sowohl beim Öffnen eines Buches als auch beim Umblättern einer Seite Timer gestartet werden, die bei den Aufrufen von stillreading (und anderen) verwendet werden können. Als letzte analysierte Klasse bleibt noch KindleReaderUIFactory. Dabei fallen die beiden Funktionen H(a) und C(a) auf. Bei beiden werden die Pageturntimer in Verbindung mit dem KindleReader- ArrhythmicHeartBeatHandler verwendet, auch wenn die Bedingungen dafür leider schwer nachvollziehbar sind. Da bei H(a) der Timer mit KindleReaderMetrics.NEXT_PAGE gestartet wird und bei C(a) mit dem Bezeichner KindleReaderMetrics.PREV_PAGE, könnte eine Möglichkeit sein, dass es sich hierbei um die Methoden handelt, welche die regelmäßigen Statusmeldungen (heartbeat) beim Umblättern einer Seite anstoßen. 25

28 (HTTP-)Anfragen beim Lesen. Beim Lesen gibt es hauptsächlich zwei interessante Anfragen, welche abgeschickt werden: beim Öffnen eines Buches (startreading) beim Umblättern (stillreading) Nach dem Öffnen eines Buches wird zuerst ein HTTP-Request nach dem folgenden Muster geschickt: &clientversion=<version>} Hierbei werden verschiedene Informationen mitgeschickt, etwa die kindlesessionid, die ASIN (die Amazon Standard Identification Number), das Format, ob das Buch gekauft ist und die letzte gelesene Seite. Immer nachdem man umblättert wird nach wenigen Sekunden ein weiterer HTTP-Request abgeschickt nach folgendem Muster: &kindlesessionid=<id>&lastpageread=<int-wert>&localtimeoffset=60 &countrycode=us&positiontype=mobi7&guid=<id>} Dabei wird eine kindlesessionid mitgeschickt, welche bei jedem Öffnen eines Buches neu generiert wird. Außerdem wird die momentane Seite als lastpageread mitgeschickt sowie ein localtimeoffset, ein countrycode und ein positiontype, wobei sich diese bei der Analyse nie geändert haben. Schließlich wird noch die guid gesendet, welche innerhalb des selben Buches immer gleich geblieben ist und sich ändert, wenn man das Buch wechselt Web SQL. Man kann unter Chromium insgesamt 5 verschiedene Datenbanken im Web SQL einsehen. Im Folgenden werden alle relevanten Datenbanken aufgeschlüsselt bookdata. Diese Datenbank besitzt insgesamt die folgenden 12 Spalten: rowid asin contenttype title author purchasedate maxposition lasttimeread lastpositionread lastfprsynctime authorpronunciations titlepronunciation Zunächst betrachten wir die weniger informativen Spalten. rowid beinhaltet eine fortlaufende ID. Außerdem waren lastfprsynctime, authorpronunciations und titlepronunciation bei der Analyse immer leer. Des Weiteren war bei contenttype immer EBOK aufgeführt und bei title und author waren Titel und Autor gespeichert. Bei asin ist die Amazon Standard Identification Number hinterlegt. Als interessant stellten sich die Spalten purchasedate, maxposition, lasttimeread und lastpositionread heraus. Hier wird in Unixtime der Kaufzeitpunkt und der letzt Zeitpunkt, an welchem im Buch gelesen wurde, sowie die Position im Buch, an der man das letzte Mal aufgehört hat zu lesen, und die weiteste Position, bis zu welcher gelesen wurde, festgehalten. 26

29 Abbildung 22: Spalten und Einträge der Datenbank metrics keyvalue. Die Tabelle keyvalue hat drei Spalten mit, soweit beobachtet, vier Einträgen. Die erste Spalte rowid beinhaltet eine fortlaufende ID, welche allerdings erst bei 2 anfängt. Zum Schluss bleiben die anderen beiden Spalten key und value, welche jeweils einen Key mit dem dazugehörigen Wert beinhalten. Es gibt insgesamt drei Zeilen mit eindeutigen Bezeichnern als Wert, sodass lediglich die Namen Relevanz haben: kindleuserhashid eid kindledevicetoken Diese Bezeichner dienen vermutlich zur Identifizierung des Users. Der letzte verbleibende Eintrag ist synctime und beinhaltet einen Zeitstempel, eine Softwareversion 0, sowie einige kryptische Zeichen, deren Sinn nicht weiter identifiziert werden konnte metrics. Die metrics Tabelle scheint die Methoden zu beinhalten, welche beim Benutzen der Webapplikation aufgerufen werden. Sie hat die Spalten rowid, method, time, timers, counters und breakdown. Die Spalte rowid beinhaltet eine fortlaufende Nummer, timers war immer leer und counters bzw. breakdown hatten bei bestimmten Methoden immer den gleichen Wert. Diese Spalten liefern also keine hilfreichen Informationen für die Analyse. Allerdings kann man verschiedene Methodennamen in der Spalte method sehen, wie beispielsweise Service::StillReading. Die time-spalte hat bei den verschiedenen Methoden immer ähnliche Werte, also könnte sie einen zeitlichen Versatz oder ähnliches darstellen Weitere Datenbanken. Abgesehen von den ersten drei Datenbanken können noch zwei weitere Datenbanken mittels der DevTools eingesehen werden. Sie haben die Namen journal und sqlite_sequence, jedoch waren diese immer leer und konnten daher keine weiteren Erkenntnisse liefern. 27

30 3.6. Weitere Analyse der lokalen Daten Der Kindle-Webreader nutzt die durch das W3C standardisierte Web Storage Technologie, sowie die (inzwischen als veraltet geltende) Web SQL Datenbanktechnik zur persistenten clientseitigen Datenspeicherung. Im Local Storage werden hauptsächlich Layoutinformationen gespeichert. So gibt es beispielsweise Schlüssel-Wert-Paare für die Sortierung der Bücher in der Bibliothek (last_sort_param mit den Werten recent, author oder title), der eingestellten Anzeigegröße der Buchcover (last_cover_size), der eingestellten bibliotheksansicht (last_layout_view mit den Werten grid oder list) oder der zuletzt durchgeführten Aktivität (last_app_activity). Ein Beispielwert für last_app_activity ist { asin":" ",type":reader"}, wobei hierbei die ASIN (Amazon Standard Identification Number) des zuletzt geöffneten Buches vermerkt wird, oder das Feld leer gelassen wird, falls die Seite in der Bibliotheksansicht geschlossen wurde. Desweiteren werden für die Funktionweise der App wichtige technische Parameter gespeichert, beispielsweise ob bereits eine Datenbank angelegt ist (havedb), sowie einige weitere Parameter, über deren Inhalt sich zwar mutmaßen lässt, sich allerdings noch keine definitiven Aussagen treffen lassen (DL, KindlePLayer, csm-hit, hasrun). Der Session Storage wird von der Webseite nicht verwendet. Um Sessionrelevante informationen zu speichern, werden ausschließlich Cookies benutzt. Weitere Daten werden in einer Web-SQL-Datenbank mit dem Namen K4W gespeichert. Die Datenbank enthält folgende fünf Tabellen: bookdata journal keyvalue metrics sqlite_sequenz Die Tabellen journal und sqlite_sequenz waren in allen betrachteten Fällen leer. In der Tabelle bookdata werden allgemeine und benutzerspezifische Informationen aller Bücher aus der Bibliothek eines Nutzers gespeichert. Dazu zählen die Attribute asin, contenttype (in allen Testfällen EBOK ), title, authors, purchasedate, maxposition, lasttimeread, lastposition- Read, lastfprsynctime, authorpronounciation und titlepronounceiation. Hierbei enthalten die Datenbankeinträge, jeweils genau den zu erwartenden Inhalt. Das Einkaufsdatum und der Zeitpunkt des letzten Lesens wird in Unixzeit sekundengenau abgespeichert. Die maximale Position im Buch, sowie die Position im Buch, bei der zuletzt gelesen wurde, wird mit einem stetig aufsteigendem Ganzzahl-Wert abgespeichert, allerdings konnte bis jetzt keine genaue Interpretation dieses Wertes gefunden werden. Die Felder lastfprpostion, authorpronounciation und titlepronounciation waren bei allen bisherigen Betrachtungen leer. Die Tabelle keyvalue enthält verschiedenen Bezeichner, die vermutlich dazu dienen, den Nutzer und dessen Geräte wiederzuerkennen. Dies ist zum Beispiel notwendig, um die letzte gelesene Position zwischen verschiedenen Geräten zu synchronisieren. Es gibt die zwei Attribute key und value. Die Einträge beschränken sich dabei auf kindledevicetoken, kindleuserhashid, eid und synctime. Die zugehörigen Einträge im Attribut value stellen dabei zufällige Zeichenfolgen, vermutlich Hashes dar. Die einzige Ausnahme hierbei ist der Wert von synctime, in dem ein Zeitstempel (vermutlich der Beginn der Session) sowie eine als String codierte Softwareversion gespeichert wird. Die Tabelle metrics enthält die Attribute method, time, timers, counters und breakdown. Die Letzen drei Attribute besaßen meist keine Einträge (breakdown gelegentlich den Wert ["Browser"] und counter gelegentlich den Wert [name":columncount",count":1] ). Die Spalte method enthält allem Anschein nach aufgerufene JavaScript-Methoden und die zu ihrer Ausführung benötigte Zeit in Millisekunden. Der Inhalt der Tabelle wird in unbekannten Abständen 28

31 asin Amazon Standard Identification Number, identifies the book clientversion (version of the user s client) Tabelle 7: Fields of the GET startreading request. geleert, jedoch in jedem Fall bei einem Neuladen (refresh) der Seite, und der bisherige Inhalt an einen Amazon-Server übermittelt. Dies deckt sich mit den Betrachtungen des Netzwerkverkehrs der Webapp. Dabei konnten hauptsächlich folgende Methoden ausfindig gemacht werden: Reader::CreateHighlight, Reader::DeleteHighlight bei Hinzufügen und Entfernen von Annotationen. Reader::CreateNote, Reader::ModifyNote, Reader::DeleteNote beim Hinzufügen, Entfernen und Verändern von Notizen. Service::UpdateAnnotationsCall jeweils zeitnah nach einem der vorgehenden fünf Aufrufe. Reader::NextPage::[...], Reader::PrevPage::[...] beim Umblättern von Seiten. Reader::ScrubberBar::GoToLocation, Reader::GoToPosition::[...] beim Verwenden des Sliders, um an eine beliebige Seite zu springen. Service::GetFileUrlCall beim Aufruf einer neuen Seite (jedoch nicht in jedem Fall). Service::StillReadingCall bei längerer Inaktivität, sowie häufig vor anderen Aktionen. App::Open, Service::StartReadingService, Service::getPageNumber beim Öffnen eines Buches. Service:DoneReadingCall, Service:GetOwnedContent, App:CloseReader, Library:Open- LibraryCached beim Schließen eines Buches. Einige der in der Tabelle metrics gesammelten Daten dienen vermutlich der Analyse des Zeitverhaltens der WebApp, um diese zukünftig zu verbessern Network Protocol Analysis We analyzed the network traffic while reading e-books and performing various actions in the web-client itself on the following system configuration: Operating system: Windows 10 x86 64 Firefox: Version 65 (Developer Edition, x64) The descriptions of the following fields were derived from their name if reasonable, or its function. The Kindle web-client uses a mix of action-based and timer-based events to signal user actions to Kindle s servers via the HTTPS-protocol using or as the request-url for the following requests. Not all requests are listed below as some seem to be not as relevant to track the reading progress of the user (like getting annotations from the server, list of dictionaries to look up words or the download of the e-book-parts themselves) reader/startreading. Whenever the user starts to read a book, a HTTP GET request for reader/startreading is issued. Table 7 lists the parameters of the initial GET-request used to indicate when the user starts to read. The field asin describes the book the user starts to read, clientversion indicates the version of the user s client and did not change during the time of our analysis. The HTTP answer to the request is a JSON-formatted string containing a variety of information, including the actually delivered e-book (which could be different to the requested one), its version and URI-prefix to access the e-book s files and the user s current reading-progress. 29

32 asin Amazon Standard Identification Number, identifies the book contentversion Version of the e-book formatversion String matching the format CR!%s clientversion (version of the user s client) kindlesessionid User s session-id fragmentids int[] array of fragment ids requested by the client Tabelle 8: Fields of the GET getfileurl request. asin Amazon Standard Identification Number, identifies the book kindlesessionid The user s browser session lastpageread User s reading progress, see positiontype localtimeoffset 60, probably the user s time-zone difference to UTC in minutes countrycode US, probably not the browser s preferred language as it was set to German positiontype Indicates the unit of measurement used to specify the client s reading progress guid Identifier using the format CR!%28s:%8X Tabelle 9: Fields of the GET stillreading request reader/getfileurl. The whole e-book is split into multiple small fragments, the client can request using reader/getfileurl GET queries. Table 8 lists the parameters used in the getfileurl request. The answer to this request contains the URLs of the requested parts encoded in a JSON-formatted text reader/stillreading. To indicate whether the user is still reading, a HTTP GET request to reader/stillreading is used. Table 9 shows the data of the request. The answer to the request is an empty string, so it is not used to send any data to the client and can only be used to transfer (usage) information to Amazon. Interestingly the guid was the same on two pairs of tested devices, even across different (external) client IP addresses and used browsers. Other tested devices used a different value for guid Event-based content/uploadmetrics. The content/uploadmetrics HTTP POST request is used in an event-based as well as a timer-based way. We now focus on the event-based request. It includes a JSON-formatted string containing various characteristics of the user s actions as shown in Table 10. The fields clientname and clientplatform remained constant during our analysis across different operating systems, browsers and (external) client IP addresses. The clientname is also used to determine the hostname to access the static contents of the e-book (as in the URL <clientname>-eu.s3.amazonaws.com). Finally, marketplace with value de is used when opening the reader via amazon.de and en is used for The parameter metrics describes an array of various properties. Each entry is an associative array and consists of an id, a method and time. The id is a unique, incrementing counter for the entry starting at 0 when loading the page. There can be gaps in the ids that can be filled by other uploadmetrics requests. The method indicates the action the user performed. Examples for user-actions are flipping clientname K4W, also used for requests in k4w-eu.s3.amazonaws.com clientplatform A2CTZ977SKFQZY:desktop marketplace {de, us,...} metrics Value of metric[] Tabelle 10: Fields of the POST uploadmetrics request. 30

33 asin Amazon Standard Identification Number, identifies the book kindlesessionid Session identifier lastpageread Identifies the reader s progress localtimeoffset Probably timezone difference to UTC in minutes countrycode DE, probably the browser s preferred language Tabelle 11: Fields of the GET donereading request. pages, modifying bookmarks or annotations and changing general page rendering settings (one or two column view). The time is 0 for the per-action uploadmetrics requests and will be investigated in the timer-based uploadmetrics analysis reader/stopreading. After finishing reading, a GET request to reader/donereading is sent to the server. Table 11 shows the fields of the GET request issued when the user stops reading. The interesting parameters are asin, kindlesessionid and lastpageread in combination with positiontype, as these can be used to track reading behavior. Interestingly the countrycode differs from the code used in the stillreading requests Timer-based content/uploadmetrics. The timer-based uploadmetrics request is similar to the event-based one but does not directly depend on user-actions. Common methods are the last stillreading request or downloads of book-fragments. In the timer-based uploadmetrics, the time attribute is mostly (!) used to depict the time-difference between the action and the uploadmetrics request (in seconds). Some samples show a larger value of time than expected (in the range of > 10k seconds) for events that happened in the last minutes. These abnormalities have to be investigated further. When loading the page, a timer is started to issue the uploadmetrics requests. Every 5 minutes the reader submits a POST request if the user performed an action in the meantime. If no action was performed by the user, the request is held back until the user performs an action and the 5-minute timer runs out Zusammenfassung Nach eingehender Analyse des Kindle-Webeeader wird deutlich, dass Amazon das gesamte Leseverhalten des Benutzers prinzipiell nachvollziehen kann. Es besteht seitens Amazon die Möglichkeit, bei jedem Buch die Lesepositionen mit Zeitstempeln und Lesedauer bzw. -geschwindigkeit zu speichern. Bei der Analyse des Dateisystems kam heraus, dass die Kindle-Webanwendung zwei Datenbanken verwendet, in denen alle heruntergeladenen Bücher verwaltet werden. Das Umblättern einer Seite löst verschiedene weitere Aktionen aus, die Daten über das Leseverhalten sammeln. Zunächst wird erkannt, mit welchem Browser oder welchem System der E-Reader verwendet wird. Dies ist wichtig, um Seiten optimal darstellen zu können. Als nächstes werden unter anderem verschiedene Werte gespeichert, die den Lesefortschritt dokumentieren. Dabei wird gespeichert, wann die Seite aufgerufen wurde und welche Wortpositionen im Gesamttext den Anfang und das Ende der Seite definieren. Diese Werte werden zunächst lokal auf dem Endgerät in einer Datenbank gesichert und ermöglichen ebenfalls eine Synchronisation mit dem Internet, sodass das Lesen auf unterschiedlichen Geräten möglich ist ohne den Fortschritt zu verlieren. Es werden auch Daten über das Leseverhalten gesammelt, die allem Anschein nach nicht notwendig wären, um das Angebot für den Nutzer zu betreiben. Beispielsweise wurde entdeckt, dass beim Öffnen eines Buches eine Stoppuhr gestartet wird, die misst, wie lange der Nutzer zum Lesen des Buches insgesamt braucht. Außerdem wurde beobachtet, dass sogar zu Beginn jeder neuen Seite ein Timer gestartet 31

34 Abbildung 23: Tolino-Webreader Startseite. wird, der zählt, wie viel Zeit der Leser für eine Seite benötigt. Gleichzeitig werden in unterschiedlichen Zeitabständen die gesammelten Daten an den Online-Server geschickt. 4. Analyse der Tolino-Webanwendung 4.1. Einführung Der Tolino-Webreader ist eine Webanwendung, die das einfache Lesen von E-Books ermöglicht. Seine Funktionalität ähnelt dem Kindle-Cloud-Reader, d.h. nach dem Start erhält man einen Überblick über die eigene E-Book-Bibliothek (siehe Abbildung 23) und nach Auswahl eines Buches kommt man in den Lesemodus, wo man vor- und zurückblättern, Notizen hinterlegen und Lesezeichen setzen kann (siehe Abbildung 24). Ein Unterschied zum Kindle-Cloud-Reader ist, dass man sich auf der Seite von Tolino zunächst für das Angebot eines der Buchhändler entscheiden muss (den Reseller), die sich in der Tolino-Allianz zusammengeschlossen haben. Ein weiterer Unterschied ist, dass man den Tolino-Webreader auch ohne persönliches Benutzerkonto verwenden kann. Es gibt jedoch verschiedene Funktionen, die nur nach einer Registrierung verfügbar sind Analyse der lokal abgelegten Daten Die Benutzungsoberfläche des Tolino-Webreader basiert auf dem Angular Webframework. Dabei werden die meisten nutzerspezifischen Einstellungen des Frameworks im Locale Storage gespeichert. Zusammenfassend konnten aus dem Local Storage die folgenden Daten ermittelt werden: Das verwendete Theme (themename:fira:default, fontname:fira, variantname:default). 32

35 Abbildung 24: Tolino-Webreader Lesemodus. Informationen über den Reseller, der beim ersten Aufruf der Seite ausgewählt wurde (resellerid:, z.b. 3 für Thalia, 13 für Hugendubel, etc.). Eine Benutzernummer (User-ID). Spracheinstellungen (lang, bei uns de_de). Es gab noch einige weitere Einträge, deren Nutzen nicht ermittelt werden konnte (beispielsweise den Text _3: eyjpdii6imqzdz[...] und ähnliche kryptische Einträge). Wird ein Buch aus der Bibliothek geöffnet, findet sich im Local Storage zudem einen Eintrag der Form: infostore/twmeta/<id1>.<id2> Dieser referenziert eine URL der folgenden Form, die den entsprechenden Titel im epub-format bereitstellt: contenturl:" Die Bezeichner der Bücher scheint ein internes, proprietäres Format zu besitzen. So besitzt das in jeder Startbibliothek vorhandene Buch Ausgewählte Erzählungen von Franz Kafka (kostenlose Leseprobe, Fischer Klassik Plus) den folgenden durch einen Punkt getrennten Bezeichner: DT Zudem werden in diesem Eintrag weitere Metainformationen gespeichert wie beispielsweise filesize: , format:"application/epub+zip" oder location:"cdp". Im Session Storage finden sich nur vier bzw. fünf Einträge: app:library env:prod kickstarter: reseller:3 33

36 kickhash=#/epub?id=id1.id2, falls man ein Buch öffnet. Innerhalb der IndexedDB finden sich mehrere Datenbanken. Die Datenbank offline enthält die Tabellen twblob und local-forage-detect-blob-support. Letztere war in allen betrachteten Fällen leer, in der Tabelle offline befinden sich Name/Wert-Paare als Einträge, wobei die Namen (keys) die IDs von Büchern aus der Bibliothek besitzen und der Wert (value) jeweils einen ArrayBuffer in der exakten größe der zugehörigen epup Datei aus den infostore/twmeta-einträgen des Local Storage enthält. Daraus lässt sich folgern, dass jeweils die kompletten epub-dateien auf der Festplatte gespeichert werden. Desweitern werden in der Datenbank tolino_covers_db Verweise (links) zu Buchcovern der jeweiligen Bücher in der Bibliothek mit zugehörigen Metadaten gespeichert. In der Datenbank tolino_inventory_db finden sich Name/Wert-Paare, die Meta-Informationen zur jeweiligen Buch-ID enthalten, beispielsweise title, author, Abstract, protectiontype, publisher, reseller und weitere. Desweiteren werden bei jedem Seitenaufruf leere Datenbanken mit dem Namen tw-featuretest-0.xxx oder modernizr-0.xxx erstellt, wobei xxx jeweils für verschiedene 16- Ziffern-lange Zahlenfolgen steht. Modernizr ist eine JavaScript-Biliothek, die es ermöglicht zu Testen, welche HTML5-Features der verwendetet Browser des Nutzers unterstützt. Die Modrnizer-Tabellen werden ausnahmslos sofort nach dem erstellen wieder vom System gelöscht. Die Tabellen in tw-featuretest deuten vom Namen her auf einen ähnlichen Zweck hin. Sie werden nicht immer sofort gelöscht, sodass mit der Zeit eine Vielzahl von leeren Datenbankdateien entsteht. Der Tolino-Webreader verwendet weder Web SQL noch Cookies Analysis of Javascript Code Environment. The analysis of several JavaScript files in this section was done using the following environment: Windows 7 (host) Google Chrome (using the built in developer tools) (Version ) Version of the webapp v (e075c0da) User was logged in using an account, we got the free e-book Franz Kafka + Eva Wunderlich - Die Verwandlung Files. For the analysis we could not take a look at every file since the sheer amount of JavaScript files and the code they contained would have been too much for this project. For this part we concentrated on the following files: bookshelf.worker.js?revision=e075c0da parser.worker.js?revison=e075c0da q.worker.js?revison=e075c0da storage.worker.js?revison=e075c0da image.worker.js?revision=e075c0da jpg.worker.js?revison=e075c0da png.worker.js?revison=e075c0da offline.worker.js?version=e075c0da sw-toolbox.js Execution and results. We used the built-in developer tools of Google Chrome to set several breakpoints on the functions within the JavaScript files. After that the web application was left alone to see if there were any functions that get executed on a periodical basis by the app. This was not the case. The file tolinoweb-v4.4.1.min.js (in revision e075c0da) was the most prominent JavaScript file that was producing output on the console. While we did not fully analyze the file due to the amount of 34

37 lines-of-code, we found out that on startup a function within this file was executed to create a token with an expiration date. Furthermore the file contains a function that is used to recalculate the size of a page when turning pages of a book. While most of the JavaScript files are present when the app is loaded, the file zip.worker.js is not present at the beginning. This is a JavaScript file the webapp fetches from the Tolino Server to extract the books from the payload which is returned once someone klicks on a book in the library to load it. There was not much more that caught our attention during the execution of this experiment Analysis of Network Traffic We used the developer tools of Google Chrome to analyze page sources, network traffic and local storage. As all communication is handled securely via HTTPS, this method (contrary to Wireshark) provides the extra advantage of not having to use an SSL proxy. Chrome also displays the origin of traffic, the JavaScript file and the specific command inside it. As no significant information was exchanged without logging into the service, a user account was created and a free book was added to the library. The Tolino-Webreader is designed as a rich client application, the code is downloaded once and then runs on the client without having to constantly load data from the server. This enables the reader to work without an active Internet connection, allthough obviously only with previously downloaded content. Apart from communication like downloading the e-book or displaying a cover image, only two interesting types of requests were recorded. As the webreader is designed to be used across devices and provide a synchronized experience, it requests information from the server when the page is loaded and sends updated information to the server when something has changed or when the client comes back online after a period of offline usage. We were able to record synchronization events in two cases: 1) When a bookmark is created, changed or deleted (see Fugure 25). 2) When a book is left or a timeout is reached to update the current position in the book (see Figure 26). These findings match with the self-declared data usage rules. We did not find any secret analytics data or spyware. However, as this analysis can only observe the client data, we do not know what is collected, processed or stored on the server side. Extensive analytics at word-level seem unlikely, as there is no data transmitted during normal reading, so only events like opened book or still reading could be recorded Weitere Analyse des Netzwerkverkehrs Die Analyse wurde auf vier verschiedenen Arbeitsumgebungen getestet, um festzustellen, ob eventuell Unterschiede zwischen verschiedenen Browsern/Betriebssystemen bezüglich der Ergebnisse der Untersuchung der Webanwendung bestehen. Diese sind in Tabelle 12 verzeichnet. Insgesamt konnten alle Beobachtungen in allen Arbeitsumgebungen bestätigt werden Umblättern. Folgende Aktionen wurden durchgeführt: 1) Einloggen mit Hugendubel-Account/Thalia-Account/Nicht einloggen 2) Umblättern 3) Warten (20 Sekunden) 4) Umblättern 5) Warten (5 Sekunden) 6) Umblättern Variante A: Auf neue Seite blättern 35

38 Abbildung 25: Data traffic when a bookmark is added. Abbildung 26: Data traffic when the position is updated. 36

39 System-Name Hardware Intel Core i Intel Core i5-6600k Intel Core i5-5200u Intel Core i5-6600k 8 GB RAM 8 GB DDR4 RAM 4 GB RAM 16 GB RAM Betriebssystem Kubuntu Windows 10 Education Windows 10 Pro Windows 10 Education LTS (64-Bit) 64-Bit Ver Bit Ver Bit Ver virtuelles Betriebssystem Xubuntu Ubuntu keines keines LTS (64-Bit) LTS (64-Bit) virtuelle Maschine Oracle VirtualBox Hypervisor VMware keine keine Ver Ubuntu Workstation 14 Player Ver build Browser Firefox Google Chrome Firefox Quantum Google Chrome Ver. 63 Ver Ver (64-Bit) Ver Weitere Tools Wireshark 2.6.5, Wireshark v MZCacheView v1.81, ChromeCacheView v1.85 Calibre SearchMyFiles v2.85 Tabelle 12: Jede Spalte repräsentiert eine Arbeitsumgebung mit unterschiedlichen Kombinationen aus den Browsern Firefox/Chrome und den Betriebssystemen Linux/Windows Variante B: Auf Ausgangsseite zurückkehren 7) Warten (20 Minuten) Mit angemeldetem Kundenkonto konnte festgestellt werden, dass ca. 11 Sekunden nach dem ersten Umblättern eine Netzwerkaktivität stattfindet. Wird innerhalb dieser 11 Sekunden erneut geblättert, so wird unter Variante A nur einmal ein Paket übermittelt, unter Variante B findet keine Aktivität statt. Weitere Nachrichten werden auch nach längerer Inaktivität (Beobachtung bis 20 Minuten) nicht versandt. Im Rahmen von Netzwerkaktivität wird ein JSON-Paket mittels HTTP PATCH an die URL versendet. Bei den weiteren Analysen zeigt sich, dass diese URL für sämtliche Serverkommunikation genutzt wird. Die URL enthält Felder (siehe Abbildung 27) für die aktuelle Leseposition, die Gesamtzahl an Seiten, einen Zeitstempel (Zeitpunkt des Sendens) und einen Fortschrittswert progress, welcher den Quotient aus gelesenen zu gesamten Zeichen des Buchs darzustellen scheint. Außerdem wird die Position im Buch angegeben durch Angabe der Datei sowie einem XML-Pfadausdruck für die genaue Position innerhalb dieser. Der Aufbau des Wertes der Variable path erläutern wir anhand eines Beispiels: /publications/dt<bestellung>.<isbn-13>/bookmark/<var> Hierbei handelt es sich bei BESTELLUNG um eine vierstellige Zahl, welche bei allen Büchern, die innerhalb des selben Bestellvorgangs gekauft wurden, identisch ist. Dies wurde mit mehreren Bestellungen von fünf, drei bzw. einem Buch nachvollzogen. Der Wert von ISBN-13 stellt die 13-stellige ISBN des Buches dar, was sich leicht anhand der Angaben anderer Büchershops nachprüfen lässt. Ist der Benutzer nicht angemeldet, so werden keine Daten bezüglich des Umblätterns übertragen Markieren und Notieren. Im Folgenden wird der Informationsaustausch bezüglich des Markierens von Textstellen und des Hinterlassens einer Notiz (Notieren) im Netzwerkverkehr und lokal untersucht Serverkommunikation Markieren. Es wurde wie folgt vorgegangen: 1) Anmelden mit Hugendubel-Account/Thalia-Account/Nicht einloggen 37

40 Abbildung 27: Datenaustausch beim Umblättern. 2) Buch öffnen 3) Passage markieren (Markierung 1) 4) Warten (20 Sekunden) 5) Passage markieren (Markierung 2) 6) Warten (20 Sekunden) 7) Markierung 1 löschen 8) Warten (20 Sekunden) 9) Markierung 2 löschen 10) Warten (20 Minuten) Das Vorgehen wurde mehrmals wiederholt. Nach Anmeldung mit dem Kundenkonto war wie schon beim Blättern festzustellen, dass beim Markieren einer Textstelle (Textstelle im Buch mit der Maus markieren und anschließend auf Textstelle markieren klicken) ein JSON-Paket mittels HTTP PATCH an die selbe URL wie oben beschrieben (siehe Seite 37) geschickt wird (siehe Abbildung 27). Unterschiedlich ist der Zeitpunkt des Sendens, welches unmittelbar nach der Aktion stattfindet. Weiterhin werden der Zeitstempel der Änderung, der markierte Text sowie die genaue Start- und Endposition der Markierung im Buch übertragen. Derselbe Vorgang läuft beim Löschen einer Textmarkierung ab. Es wird lediglich das Attribut add durch remove ersetzt. Ohne Anmeldung kann kein Informationsaustausch beobachtet werden Serverkommunikation Notieren. Es wurden folgende Aktionen durchgeführt: 1) Einloggen mit Hugendubel-Account/Thalia-Account/Nicht einloggen 2) Buch öffnen 3) Notiz erstellen 4) Warten (1 Minute) 5) Notiz löschen 6) Warten (20 Minuten) Das Vorgehen wurde mehrmals wiederholt. In angemeldetem Zustand (mit Kundenkonto) konnte Folgendes festgestellt werden: Um eine Notiz zu erstellen, muss eine Teststelle mit der Maus markiert werden und anschließend auf Notieren geklickt werden. Es erscheint ein Pop-up, in dem man einen Text eingeben kann. Danach muss man auf OK 38

41 Abbildung 28: Datenaustausch beim Markieren. Abbildung 29: Notieren (Notiz: toller Beruf, Textstelle: Ich bin ein Geisterjäger ). klicken. Sobald man auf Notieren klickt, wird ein JSON-Paket wie bei einem Markiervorgang gesendet. Nachdem man die Notiz durch OK bestätigt hat, wird ein JSON-Paket (siehe Abbilding 29) mittels HTTP PATCH an eine URL (dieselbe wie oben auf Seite 37 beschrieben) geschickt. Dabei wird das Attribut replace verwendet und als note der Inhalt der Notiz mitgesendet. Der Löschvorgang erfolgt analog wie beim Markieren von Textstellen. Ohne Anmeldung in einen Account kann kein Informationsaustausch beobachtet werden Lokale Datenspeicherung. Zur Prüfung lokal angelegter Daten wurden folgende Schritte durchgeführt: 1) Cache leeren 2) Einloggen mit Hugendubel-Account/Thalia-Account 3) Buch öffnen 4).epub-Datei im Cache identifizieren und herauskopieren 5) Markierungen einfügen 6) Cache leeren 7) Einloggen mit Hugendubel-Account/Thalia-Account 39

42 8) Buch öffnen 9).epub-Datei im Cache identifizieren und herauskopieren 10) Beide.epub-Dateien vergleichen Nach dem Löschen des Caches ist kein Datenaustausch erkennbar, der nach dem erneuten Öffnen des Buches auf eine Übermittlung der erzeugten Markierungen vom Server zurück auf den Browser schließen lässt. Darum ist anzunehmen, dass die Markierungen in der.epub-datei gespeichert werden. Um diese Annahme zu überprüfen, wurde die leere.epub-datei mit einer Datei mit Markierungen verglichen. Dies geschah mithilfe des Linux-eigenen Tools cmp. Der Vergleich brachte keine Unterschiede zutage, darum ist anzunehmen, dass keine Markierungen in die Bücher eingetragen werden Datenerhebung bei Unterbrechung der Netzwerkverbindung. Es wurde untersucht, ob nach einer Trennung der Internetverbindung Daten im Cache-Bereich des Webreaders gespeichert werden. Dazu wurden folgende Schritte durchgeführt: 1) Option Sitzung wiederherstellen bei Start des Browsers ist: Variante A: Deaktiviert Variante B: Aktiviert 2) Einloggen mit Hugendubel-Account/Thalia-Account/Nicht einloggen 3) Buch öffnen 4) Netzwerkverbindung trennen 5) Umblättern und Textstellen markieren 6) Browser schließen 7) Netzwerkverbindung wiederherstellen 8) Im Webreader anmelden Unter Variante A sind die markierten Textstellen nach Trennung der Netzwerkverbindung nicht mehr vorhanden, die Leseposition im Buch (Seite) ist nicht gespeichert. Mit Variante B hingegen sind die markierten Textstellen weiterhin vorhanden, die zuletzt angesehene Seite wird angezeigt. Die Bereiche im Cache, die spezifisch für den Webreader sind, liegen im Verzeichnis: /.mozilla/firefox/ycro0r1t.default/storage/default/ https+++webreader.mytolino.com/ Dort wurden keine Anhaltspunkte für die Speicherung der Daten gefunden. Hingegen änderten sich die Dateien im folgenden Verzeichnis: /.mozilla/firefox/ycro0r1t.default/sessionstore-backups/ Nach dem Anlegen einer Markierung wird dort zunächst eine Datei previous.jsonlz4 angelegt. Darauf folgen weitere Dateien mit Namen upgrade.jsonlz , wobei der letzte Teil des Namens ein Zeitstempel ist. Des Weiteren wird ein Wert gesetzt, welcher vermutlich angibt, dass in der letzten Sitzung die Netzwerkverbindung unterbrochen wurde. Dies erfolgt in der Datei /mozilla/firefox/ycro0r1t.default/sessioncheckpoints.json durch einen Eintrag der Form profile-change-net-teardown:true Einfluss des Lesens auf Produktvorschläge. Es wurde untersucht, ob der Lesefortschritt innerhalb der Bücher einer bestimmten Produktkategorie einen offensichtlichen Einfluss auf die Produktvorschläge auf der Webseite von thalia.de hat. Mit einem frischen Account und einer neuen Browsersitzung (Mozilla Firefox Privater Modus) wurde eine Reihe kostenloser E-Books geladen und bis zum in Tabelle 13 angegebenen Grad gelesen. Die daraufhin (nach 24 Stunden Wartezeit) erhaltenen 10 Buchvorschläge ( Ihre persönlichen Empfehlungen ) enthielten neben einem weiteren Buch von Markus Heitz ( Doors! - Blutfeld ) sowie eines von 40

43 Titel Autor Kategorie Lesefortschritt DOORS - Der Beginn Markus Heitz Krimis & Thriller Nicht geöffnet 50 Proteinreiche Schongarerrezepte Mattis Lundqvist Kochen & Backen Gelesen sowie als gelesen markiert Plätzchen, Tee und Winterwünsche Stina Jensen Romane & Erzählungen Nicht geöffnet Tabelle 13: Gelesene Bücher beim Test, ob diese Einfluss auf Produktvorschläge haben. Stina Jensen ( Misteln, Schnee und Winterwunder ) kein weiteres dieser Autoren. Bei den Buchkategorien dominierte Krimis & Thriller mit 6 Vorschlägen sowie Romane & Erzählungen mit 4 Empfehlungen. Bemerkenswert ist, dass in keinem der durchgeführten Testläufe ein Buch aus der Kategorie Kochen & Backen vorgeschlagen wurde, obwohl das einzige Buch, welches im Webreader geöffnet und gelesen wurde, aus dieser Kategorie stammt. Hier ist also kein direkter Einfluss des Lesefortschritts auf die Empfehlungen zu erkennen Zusammenfassung Die Analyse des Netzwerkverkehrs und des lokalen Cache der Browser zeigte verschiedene Ergebnisse, die Rückschlüsse auf die Datenübertragung zwischen dem Tolino-Webreader und den Anbietern zulassen. Sofern man ein Kundenkonto besitzt, wird die Information darüber, auf welcher Seite man sich im Buch befindet etwa 11 Sekunden nach dem Umblättern übertragen. Auch wenn Textstellen markiert, Markierungen gelöscht, oder auch Notizen eingefügt/gelöscht werden, wird diese Information gesendet. In Bezug auf Produktvorschläge war eine Verwendung der Daten über den Lesefortschritt und das Genre der bereits gelesenen Bücher nicht bemerkbar. Zumindest wurden keine für uns ersichtlich passenden Empfehlungen erteilt. Der Datenverkehr fand ohne eine Anmeldung nicht statt. Bei der Untersuchung des Caches fällt insbesondere auf, dass jedes Buch beim Öffnen als.epub- Datei in den Cache des Browsers geladen wird. Dabei ist es irrelevant, ob man angemeldet ist oder nicht. Zudem werden im Cache Informationen über noch nicht gesendete Pakete an den Server gespeichert, sofern die Internetverbindung beim Benutzen der Webanwendung unterbrochen wird. Eine Anfrage bei Thalia nach den dort gespeicherten personenbezogenen Daten ergab keine besonderen Auffälligkeiten. Zwar wurden die bei der Registrierung angegebenen Kundendaten sowie der letzte Einkauf des Kunden, das Erstellungsdatum der letzten Rechnung und Auftragsdaten zu den Käufen gespeichert. Daten, welche bei der Benutzung der Anwendung anfallen (z.b. Lesetempo, Markierungen, etc.), werden nicht aufgelistet. 5. Analyse der Datenschutzerklärungen der Web-Anwendungen Zusätzlich zur technischen Analyse wurden die Datenschutzerklärungen der beiden Web-Anwendungen betrachtet Tolino-Webreader Die Datenschutzerklärung der tolino-website und des tolino-webreader ist im Internet unter der Adresse [49] aufrufbar. Über den Umfang der Verarbeitung von Personenbezogenen Daten heißt es darin: Grundsätzlich verarbeiten wir Ihre personenbezogenen Daten nur, soweit dies zur Bereitstellung unserer Online-Angebote, Inhalte und Leistungen erforderlich ist. 41

44 Folgende Daten, die beim Besuch der Website erhoben werden, werden explizit gelistet: IP-Adresse des Nutzers Datum und Uhrzeit der Anfrage Inhalt der Anforderung (konkrete Seite) Zugriffsstatus/HTTP-Statuscode Jeweils übertragene Datenmenge Website, von der die Anforderung kommt Betriebssystem des Nutzers Sprache und Version der Browsersoftware. Während die Version der Browsersoftware (User Agent) und die Herkunftsseite (referrer) explizit genannt werden, fehlt eine Angabe von Cookies. Laut der Datenschutzerklärung werden diese Daten maximal 7 Tage in den Logfiles des Systems gespeichert. Bei einer zeitlich darüber hinausreichenden Speicherung werden die IP-Adressen anonymisiert [49, Abschnitt 5.1]. Zur Nutzernalyse kommt die open-source-software Matomo [20] zum Einsatz, welche durch die neuseeländische Firma InnoCraft betrieben wird. Laut Datenschutzerklärung werden die folgenden Daten durch Matomo gesammelt und verarbeitet: User s anonymized/pseudonymized IP address Requested website Referrer URL Subpages that were referred by the main page Time spent on the website Number of times the website was visited Request URL User Agent, including device information like language, device type and version, OC, device number, screen resolution,... If Javascript is activated If Java is activated If Cookies are usable Time and date of the request Form contents (only filledör not filled ) Laut Erklärung werden die Daten, die durch Matomo verarbeitet werden, anonymisiert bzw. pseudonymisiert. Leider werden beide Begriffe offenbar synonym verwenden, so dass es unklar ist, was tatsächlich gemacht wird. Laut eigenen Aussagen ( bleiben dabei zunächst alle Daten in den Händen der tolino media GmbH. Matomo kann angeblich keine Verbindung herstellen zwischen den Daten und einem bestimmten Benutzer. Im weiteren Verlauf der Erklärung heißt es [49, Abschnitt 5.3]: Eine Weitergabe von Daten an Dritte erfolgt nicht. Laut Erklärung speichert mytolino.de darüber hinaus keine personenbezogenen Daten, da sie den Nutzern keine Möglichkeiten bietet, sich unter Angabe personenbezogener Daten zu registrieren [49, Abschitt 5.4]. Um Bücher zu lesen, die käuflich erworben werden müssen, muss man sich jedoch mit dem Online-Konto eines Mitglieds der Tolio-Alianz anmelden. Sobald dies geschehen ist, wird man beim Aufruf der Datenschutzerklärung auf die Erklärung des jeweiligen Händlers (Thalia, Hugendubel. Weltbild, etc.) weitergeleitet. Mittels den erhobenen Daten ließe sich grundsätzlich auf das Leseverhalten einzelner Nutzer schließen. Aus der Lektüre der Datenschutzerklärung bleibt für den Rechtslaien unklar, ob die Ermittlung des Leseverhaltens und die Weitergabe dieser Daten an Dritte erfolgt oder nicht. 42

45 5.2. Kindle Beim Besuchen des Amazon-Webreaders wird man auf die allgemeinen Datenschutzrichtlinien von Amazon.de verwiesen, erreichbar unter [1]. Amazon listet keine expliziten Beispiele für Daten die erhoben werden, allerdings werden zahlreiche Beispiele gegeben, wozu erhobene Daten verwendet werden: Kauf und Lieferung von Produkten und Dienstleistungen Bereitstellung, Fehlerbehebung und Verbesserung der Amazon Services Empfehlungen und Personalisierung Bereitstellung von Sprachdiensten Einhaltung rechtlicher Verpflichtungen Kommunikation mit Ihnen Anzeigen Betrugsprävention und Kreditrisiken Zwecke, für die wir Ihre Einwilligung einholen Grundsätzlich lässt sich die Analyse des Leseverhaltens nicht ausschließen. Amazon gibt allerdings an, dass persönliche Informationen nur in besonderen Ausnahmefällen an Dritte weitergegeben werden. Dazu gehören die Abwicklung von Transaktionen, die Inanspruchnahme von Dienstleistungen anderer Unternehmen, der Verkauf von Geschäftsanteilen, sowie immer dann, wenn Amazon gesetzlich dazu verpflichtet sein sollte Zusammenfassung Beide Anbieter erwähnen die Analyse des Leseverhalten nicht explizit. Allerdings sammeln beide Webseitenbetreiber Daten, die es grundsätzlich ermöglichen Rückschlüsse auf das Leseverhalten zu ziehen. Zusätzlich geben beide Unternehmen an, dass sie persönliche Daten nicht, oder nur falls zum Anbieten von Dienstleistungen benötigt, an Dritte weitergeben. 6. Analyse des Kindle-Windows-Clients 6.1. Einführung Neben dem Kindle-Cloud-Reader zur Verwendung im Browser bietet Amazon eine Client-Anwendung für Microsoft Windows an, die ebenfalls das Lesen von E-Books ermöglicht. Durch ihre Installation direkt im Betriebssystem haben Client-Anwendungen potentiell andere (in der Regel mehr) Zugriffsrechte als Webapplikationen im System und sind aufgrund ihrer Natur (als native Binärprogramme) auch etwas schwerer zu untersuchen. Von Interesse sind deshalb die Analyseergebnisse insbesondere im Vergleich zu den Resultaten der Analyse des Cloud Readers. Soweit nicht anders vermerkt wurden sämtliche der folgenden Analysen auf einer virtuellen Maschine durchgeführt, die mittels VirtualBox Version virtualisiert wurde. Als Betriebssystem wurde Windows 10 eingesetzt. Untersucht wurde der offizielle Version Kindle für PC für Windows in der Version Analyse persistenter Spuren Analyse mittels Zustandsmethode. Für die Zustandsmethode wurde hier in einer virtuellen Maschine ein frisches Windows 10 angelegt, welches bei Microsoft als Testversion für 90 Tage angeboten wird. Von diesem Windows-System wurde für jede Aktion ein Abbild gemacht, um diese nach der 43

46 Zustandsmethode zu vergleichen. Hierfür wurde eine spezielle virtuelle Maschine genutzt, in der man mit einem Aufruf von idifference2.py zwei Festplattenabbilder vergleichen konnte [32]. Diese Ergebnisse werden im Folgenden präsentiert Installation. Mit der Zustandsmethode wurden die Differenzen von einem reinen Windows 10 System und einem Windows-Abbild nach der Installation des Kindle Windows Client betrachtet. Es war zu beobachten, dass insgesammt 125 Dateien angelegt wurden und zwar hauptsächlich dynamische Bibliotheken (dll-dateien). Allerdings wurden auch vier Plugins (KeduFTUEPlugin, flashcardsplugin, kloplugin, notebookexportplugin) automatisch installiert und es wurden einige Datenbanken angelegt. Interessant sind (und später untersucht werden) folgende Dateien: Users/IEUser/Documents/My Kindle Content/book_asset.db In dieser Datenbank werden alle einmalig geöffneten E-Books gelistet. Users/IEUser/Documents/My Kindle Content/ In diesem Ordner werden Ordner für die jeweiligen E-Books angelegt, die geöffnet wurden. Users/IEUser/AppData/Local/Amazon/Kindle/Cache/Metrics.txt In dieser Datei werden Daten über Metriken gespeichert sowie Synchronisationsinformationen. Users/IEUser/AppData/Local/Amazon/Kindle/Cache/db/sockeye.dat Hier werden später allgemeine Buchdaten abgelegt Anmelden und Buch öffnen. In der virtuellen Maschine haben wir uns im Kindle-Client mittels bei Amazon angemeldet und ein Buch geöffnet und geschlossen. Danach wurde das Programm geschlossen und Windows heruntergefahren. Nach Betrachung der veränderten Dateien konnten wir feststellen, dass alle Covers, die in der Bibliothek vorhanden waren, als.jpeg-dateien neu angelegt wurden. Abgesehen davon wurde das Buch, das geöffnet wurde, unter Users/IEUser/Documents/My Kindle Content/B004UBE08S_EBOK/B004UBE08S_EBOK.azw abgelegt. Alle E-Books werden unter einem neu anglegten Ordner als.azw-datei angelegt. Eine weitere Datei, die in dem Ordner des E-Books abgelegt wurde, ist Users/IEUser/Documents/My Kindle Content/B004UBE08S_EBOK/B004UBE08S_EBOK.phl und stellt offenbar ein Kindle Popular Highlights File dar. In dieser Datei werden markierte Textstellen gespeichert, sobald eine Markierung gemacht wurde [21]. Weitere interessante (neu angelegte) Dateien im Verzeichnis Users/IEUser/ sind folgende: AppData/Local/Amazon/Kindle/Cache/db/steelhead.dat Diese Datei enthält eine Art Message Queue, die vermutlich der Synchronisation dient. AppData/Local/Amazon/Kindle/Cache/db/sockeye.dat Diese Datei hat einen ähnlichen Inhalt wie steelhead.dat. AppData/Local/Amazon/Kindle/Cache/AnnotationCache.xml In dieser Datei werden alle Markierungen gespeichert. AppData/Local/Amazon/Kindle/Cache/KindleSyncMetadataCache.xml Hier werden E-Book-Informationen abgelegt. AppData/Local/Amazon/Kindle/Cache/plugins/notebookexportplugin/notebookexport.db Dies ist eine verschlüsselte Datenbank mit Plugins. AppData/Local/Amazon/Kindle/Cache/plugins/flashcardsplugin/flashcards-encrypted.db Dies ist offenbar auch eine verschlüsselte Plugin-Datenbank. All diese Dateien werden mit den Buchinformationen für die gesamte Kindle Library regelmäßig aktualisiert. 44

47 Nr. Typ Pfad Beschreibung 1 Dateisystem Drive:/users/(username) /AppData/Local/Amazon/ Kindle/application 2 Dateisystem Drive:/users/(username) /AppData/Local/Amazon/ Kindle/cache Ausführbare, statische Programm- und Applikationsdateien Temporäre und dynamische Dateien, Zwischenspeicher 3 Dateisystem Drive:/users/(username) Persönliche Kindle-Dateien und -Inhalte /Documents/MyKindleContent 4 Registry HKCU/Software/Amazon/Kindle Benutzer- und Programmeinstellungen Tabelle 14: Dateistruktur nach der Installation des Kindle-Clients für Windows. Wir konnten nicht beobachten, dass Dateien, die den Kindle-Client betreffen, gelöscht wurden. Allerdings wurden einige Dateien verändert oder umbenannt. Die Analyse mit idiffernce zeigt auf, dass höchstwahrscheinlich zum Download eine Microsoft Bibliothek verwendet wird: Bei umbenannten Dateien bekommt man mehrere Ergebnisse, die erst im Verzeichnis Users/IEUser/ in einem Unterordner von AppData/Local/Packages/Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy liegen und dann umbenannt und verschoben wurden in einen Unterordner einer der beiden folgenden Verzeichnisse: Users/IEUser/Documents/MyKindleContent Users/IEUser/AppData/Local/Amazon/Kindle/Cache. Neben den verschobenen Dateien sind auch die Dateien interessant, bei denen eine Datenänderung verzeichnet wurde. Häufig handelt es sich um die gleichen Dateien, die vorher in einen zu Kindle gehörigen Ordner verschoben wurden, aber manche Dateien waren schon vorher vorhanden, wie z.b die Metrics.txt, die ja schon bei der Installation angelegt wurde. Es werden jeweils die Zeitstempel Last Change Time (ctime), Last Modification Time (mtime) und Last Access Time (atime) mit verändert und sie haben für jede Datei, die verändert wurde, die jeweils gleiche Uhrzeit Ereignismethode Für die Analyse mittels der Ereignismethode wurde der von Microsoft angebotene Process Monitor in der Version 3.50 verwendet. Weiterhin wurde der Netzwerkverkehr mit Wireshark mitgeschnitten. Bei der Installation von Kindle für Windows auf einer neuen Windows 10 Installation zeichneten die beiden eben erwähnten Programme alle Aktivitäten auf. Vom Process Monitor wurden Ereignisse aufgezeichnet, welche mit der Installation von Kindle für Windows zusammenhängen. Darunter sind Vorgänge zum Anlegen von Dateien, Lesen und Verändern der Windows Registry und Ausführen von anderen benötigten Dateien zur Installation. Eine genauere Auswertung ergaben 125 relevante Dateien. Dabei wurde deutlich, dass schon bei der Installation Verbindungen zu Amazon-Servern aufgebaut werden, beispielsweise für ein Client-Hello und Server- Hello. Dieser Verkehr ist verschlüsselt Dateistruktur. Kindle für Windows legt die notwendigen Programmdateien an verschiedenen Speicherorten im System ab. Diese sind in Tabelle 14 aufgelistet. Eine detaillierte Liste über die wichtigsten Registry-Einträge und Dateien findet sich in Tabelle 15. Die folgenden Abschnitte sollen kurz die Funktionsweise des Programms erläutern und genauer auf ausgewählte Schlüsselereignisse eingehen. 45

48 Pfad/Datei [2]/logs/[1-n] Beschreibung Logdatei, neueste Einträge unten, Einträge werden offenbar nicht gelöscht [2]/KindleSyncMetadataCache.xml Enthält Informationen über E-Books [2]/db/sockeye.dat Vermutlich für Synchronisation, enthält Message Queue [2]/db/steelhead.dat Vermutlich für Synchronisation, enthält Message Queue [2]/recovery [2]/metrics.txt Vermutlich Recovery-Informationen Ähnlich logs1, enthält aber weniger Informationen, neueste Einträge zuerst, wird teilweise gelöscht [2]/AnnotationCache Zwischenspeicher zur Synchronisation von Anmerkungen und Markierungen [2]/plugins/keduftueplugin/kedu-ftue.db Datenbank mit Informationen zu Häufigkeit einzelner UI-Ereignisse [2]/plugins/notebooksexportplugin/notebookexport.db Verschlüsselte Plugin-SQLite- Datenbank [2]/plugins/flashcardsplugin/flashcards-encrypted.db Verschlüsselte Plugin-SQLite- Datenbank [3]/book_asset.db SQLite-Datei mit Informationen über Downloadstatus von Büchern und Zusatzdateien (Assets) [4]/last_syncmetadata_date Registry-Key für letzte Metadaten- Synchronisation [4]/LastSyncDate[0-7] Registry-Key für vergangene Metadaten-Synchronisationen Tabelle 15: Relevante Pfade und Dateien des Kindle-Clients für Windows (Verzeichniskürzel beziehen sich auf Zeilen in Tabelle Relevante Dateien. Tabelle 15 gibt einen kurzer Überblick über die wichtigsten Dateien und Registry-Einträge. Um die Pfade abzukürzen, werden Kürzel verwendet, die auf die Verzeichnisse in den Zeilen von Tabelle 14 verweisen Nutzung Anwendungsstart, Initialisierung. Beim Anwendungsstart werden insgesamt rund Ereignisse durch den Process Monitor erfasst. Diese wurden durch Überfliegen gesichtet; die wichtigsten werden hier benannt. Frühzeitig in der zeitlichen Abfolge wird auf die Datei book_asset.db zugegriffen, welche allgemeine Informationen über gespeicherte Bücher und insbesondere deren Downloadstatus sowie verknüpfte Inhalte enthält. Im weiteren Verlauf werden auch verschiedene Registry-Keys rund um die Metadaten- Synchronisation sowie Logdateien verwendet. Nach Aufruf der Datei sockeye.dat werden unterschiedliche Registry-Keys und Dateien gelesen, die Rückschlüsse darauf bieten könnten, dass der Kindle Windows Client intern teilweise den Internet Explorer oder Teile dessen zur Anzeige der Benutzungsoberfläche bzw. der Bücher nutzt. Dies sind beispielsweise der Registry Key HKCU/Software/Microsoft/Internet Explorer/DOMStorage sowie die folgenden beiden Verzeichnisse: AppData/local/microsoft/windows/InetCacheContent.IE5 AppData/local/microsoft/windows/InetCookies 46

49 Es wird auf die Datenbanken unterschiedlicher Kindle-Plugins zugegriffen. Erst spät erfolgt ein Zugriff auf die Datei steelhead.dat. Erst gegen Ende des Programmstarts kommen TCP-Requests zustande Bibliotheksübersicht. In der Kindle-Übersichtsseite erfolgen regelmäßige Aufrufe bzw. Synchronisationen. Primär umfassen diese die Dateien sockeye.dat, steelhead.dat, logs/1.txt sowie metrics.txt. Registry-Schlüssel rund um die Synchronisation von Metadaten werden nur in sehr seltenen Fällen verwendet Buch öffnen. Wurde das Programm zuvor verwendet, so werden durch das Öffnen eines Buchs nicht in jedem Fall sofort Ereignisse im Windows Process Monitor ausgelöst. Speziell die einzelnen Buch- Dateien im Ordner My Kindle Content werden nicht immer aufgerufen. Dies könnte darauf hindeuten, dass Buchinformationen ggf. bereits zuvor aus einem Cache geladen werden. Wenige Sekunden nach dem Öffnen eines Buchs werden allerdings unterschiedliche TCP-Requests an Amazon-Server versendet. Teilweise erfolgt ein Öffnen der Logdatei [2]/logs/1, wobei unterschiedliche Daten seitens des Clients dort hineingeschrieben werden, wie Listing 5 zeigt. Listing 5: Metriken bei Öffnen eines Buchs [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:BookOpenMultipleColumnView:FORMAT_5=1: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:BookOpenWithFont:FORMAT_5=1,FontFace-Bookerly: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:ColorModeWhiteAtBookOpen:FORMAT_5=1: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:PageWidthAtBookOpen:FORMAT_5=1,Value: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:FontSizeAtBookOpen:FORMAT_5=1,Value: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:BrightnessAtBookOpen:FORMAT_5=1,Value: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:AlignmentChangeSupported:FORMAT_5=1: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:BookOpenWithLeftAlignment:FORMAT_5=1: [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderSettings:BookOpenWithMediumLineSpacing:FORMAT_5=1: Seitenwechsel. Ein klarer Zusammenhang zwischen einem Seitenwechsel und Ereignissen im Process Monitor konnte nicht beobachtet werden. In einzelnen Fällen wird auf das jeweilige Buch im Ordner My Kindle Content zugegriffen. Es ist daher davon auszugehen, dass Kindle jeweils eine bestimmte Zahl an Seiten oder Zeichen im Voraus puffert, um so bei einem Seitenwechsel schnell die nächsten Seiten zur Verfügung zu haben. Bei einem Seitenwechsel über vorherige Seite oder nächste Seite erfolgen keine spezifischen Events im Process Viewer. Spannender ist die Navigation über die Leiste im unteren Bereich des Viewers. Hier wird eine Aktion in der Logdatei [2]/logs/1 registriert, wie Listing 6 zeigt. Listing 6: Metrik bei Seitenwechsel über Statusbar. [INFO][CMetricsManager] Reporting the following metric : Mazama: I Reading:MZMA_LocationJumpFromStatusBar: 47

50 Synchronisation. Kindle synchronisiert sich in unterschiedlichen Abständen mit Amazon-Servern. Dies kann mit Nutzerinteraktionen einhergehen (Seitenwechsel, zurück zur Startseite, Öffnen eines neuen Buchs), dies muss aber nicht zwangsweise der Fall sein. Sehr häufig erfolgt ein Zugriff auf die Dateien sockeye.dat und steelhead.dat. In beiden SQLite- Dateien befinden sich Tabellen namens Message Queue, wobei während der Verwendung des Programms im Rahmen unserer Analyse lediglich in der Datei sockeye.dat Einträge abgelegt wurden. Der Zugriff auf beiden Dateien geschah deutlich häufiger als die Synchronisation (d.h. das neue Setzen eines Datums in den entsprechenden Registry-Keys bzw. der Aufbau von TCP-Verbindungen). Darüber hinaus erfolgten vor- bzw. nach Synchronisationen auch Zugriffe auf die Dateien AnnotationCache.xml, die Datei /logs/1 sowie metrics.txt Plugins. In der standardmäßigen Installation sind drei Plugins für die Software enthalten, die auch jeweils eine eigene SQLite-Datenbank anlegen. Bis auf die Datenbank des Plugins KeduFTUE sind diese allesamt verschlüsselt. In der Datenbank des Plugins KeduFTUE finden sich Data keys mit Titeln wie GeneralAwarenessScreenShown, FlashcardsReaderTipShown, Unknown Reader Event oder AnnotationMade und einer jeweiligen Spalte Occurrences Anmerkungen. In der Datei AnnotationsCache.xml werden Anmerkungen (annotations) und Markierungen mit der Start- und Endposition, einem Zeitstempel sowie dem jeweiligen Text gespeichert. Nach erfolgreicher Synchronisation wird die Datei wieder geleert (es ist jedoch noch ein XML- Wurzel-Element vorhanden). Ebenfalls wird die Datei kedu-ftue.db verändert, der entsprechende Zähler AnnotationMadeAnnotationMade wird inkrementiert (siehe Listing 7). Listing 7: Metrik bei Hinzufügen von Annotationen oder Markierungen. [INFO][CMetricsManager] Reporting the following metric : Mazama: I SimpleAddNoteAndHighlightWidget:MZMA_AddNote: 6.4. Alternative Analyse persistenter Daten Im Folgenden wird über eine alternative Analyse der E-Reader-App Kindle for PC mittels der Zustandsmethode berichtet. Das Ziel dieser Analysemethode ist, Festplatten-Abbilder von verschiedenen Zuständen zu vergleichen, um die Änderungen im Dateisystem zu ermitteln. Dazu kam das Werkzeug idifference2.py aus dem DFXML-Framework [32] zum Einsatz. Jegliche Untersuchungen fanden innerhalb einer virtuellen Maschine mithilfe von VirtualBox statt. Dazu wurde als Gast ein vorgefertigtes, frei verfügbares Image von Windows 10 verwendet. Dieses Image mit dem Namen MSEdge.Win10.VirtualBox.zip 1 wurde von en-us/microsoft-edge/tools/vms/ heruntergeladen. Dort wurde MSEdge on Win10 (x64) Stable ( ) ausgewählt Erstellte Festplatten-Abbilder. Die Zustände haben wir mithilfe von Snapshots der virtuellen Maschine festgehalten und insgesamt acht Abbilder erstellt: image01: Ausgangsabbild mit eingerichtetem Windows 10 (und verkleinerter Festplatte). image02: Virtuelle Maschine einmal neu starten und wieder herunterfahren, um grob festzustellen, welche Dateien sich dabei ändern und um die Filter für die Nachbearbeitung der Ausgabe von idifference2.py zu kalibrieren. 1. SHA256-Hash: 36C13632CC BF041F2A81CC2CBBB0417EBFD965A2BC5A3C7F4E38E7 48

51 image03: Installation der Kindle for PC Anwendung. Dabei wird die Anwendung automatisch gestartet. Anschließend mit Benutzername und Passwort anmelden und die Anwendung wieder schließen. Für Installation und Anmeldung wurden jeweils getrennte Mitschnitte mit Process Monitor und Wireshark erstellt. image04: Kaufen eines kostenlosen E-Books auf amazon.com: Da das Angebot regelmäßig wechselt, fiel die Wahl auf Free Comic Book Day 2018: Avengers/Captain America #1 (ASIN B07CX7FLH3). Der Bestellvorgang lief innerhalb der virtuellen Maschine mit Microsoft Edge ab. Das Abbild wurde erstellt, um die Browserspuren vom Kauf nicht Teil der Ausgabe von idifference2.py werden zu lassen. Es stellt also die Ausgangslage für den Vergleich mit image05 dar. image05: Das im letzten Schritt gekaufte E-Book in der Kindle Anwendung öffnen, bis zum Ende lesen und Programm schließen. image06: Analog zu image04, Kauf von Minimalism: The Path to an Organized, Stress-free and Decluttered Life (ASIN B0714Q3XJ9). image07: Das im letzten Schritt gekaufte E-Book in der Kindle Anwendung öffnen, die ersten beiden Kapitel lesen, zwei Notizen hinzufügen und Programm schließen. image08: Gegenüber den anderen Abbildern bestand vom Hochfahren bis zum Herunterfahren der VM keine Internetverbindung. Es wurden ähnliche Aktionen wie in image07 durchgeführt, indem das Buch weitergelesen und eine dritte Notiz foonote3 erstellt wurde. Hiermit sollen Hypothesen bzgl. der Rolle der Dateien AnnotationCache.xml, sockeye.dat und steelhead.dat überprüft werden, nämlich ob sie als Cache für im Offline-Modus nicht absendbare Daten dienen. Die Untersuchung fokussiert sich auf die Differenzen zwischen den Abbildern 2 und 3, 4 und 5, 6 und 7, sowie 7 und Änderungen während der Installation und Registrierung. Die Änderungen am Dateisystem zwischen image02 und image03 umfassen: Unterordner AppData\Local\Amazon\Kindle im Benutzerprofil zwei Einträge im Startmenü Verknüpfung auf dem Desktop die folgenden vier Dateien: UserInfo.dll FindProcDLL.dll System.dll modern-header.bmp diverse Dateien im Browsercache, u. a. AppData\Local\Microsoft\Internet Explorer\DOMStore\LIWQ1P62\ AppData\Local\Microsoft\Windows\INetCache\IE\47ITWF2R\signin[1].htm diverse Dateien unter AppData\LocalLow\Microsoft\CryptnetUrlCache im Benutzerprofil Die Anwendung installiert sich also nicht systemweit sondern nur im Benutzerprofil. Anhand der beobachteten Änderungen im Browser-Cache wird klar, dass die automatisch bei Abschluss der Installation gestartete Kindle-Anwendung für die Anmelde-Maske (Authentifizierung mit dem Amazon-Konto) die Browser-Engine des Betriebssystems nutzt Änderungen bei Benutzung. Die Änderungen am Dateisystem zwischen image04 und image05 sowie zwischen image06 und image07 umfassen u. a. die folgenden Dateien. Aus Platzgründen wurde C:\Users\IEUser\AppData\Local\Amazon\Kindle abgekürzt mit <AppData_Kindle> und C: \Users\IEUser\Documents\MyKindleContent mit der Kurzform <Documents_Kindle>. Die Liste wurde zudem auf die beiden genannten Ordner beschränkt. 49

52 <AppData_Kindle>\Cache\AnnotationCache.xml <AppData_Kindle>\Cache\covers\31AE690F D72DFF613BC26AA2.jpg <AppData_Kindle>\Cache\db\sockeye.dat <AppData_Kindle>\Cache\db\steelhead.dat <AppData_Kindle>\Cache\KindleSyncMetadataCache.xml <AppData_Kindle>\Cache\Logs\1 <AppData_Kindle>\Cache\Metrics.txt <AppData_Kindle>\storage\.kinf2011 <Documents_Kindle>\B07CX7FLH3_EBOK\B07CX7FLH3_EBOK.azw <Documents_Kindle>\B07CX7FLH3_EBOK\CR!FRRNPZHKH91GHEFSG3N9F14A4JAD.azw.res <Documents_Kindle>\B07CX7FLH3_EBOK\B07CX7FLH3_EBOK.mbp <Documents_Kindle>\book_asset.db Bei image06 und image07 wurden nur verwendet: <AppData_Kindle>\Cache\covers\D55E33A9E C849793C72A.jpg <AppData_Kindle>\Cache\plugins\keduftueplugin\kedu-ftue.db <AppData_Kindle>\Cache\Logs\PaginationCache\...\27641eb0 sowie drei weitere gleichartig benannte Dateien <Documents_Kindle>\B0714Q3XJ9_EBOK\amzn1.drm-voucher.v1. d483bf8b-ccac-4621-b1f1-714e3f5f2203.voucher <Documents_Kindle>\B0714Q3XJ9_EBOK\B0714Q3XJ9_EBOK.azw <Documents_Kindle>\B0714Q3XJ9_EBOK\B0714Q3XJ9_EBOK.mbpV2 <Documents_Kindle>\B0714Q3XJ9_EBOK\CR!N1JK6R94ZS3B37ZZT06NA4TX2PAJ.azw.md <Documents_Kindle>\B0714Q3XJ9_EBOK\CR!9MP66NBRJN6QK1KPB3EMNBQXJPB0.azw.res <Documents_Kindle>\B07CX7FLH3_EBOK\B07CX7FLH3_EBOK.mbpV2 und die Datei mit Suffix.mbp wurde gelöscht Da nur bei image06 und image07 Anmerkungen im Text vorgenommen wurden, scheint bei den Annotationen keduftueplugin eine Rolle zu spielen. Die weitergehende Analyse der Process Monitor Protokolle ergab folgende zusätzliche Erkenntnisse: Die Datei sockeye.dat wird unter anderem dann geschrieben, wenn in Logs\1 die folgenden beiden Einträge auftreten: MessagingMessageBatchSent MessagingMessageSuccess Die Datei Metrics.txt wird im Abstand von 5 Minuten sowie beim Schließen eines Buchs und beim Beenden der Anwendung geschrieben, und sie tritt gemeinsam mit Eintrag Persisting metrics in Logs\1 auf. Die Datei AnnotationCache.xml wird beim Starten und Beenden der Anwendung, beim Schließen eines Buchs, beim Anlegen einer Annotation und beim Schließen des für Annotationen vorgesehenen Fensters geschrieben. Die Datei storage\.kinf2011 wird beim Download eines Buchs und beim Öffnen eines Buchs geschrieben. Die Datei book_asset.db wird beim Anwendungsstart und nach Abschluss des Downloads einer zum Buch gehörenden Datei geschrieben. Der Eintrag UploadJournalCommand in Logs\1 entsteht beim Schließen eines Buchs und geht mit Schreibzugriffen auf die folgenden Dateien einher: Logs\1 Metrics.txt KindleSyncMetadataCache.xml 50

53 sockeye.dat AnnotationCache.xml <ASIN>_EBOK.mbp Änderungen bei Benutzung ohne Internetverbindung. Im Vergleich zwischen image07 und image08 sind die gleichen Dateien von Änderungen betroffen wie im vorherigen Abschnitt. Es treten also keine Unterschiede auf, wenn keine Internetverbindung besteht Ergänzende Analyse mit Process Monitor: Registry-Einträge. Die Liste aller betroffenen Einträge in der Registry ist zu umfangreich, um hier dargestellt zu werden. Sie scheinen größtenteils dazu zu dienen, den aktuellen Zustand der Anwendung sowie Einstellungen des Benutzers festzuhalten. Wenige Einträge scheinen für die Fragestellung relevant zu sein, hierzu gehören: HKCU\Software\Amazon\Kindle\User Settings\autoSyncEnabled mit Wert 1 (mehrfach neu gesetzt) HKCU\Software\Amazon\Kindle\User Settings\should_sync_metadata mit wechselnden Werten (0 und 1) Beim letzten Eintrag wird der Wert 0 nur für Sekundenbruchteile gesetzt, bevor er wieder mit 1 überschrieben wird Ergänzende Analyse mit Process Monitor: Netzwerk. Es wurde verifiziert, dass Einträge in die folgenden Dateien zeitlich eng mit auftretendem Netzwerkverkehr korrelieren: UploadJournalCommand SendMetricsCommand MessagingMessageBatchSent MessagingMessageSuccess Damit ergibt sich, dass die sich bereits von der Bezeichnung suggerierte Bedeutung (im Sinne der Übertragung von Daten ins Internet) auch tatsächlich zutrifft. Die letzten beiden Einträge korrelieren außerdem mit Schreibzugriffen auf die Datei sockeye.dat, was die weiter unten im Abschnitt herausgearbeitete Rolle der Datei untermauert Gefundene Spuren des Benutzerverhaltens. Im Folgenden sind die Ergebnisse der detaillierten Untersuchung der durch die Zustandsmethode identifizierten Dateien aufgeführt. Der Lesbarkeit halber werden im Folgenden die beiden häufigsten Pfadpräfixe von Dateien wie folgt abgekürzt: C:\Users\IEUser\AppData\Local\Amazon\Kindle mit <AppData_Kindle> C:\Users\IEUser\Documents\My Kindle Content mit <Kindle_Content> <ASIN>_EBOK.azw. Die Datei ist unter dem Pfad <Kindle_Content>\<ASIN>_EBOK\ zu finden. Dies ist die eigentliche Buchdatei im proprietären Amazon Format. Wie bereits in den Analysen zuvor gezeigt, ist davon auszugehen, dass sie ausschließlich zum Lesen eines Buches genutzt wird. Nach dem Herunterladen des Buches wurde nicht mehr schreibend auf sie zugegriffen <ASIN>_EBOK.mbpV2. Die Datei ist unter dem Pfad <Kindle_Content>\<ASIN>_EBOK\ zu finden. Somit existiert pro heruntergeladenem Buch eine solche Datei. Die mbpv2-datei ist im JSON-Format abgelegt und enthält Informationen über die letzte gelesene Position (Seite) und über die vom User erzeugten Markierungen mit eventuellen Notizen. Dabei ist unklar, warum manche Dateien die Felder md5, acr, guid und key leer lassen. In den Listings 8 und 9 ist der Inhalt der jeweiligen Dateien, die aus image07 extrahiert sind, zu sehen. Augenscheinlich werden hier die folgenden Informationen gespeichert: 51

54 Listing 8: Datei B07CX7FLH3_EBOK.mbpV2 von image07 { } "md5": "5a9161ba46945a433f ea2968", "payload": { "acr": "CR!SBW9D29AK92JDDEGYHCZ4HPH36RV", "guid": "CR!SBW9D29AK92JDDEGYHCZ4HPH36RV:DC8C9AE1", "key": "B07CX7FLH3", "records": [ { "location": , "type": "kindle.most_recent_read" } ], "type": "EBOK" } Start- und Endpositionen der markierten Textstellen, sowie die Markierungsfarbe (siehe z. B. Zeilen 9 13 in Listing 9) Start- und Endpositionen der Notizen sowie der Klartext der Notizen (siehe z. B. Zeilen in Listing 9) Position, an der zuletzt gelesen wurde (siehe z. B. Zeile 37 in Listing 9) Durch gezielte Änderungen am Dateiinhalt während die App geschlossen war und anschließendem Neustart der App wurde ersichtlich, dass diese Datei tatsächlich der Speicherort dieser Informationen ist. Wenn man beispielsweise den Wert des location-feldes des Eintrages von kindle.most_recent_read auf eine bestimmten Wert X setzt, so wird beim nächsten Öffnen des Buches innerhalb der App die Stelle X aufgeschlagen. Dasselbe Verhalten beobachtet man auch für die Felder der Notizen bzw. Markierungen. Beispielsweise spiegelt sich eine Veränderung am text-feld eines kindle.note-eintrages im angezeigten Klartext der Notiz wieder. Zusammenfassend ist also zu diesen Dateien zu sagen, dass sie ganz eindeutig den zentrale Speicherort für den aktuellen Lesefortschritt und die kreierten Benutzermarkierungen und Notizen darstellen <ASIN>_EBOK.phl. Die Datei ist unter dem Pfad <Kindle_Content>\<ASIN>_EBOK\ zu finden. Hierbei ist anzumerken, dass nicht bei allen heruntergeladenen Büchern diese Datei im jeweiligen Ordner auftauchte. Die Datei verwendet das XML-Format und enthält sehr wahrscheinlich beliebte Markierungen ( Highlights ) von anderen Benutzern einer Amazon Kindle App oder eines Amazon Kindle-Gerätes. In Listing 10 ist der Inhalt der Datei, die zum Buch Les Misérables (ASIN B004GHNIRK) gehört, zu sehen. Die Vermutung, dass diese Datei tatsächlich beliebte Markierungen von anderen Benutzern enthält, wird durch den Wert popular_highlight der jeweiligen type-felder bestätigt. Amazon beschreibt diese Funktion auch explizit in ihren Hilfeseiten, beispielsweise unter help/customer/display.html?nodeid= In der App kann man das Feature anzeigen, indem man auf View und dann auf Popular Highlights klickt. In Abbildung 30 ist zu sehen, wie der Benutzer dann dieses Feature präsentiert bekommt. Auch hier ist wieder klar ersichtlich, dass pro Markierung die Start- und Endpositionen gespeichert 52

55 1 { Listing 9: Datei B0714Q3XJ9_EBOK.mbpV2 von image07 2 "md5": "", 3 "payload": { 4 "acr": "", 5 "guid": "", 6 "key": "", 7 "records": [ 8 { 9 "endposition": 14152, 10 "metadata": { 11 "mchl_color": "blue" 12 }, 13 "startposition": 14065, 14 "type": "kindle.highlight" 15 }, 16 { 17 "endposition": 14152, 18 "startposition": 14152, 19 "text": "foonote", 20 "type": "kindle.note" 21 }, 22 { 23 "endposition": 15731, 24 "metadata": { 25 "mchl_color": "blue" 26 }, 27 "startposition": 15660, 28 "type": "kindle.highlight" 29 }, 30 { 31 "endposition": 15731, 32 "startposition": 15731, 33 "text": "foonote2", 34 "type": "kindle.note" 35 }, 36 { 37 "location": 23606, 38 "type": "kindle.most_recent_read" 39 } 40 ], 41 "type": "" 42 } 43 } 53

56 Listing 10: Datei B004GHNIRK_EBOK.phl zum Buch Les Misérables (ASIN B004GHNIRK) <?xml version="1.0" encoding="utf-8" standalone="yes"?> <popular timestamp=" :01:12" update_id="1"> <content type="ebok" key="b004ghnirk" guid="cr!521yw0txqd6m11ygkyt4x78gkjcs" version="0"> <annotation start_pos="19463" end_pos="19612" num_users="9283" type="popular_highlight" /> <annotation start_pos="22456" end_pos="22598" num_users="4209" type="popular_highlight" /> <annotation start_pos="45713" end_pos="45849" num_users="4707" type="popular_highlight" /> <annotation start_pos="46453" end_pos="46563" num_users="4065" type="popular_highlight" /> <annotation start_pos="47111" end_pos="47639" num_users="1638" type="popular_highlight" /> <annotation start_pos="61222" end_pos="61671" num_users="4292" type="popular_highlight" /> <annotation start_pos="64155" end_pos="64258" num_users="2495" type="popular_highlight" /> <annotation start_pos="71095" end_pos="71180" num_users="3847" type="popular_highlight" /> <annotation start_pos="73252" end_pos="73384" num_users="2797" type="popular_highlight" /> <annotation start_pos="79785" end_pos="80105" num_users="6852" type="popular_highlight" /> </content> </popular> werden, wobei das Feld num_users interessant ist. Es ist zwar nicht überprüfbar, aber durch die Namensgebung dieses Feldes bzw. durch die Anzeige in der App liegt es nahe, dass der Wert dieses Feldes die tatsächliche Anzahl der anderen Benutzer, die ebenfalls diese Markierung getätigt haben, darstellt Log 1. Die Datei 1 ist zu finden unter <AppData_Kindle>\Cache\Logs\1. Diese Datei scheint als internes Protokoll für das Kindle-Programm zu dienen. Das Format der Datei ähnelt grundlegend dem Format einer syslog-protokolldatei. So beginnt jede Zeile mit einem Zeitstempel im Format JJMMTT:HHMMSS. Darauf folgt eine Typbeschreibung in eckigen Klammern, z. B. [WARN] oder [INFO]. Anschließend steht der Name eines Softwaremoduls in eckigen Klammern, z. B. [CMetricsManager]. Der letzte Teil wiederum ist dann die Nachricht. In der Datei stehen dabei die jüngsten Einträge am Dateiende und die ältesten am Dateianfang. Durch den Vergleich der verschiedenen Abbilder ist ersichtlich, dass zumindest in der untersuchten Zeitspanne die ältesten Einträge nicht gelöscht werden. An die Datei ist stetig neuer Inhalt angehängt worden. Ob das Protokoll erst nach Tagen oder einigen Monaten verkleinert wird, erfordert eine längerfristige Untersuchung und wurde nicht geprüft. Bei der Sichtung der Logdateien wurde schnell klar, dass dort Spuren des Benutzerverhaltens enthalten sind. Vor allem werden Interaktionen mit der grafischen Benutzerschnittstelle (GUI) bzw. Ereignisse der 54

57 Abbildung 30: Die Ansicht von Popular Highlights der Kindle Client App geöffnet im Buch Les Misérables. GUI aufgezeichnet. Es folgt eine beispielhafte Liste einiger solcher Spuren: Die Auflösung des Nutzers wird gespeichert, siehe Zeile 2 in Listing 11. Das Fertigstellen eines Buchdownloads wird gespeichert, siehe Zeile 4 in Listing 11. Das Umblättern mittels Mausrad wird gespeichert, siehe Zeile 6 in Listing 11. Das Interagieren mit der GUI wird gespeichert, siehe Zeile 8 9 in Listing 11. Das Schließen eines Buches wird gespeichert, siehe Zeile 10 in Listing 11. Das Markieren und Annotieren von Text wird gespeichert, siehe Zeile in Listing 11. Zusammenfassend ist also zu dieser Datei zu sagen, dass sie viele lokale Spuren des Benutzerverhaltens enthält, aber anscheinend hauptsächlich dem Debugging dient. Beispielsweise wird protokolliert, dass der Benutzer sein Mausrad zum Umblättern nutzt, aber nicht welche Position (Seiten) er dabei anschaut. Außerdem ist hier ein erster Hinweis darauf zu finden, dass bestimmte Metriken der App an eine dritte Partei versendet werden, siehe Zeilen der Logdateien mit dem Namen CMetricsManager und der anschließenden Formulierung Reporting the following metric in Listing Metrics.txt. Die Datei ist unter dem Pfad <AppData_Kindle>\Cache\Metrics.txt zu finden. Sie enthält Nachrichten, die in dem zuvor gezeigtem Protokoll vom Softwaremodul CMetrics- Manager aufgezeichnet wurden. Beispielsweise stimmen die Inhalte der Zeilen 12 und 13 aus Listing 11 mit Zeilen 2 und 3 aus Listing 12 überein. 55

58 Listing 11: Auszug aus dem Log von image [ :55:48:778] [INFO][CMetricsManager] Reporting the following metric : Mazama: I Application:ScreenResolution_1024x768: [ :06:02:460] [INFO][CMetricsManager] Reporting the following metric : Mazama: I Download:BookDownloadFinished:ContentLength= , ContentType-application_x-mobi8-ebook,Duration=26531,Success: [ :14:15:962] [INFO][CMetricsManager] Reporting the following metric : Mazama: I PageViewerWrapper:PageTurnScrollWheel: [ :15:34:437] [INFO][CMetricsManager] Reporting the following metric : Mazama: I KRX:PluginSidePanelCloseOnButtonClick_EBAR: 9 [ :15:34:437] [INFO][CMetricsManager] Reporting the following metric : Mazama: I ReaderViewWrapper:MZMA_HideAnnotations: 10 [ :15:35:592] [INFO][CMetricsManager] Reporting the following metric : Mazama: I Reading:MZMA_BookClose: [ :14:53:134] [INFO][CMetricsManager] Reporting the following metric : Mazama: I SimpleAddNoteAndHighlightWidget:HighlightColorSelectedBlue: 13 [ :14:53:134] [INFO][CMetricsManager] Reporting the following metric : Mazama: I SimpleAddNoteAndHighlightWidget:MZMA_AddHighlight: 14 [ :14:53:180] [INFO][KeduFTUEPlugin/KeduFTUE:SQLiteDataEntryDAO] Reporting occurrence for key: AnnotationMade Listing 12: Auszug aus der Datei Metrics.txt von image :<0x01>181120: Mazama: I SimpleAddNoteAndHighlightWidget:MZMA_AddHighlight: :<0x01>181120: Mazama: I SimpleAddNoteAndHighlightWidget:HighlightColorSelectedBlue: 4... Im Gegensatz zum Log stehen in dieser Datei die jüngsten Einträge am Dateianfang und die ältesten am Dateiende. Außerdem ist durch den Vergleich der verschiedenen Images ersichtlich, dass diese Datei mit jedem Start der Kindle for PC App neu angelegt bzw. komplett überschrieben wird zumindest solange eine aktive Internetverbindung besteht. Im Falle von image08, bei der keine aktive Internetverbindung bestand, war nach Benutzeraktivität und Schließen der App klar ersichtlich, dass neuer Inhalt an den alten Inhalt der Datei (also auch schon in image07 vorhandener Inhalt) angefügt wurde. Deshalb ist zu vermuten, dass diese Datei als Cache bzw. Zwischenspeicher dient, um Metriken über das Internet zu versenden. Diese Vermutung wird auch gestützt durch die Beobachtung, dass die obersten (d. h. jüngsten) Einträge dieser Datei auf einen Upload eines Journals hinweisen. Dort fällt auch auf, dass bei image08 ohne Internetverbindung der Upload fehlschlägt (vergleiche dazu Listing 13 mit Listing 14). Zusammenfassend kann man also über die Datei Metrics.txt sagen, dass sie sehr wahrscheinlich Metriken über die letzte Benutzung der App enthält. Diese sollen wohl spätestens beim Beenden des Kindle Clients an einen Server gesendet werden, da die Datei wie erwähnt bei aktiver Internetverbindung überschrieben wird. Grundsätzlich findet sich hier kein neuer Inhalt, sondern eine Teilmenge des Log, da die Metrics.txt nur Zeilen des CMetricsManager enthält. Insgesamt wird jedoch deutlich, dass 56

59 Listing 13: Auszug aus der Datei Metrics.txt von image :<0x01>181120: Mazama: I UploadJournalCommand:UploadJournalSuccess: 51068:<0x01>181120: Mazama: I AppStateManager:MZMA_ShowLib: 51068:<0x01>181120: Mazama: I Reading:ExternalViewerClosed: 51068:<0x01>181120: Mazama: I UploadJournalCommand:UploadJournalAttempt:... Listing 14: Auszug aus der Datei Metrics.txt von image :<0x03>181130: Mazama: E SyncCommand:SyncCommandError: 51068:<0x03>181130: Mazama: E UploadJournalCommand:UploadJournalError: 51068:<0x03>181130: Mazama: E Library:GetAllDevicesWithCollectionsError: 51068:<0x01>181130: Mazama: I CSynchronizationManager:ExitSyncError:Timer=37: 51068:<0x01>181130: Mazama: I UploadJournalCommand:UploadJournalAttempt:... Metriken über das Interagieren mit der App an einen Server gesendet werden. Diese Metriken beschreiben insbesondere das Interagieren mit der graphischen Benutzungsoberfläche, aber auch allgemein das Leseverhalten book_asset.db. Die Datei ist zu finden als <Kindle_Content>\book_asset.db. Es handelt sich dabei um eine SQLite-Datenbank, die Informationen über alle heruntergeladenen Bücher enthält. Die relevantesten Datenbanktabellen heißen Asset (siehe Tabelle 16) und Book (siehe Tabelle 17). Des Weiteren existieren in der Datei noch die folgenden Tabellen, die aber im Folgenden nicht weiter betrachtet werden: AssetDownloadInfo BookDownloadInfo DeliveryType DownloadState EndpointType RequirementLevel VersionInfo sqlite_sentence Name Typ Besonderheit id INTEGER PRIMARY KEY AUTOINCREMENT bookid INTEGER UNIQUE guid TEXT NOT NULL requirementlevel INTEGER FOREIGN KEY size INTEGER contenttype TEXT NOT NULL localfilename TEXT downloadstate INTEGER DEFAULT 1, FOREIGN KEY Tabelle 16: Aufbau der Tabelle Asset. In Abbildungen 31 und 32 ist der jeweilige Inhalt der Tabellen aus image07 zu sehen. Grundsätzlich enthält die Datei nur triviale Spuren des Nutzerverhaltens. Für die weitere Analyse war es aber wichtig zu 57

60 Name Typ Besonderheit id INTEGER PRIMARY KEY AUTOINCREMENT asin TEXT NOT NULL, UNIQUE type TEXT NOT NULL, UNIQUE revision TEXT sampling TEXT NOT NULL, UNIQUE Tabelle 17: Aufbau der Tabelle Book sehen, dass anscheinend Meta-Informationen zu den jeweiligen Büchern in Dateien mit dem Namensaufbau <kryptischername>.azw.md enthalten sind steelhead.dat und sockeye.dat. Im Pfad <AppData_Kindle>\Cache\db\ sind die Dateien steelhead.dat und sockeye.dat zu finden. Beides sind SQLite-Datenbanken, die an der Übertragung von Daten an Amazon beteiligt zu sein scheinen. Beide Dateien habe das gleiche Schema mit den folgenden vier Tabellen: collection_item_v1_0 collection_v1_0 collection_version message_queue_v1 Von diesen Tabellen wurde nur die letztgenannte als interessant eingestuft. In Tabelle 18 ist der Aufbau dieser Tabelle zu sehen. Name Typ Besonderheit message_id TEXT PRIMARY KEY topic TEXT PRIMARY KEY payload BLOB NOT NULL crc INTEGER NOT NULL signature CLOB NOT NULL auth_token TEXT NOT NULL state INTEGER NOT NULL submission_date DATETIME NOT NULL last_try_date DATETIME next_try_date DATETIME retry_count INTEGER NOT NULL priority INTEGER NOT NULL Tabelle 18: Aufbau der Tabelle message_queue_v1. In Listing 15 ist beispielhaft der gekürzte Inhalt einer sockeye.dat zu sehen. Offenbar scheint die Tabelle message_queue_v1 Nachrichten zu enthalten, die gesendet werden sollen. Dabei ist klar erkenntlich, dass Nachrichten dabei verschlüsselt (enc im Feld auth_token) und signiert (Feld signature) werden. Hierbei ist zu erwähnen, dass bei der Analyse versucht wurde, einzelne Teilfelder des Inhaltes der Dateien mit dem Befehl base64 -d lesbar zu machen. Dies gelang nur für das Feld {name:<>} innerhalb des auth_token Feldes, wobei dort stets als Ergebnis der Klartext ADPTokenEncryptionKey herauskam. Es ist leider nicht möglich, direkt Aussagen über den Inhalt dieser Nachrichten zu treffen. Wenn man allerdings das Zugriffsverhalten beider Dateien betrachtet, so kann man vermuten, dass Informationen über das Interagieren mit den Büchern (Lesen, Markieren, etc.) gesendet werden. In der Tabelle message_queue_v1 der Datei steelhead.dat war außer in image08 kein Inhalt. Somit scheint diese Datei ebenfalls als Zwischenspeicher für Daten, die übertragen werden sollen, zu dienen. 58

61 59 Abbildung 31: Der Inhalt der Tabelle Asset innerhalb der Datei book_asset.db von image07.

62 Abbildung 32: Der Inhalt der Tabelle Book innerhalb der Datei book_asset.db von image07. Listing 15: Gekürzter Inhalt von message_queue_v1 aus sockeye.dat von image07, dargestellt im JSON-Format. { } "message_id": "{fefe5a57-627b-4850-ad28-9a9960b37d7b}", "topic": "Kindle.DeviceReadingStreams", "payload": "031F8B A85555DD934B54D9A48C55EA...", "crc": , "signature": "t+cj...", "auth_token": "{enc:rdw...}{iv:cpjatxmlsg7aww6n+q7jda==} {name:qurqvg9rzw5fbmnyexb0aw9us2v5}{serial:mg==}", "state": 1, "submission_date": "2018/11/20 14:18:21", "last_try_date": null, "next_try_date": "2018/11/20 14:18:21", "retry_count": 0, "priority": <kryptischername>.azw.md. Die Datei <kryptischername>.azw.md ist zu finden im Verzeichnis <Kindle_Content>\<ASIN>_EBOK\. Wie zuvor beschreiben, enthält sie laut den Einträgen in book_asset.db Metadaten über ein Buch. Dabei ist wichtig anzumerken, dass nicht für jedes Buch eine solche Datei angelegt wird. Die Datei wird aber nach dem initialem Schreiben beim Buchdownload nur noch gelesen. Es ist anzunehmen, dass die Datei teilweise verschlüsselt ist, da ein Großteil der Datei nicht lesbare Strings enthält und keines der benutzten Tools ein bekanntes Format für die Datei finden konnte. Innerhalb der Datei sind Teile im Klartext lesbar. Zum Beispiel sind relativ am Ende der Datei die Kapitel des Buches aufgezählt AnnotationCache.xml. Die Datei <AppData_Kindle>\Cache\AnnotationCache.xml ist mit funktionierendem Internet-Anschluss normalerweise bis auf eine Zeile leer zu sein (siehe beispielhaft Listing 16). Wenn das System allerdings keinen Zugang zum Internet hat (wie in image08 simuliert), wird deutlich, dass diese Datei tatsächlich als Cache für die Markierungen oder Notizen genutzt wird, wie aus Listing 17 ersichtlich wird. 60

63 Listing 16: Die Datei AnnotationCache.xml von image06. <annotations timestamp=" t05:15:50" version="1.0"></annotations> Listing 17: Die Datei AnnotationCache.xml von image08. <annotations timestamp=" t12:14:30" version="1.0"> <book guid="cr!99agjjnmcx14q5101n322zqrawqd" key="b0714q3xj9" type="ebok" version="0" format="yjbinary"> <highlight action="create" begin="40706" end="40771" pos="40706" state="00009f43" timestamp=" t12:12:37"> <metadata> <![CDATA[{"mchl_color":"blue"}]]> </metadata> </highlight> <note action="create" begin="40771" end="40771" pos="40771" state="00009f43" timestamp=" t12:12:44"> foonote3</note> <last_read begin="49447" pos="49447" state="0000c127" timestamp=" t12:14:30"></last_read> </book> </annotations> KindleSyncMetadataCache.xml. Wir fanden eine Datei, die eine Liste aller Bücher im Besitz des Accounts enthält. Diese Datei mit Namen <AppData_Kindle>\Cache\KindleSyncMetadataCache.xml ist im XML-Format abgelegt und speichert auch alle vorinstallierten Wörterbücher. Ein Auszug dieser Datei (siehe Listing 18) zeigt, was pro Buch an Informationen gespeichert wird: die ASIN in Zeile 10 in Listing 18 der Titel in Zeilen 11 und 12 die Autoren in Zeilen 13 bis 15 das Veröffentlichungsdatum in Zeile 17 das Kaufdatum in Zeile kedu-ftue.db. Wir fanden eine valide SQLite-Datenbank mit dem Namen kedu-ftue.db im Verzeichnis <AppData_Kindle>\Cache\plugins\keduftueplugin\. In dieser Datei befinden sich die zwei Tabellen KeduFTUE (vergleiche Tabelle 19) und ReaderTable, wobei das Schema von ReaderTable mit dem von KeduFTUE übereinstimmt. In Abbildungen 33 und 34 ist der jeweilige Inhalt der Tabellen aus image07 zu sehen. Es ist zu vermuten, dass dort Metadaten zu übertragenen, eventuell verschlüsselten Metadaten enthalten sind. Des Weiteren vertreten die Autoren die Hypothese, dass das Plugin keduftueplugin in die Übertragung der Informationen über erstellte Annotationen involviert ist. Durch die Analyse ist ersichtlich, dass bei der Erstellung einer Annotation ein Eintrag in diese SQLite-Datenbank erstellt bzw. ein vorhandener aktualisiert wurde. Solange keine Annotation gemacht wurde (d. h. bis image07), war die 61

64 Listing 18: Auszug aus KindleSyncedMetadataCache.xml von image07 1 <response> 2 <sync_time> T14:10: ;softwareVersion:51068;SE:F;SC:F;ST:KB , Periodical ,</sync_time> 4 <cache_metadata> 5 <version>1</version> 6 </cache_metadata> 7 <add_update_list> <meta_data> 10 <ASIN>B0714Q3XJ9</ASIN> 11 <title pronunciation="">minimalism: The Path to an Organized, 12 Stress-free and Decluttered Life</title> 13 <authors> 14 <author pronunciation="">snow, Gwyneth</author> 15 </authors> 16 <publishers></publishers> 17 <publication_date> t03:51: </publication_date> 18 <purchase_date> t13:37: </purchase_date> 19 <textbook_type></textbook_type> 20 <cde_contenttype>ebok</cde_contenttype> 21 <content_type>application/x-mobipocket-ebook</content_type> 22 </meta_data> 23 </add_update_list> 24 </response> Name Typ Besonderheit DataKey TEXT PRIMARY KEY LastOccurrence INT Zeitstempel im UNIX-Epoch-Format Occurrences INT Tabelle 19: Aufbau der Tabelle KeduFTUE. Datei leer. Wie zuvor gezeigt, ist außerdem in dem Log zu sehen, dass das Plugin sich meldet, wenn in der SQLite-Datei Änderungen beispielsweise nach dem Erstellen einer Notiz geschehen Analyse des Netzwerkverkehrs Aufgrund der Funktionalität des Clients (u.a. Herunterladen von E-Books, Synchronisation zwischen verschiedenen Geräten) muss Netzwerkverkehr zu den Servern von Amazon hergestellt werden. Um den Abbildung 33: Der Inhalt der Tabelle KeduFTUE innerhalb der Datei kedu-ftue.db von image07. 62

65 Abbildung 34: Der Inhalt der Tabelle ReaderTable innerhalb der Datei kedu-ftue.db von image07. Umfang der hierbei an Amazon abfließenden Daten abschätzen zu können, wurde eine Analyse des Netzwerkverkehrs der Anwendung durchgeführt. Ebenso wurde untersucht, inwiefern die übertragenen Daten für die beworbenen Funktionen notwendig sind, beziehungsweise darüber hinaus gehen Vorgehensweise. Der gesamte externe Datenverkehr des Programms wird mittels HTTPS verschlüsselt übertragen. Somit ist ein einfaches Mithören des Netzwerktraffics nicht möglich. Um diesen dennoch analysieren zu können wurde die Software Burp Suite Free in der Version eingesetzt. Diese ermöglicht es, den initialen Schlüsselaustausch zwischen Programm und Server, mit dem der folgende Netzwerkverkehr verschlüsselt wird, mittels eines Man-in-the-Middle-Angriffs abzufangen. Das Programm gibt sich in Folge dessen sowohl dem angegriffenen Programm als auch dem Server gegenüber als jeweils anderer Kommunikationspartner aus und führt jeweils einen eigenen Schlüsselaustausch durch. In Folge dessen kann Burp Suite den mitgeschnittenen Netzwerkverkehr entschlüsseln und mitlesen, ohne dass es von den Kommunikationspartnern bemerkt wird. Um den ausgehenden Netzwerkverkehr des Kindle Clients zum aufgesetzten Burp Suite Proxy zu lenken, wurden die Proxy Einstellungen des Kindle Clients über das entsprechende Menü abgeändert. Damit sich das Tool gegenüber dem Client erfolgreich als der entsprechende Kommunikationspartner (in diesem Fall Amazon Server) ausgeben kann, muss es sich gegenüber dem Programm erfolgreich authentifizieren. Das hierfür benötigte Zertifikat kann mittels Burp Suite automatisch erzeugt und anschließend in Windows installiert werden. Eine Übersicht über die Vorgehensweise ist in Abbildung 35 dargestellt. Der Kindle Client verwendet kein Certificate Pinning, sodass anschließend der Netzwerkverkehr des Programms im Klartext mitgeschnitten werden kann. Abbildung 35: Struktur des Man-in-the-Middle-Angriffs Verwaltung der Bibliothek. Bei Programmstart wird überprüft, ob eine Verbindung zum Amazon Server hergestellt werden kann. Ist dies der Fall, erhält das Programm aktuelle Informationen zu verwendeten Geräten (E-Bookreader, Leseapps) und der Bibliothek des Nutzers (aktueller Lesestand, letzte Synchronisationszeit) vom Server. Von dem Programm zum Server wird dabei lediglich der angemeldete Benutzer und die aktuelle Version der installierten Software übertragen. 63

CADEMIA: Einrichtung Ihres Computers unter Windows

CADEMIA: Einrichtung Ihres Computers unter Windows CADEMIA: Einrichtung Ihres Computers unter Windows Stand: 30.01.2017 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert sein.

Mehr

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

CADEMIA: Einrichtung Ihres Computers unter Mac OS X CADEMIA: Einrichtung Ihres Computers unter Mac OS X Stand: 30.01.2017 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert sein.

Mehr

Ausfüllen von PDF-Formularen direkt im Webbrowser Installation und Konfiguration von Adobe Reader

Ausfüllen von PDF-Formularen direkt im Webbrowser Installation und Konfiguration von Adobe Reader Ausfüllen von PDF-Formularen direkt im Webbrowser Installation und Konfiguration von Adobe Reader Wenn Sie PDF-Formulare direkt im Webbrowser ausfüllen möchten, so benötigen Sie den Adobe Reader als Plug-in

Mehr

Anleitung zur (Version 4)

Anleitung zur (Version 4) Anleitung zur (Version 4) Diese Anleitung soll Ihnen helfen, E-Medien aus dem Verbund der Öffentlichen Bibliotheken Berlins zu benutzen. Wir erklären Ihnen, wie die Onleihe mit dem E-Book-Reader Tolino

Mehr

Anleitung ebooks. 1. Der Kauf von ebooks über den Onlineshop

Anleitung ebooks. 1. Der Kauf von ebooks über den Onlineshop Anleitung ebooks 1. Der Kauf von ebooks über den Onlineshop Wenn Sie über unseren Onlineshop ein ebook (im Dateiformat epub) erworben haben, erhalten Sie zunächst eine Benachrichtigung per E-Mail (zusätzlich

Mehr

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java

CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java CADEMIA: Einrichtung Ihres Computers unter Linux mit Oracle-Java Stand: 30.01.2017 Java-Plattform: Auf Ihrem Computer muss die Java-Plattform, Standard-Edition der Version 7 (Java SE 7) oder höher installiert

Mehr

Virtuelle Desktop Infrastruktur

Virtuelle Desktop Infrastruktur Virtuelle Desktop Infrastruktur Inhaltsverzeichnis 1. Hintergrund 2. VMware Horizon View Clients 3. Installation VMware Horizon View Client 3.1. Installation für Windows 3.2. Installation für OS X 3.3.

Mehr

Das Tablet mit Android 6.x. Kommunikation & Organisation Fotos, Videos & Medien. Markus Krimm. 1. Ausgabe, Juli 2016 ISBN

Das Tablet mit Android 6.x. Kommunikation & Organisation Fotos, Videos & Medien. Markus Krimm. 1. Ausgabe, Juli 2016 ISBN Markus Krimm. Ausgabe, Juli 206 ISBN 978-3-86249-593- Das Tablet mit Android 6.x Kommunikation & Organisation Fotos, Videos & Medien K-TAB-AND6X-G 4 Kommunikation Mit Threema Nachrichten sicher verschicken

Mehr

Repair Guide für das tolino tab 8

Repair Guide für das tolino tab 8 Repair Guide für das tolino tab 8 Ein Software-Update der Google Play-Dienste durch Google kann aktuell auf dem tolino tab 8 zu Problemen bei der Nutzung von Google Play Diensten (Google Play Store, Google

Mehr

Anleitung für den Verbindungsaufbau mit der realcloud Workplace Demo-Umgebung

Anleitung für den Verbindungsaufbau mit der realcloud Workplace Demo-Umgebung Anleitung für den Verbindungsaufbau mit der realcloud Workplace Demo-Umgebung Das Produkt realcloud Workplace basiert auf der Citrix XenDesktop Technologie und stellt Ihnen in einem deutschen Hochsicherheits-Rechenzentrum

Mehr

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks

Eine Untersuchung der Funktionen des Apache Wicket Webframeworks Eine Untersuchung der Funktionen des Apache Wicket Webframeworks Seminararbeit von Olaf Matticzk 1 15.01.2016 (c) by synaix 2016 synaix...your business as a service. Agenda 1. Einleitung 2. Webanwendungen

Mehr

Google Gears Offline Web?

Google Gears Offline Web? Google Gears ist eine Browsererweiterung, die es in sich hat. Dem Webanwendungsentwickler werden Dienste bereitgestellt, die es ermöglichen, Webanwendungen so zu schreiben, dass eine Offline-Arbeit möglich

Mehr

1 Information über die Erhebung personenbezogener Daten

1 Information über die Erhebung personenbezogener Daten Datenschutzerklärung Informationspflicht nach Art. 13 und 14 der DSGVO 1 Information über die Erhebung personenbezogener Daten (1) Im Folgenden informieren wir über die Erhebung personenbezogener Daten

Mehr

bea Client-Security herunterladen und installieren unter Windows

bea Client-Security herunterladen und installieren unter Windows bea Client-Security herunterladen und installieren unter Windows Die Links zum Download der bea Client-Security finden Sie auf der Startseite unter https:// www.bea-brak.de. Das Installationsprogramm für

Mehr

Dineso Software - Technische Daten

Dineso Software - Technische Daten Dineso Software - Technische Daten Zahlen, Daten, Fakten zu Software und Anwendung Inhaltsverzeichnis: 1. Allgemeine Informationen zur Dineso Software 2. Technische Voraussetzungen 3. Ablauf eines BI-Projektes

Mehr

auf den ebook-reader Stand:

auf den ebook-reader Stand: Von der auf den ebook-reader Stand: 10.05.2017 Inhalt 1. Voraussetzungen 2. Adobe Digital Editions installieren 3. Adobe ID erstellen 4. Adobe Digital Editions mit Ihrer Adobe ID autorisieren 5. Ausleihen

Mehr

WinVetpro reg. Szenario 1

WinVetpro reg. Szenario 1 WinVetpro reg Das WinVetpro reg Anmeldeformular ermöglicht die papierlose, arbeitsteilige Erfassung von Neukunden und deren Patienten auf z. B. einem Tablet oder mit einem geeigneten Internet Browser auf

Mehr

DATEN- SCHUTZ DATENSCHUTZRICHTLINIEN

DATEN- SCHUTZ DATENSCHUTZRICHTLINIEN DATEN- SCHUTZ DATENSCHUTZRICHTLINIEN KOMAX AG Gültig ab 1. November 2015 GESCHÄFTS- BEDINGUNGEN INHALTSVERZEICHNIS 1 Geltungsbereich und Zweck 3 2 Datenerhebung 3 3 Zweck der Datenerhebung und 3 Verwendung

Mehr

Installationshilfe für Adobe Digital Editions 3.0 und 4.0

Installationshilfe für Adobe Digital Editions 3.0 und 4.0 Installationshilfe für Adobe Digital Editions 3.0 und 4.0 Besuchen Sie die Herstellerseite von Adobe Digital Editions unter http://www.adobe.com/de/solutions/ebook/digital-editions/download.html und laden

Mehr

E-Books und DRM. PC-Treff-BB. Vortragender: Roland Egeler

E-Books und DRM. PC-Treff-BB. Vortragender: Roland Egeler E-Books und DRM E-Books und DRM.odp,, Folie 1 von 21 Vortragender: Roland Egeler Begriffserklärung E-Book: Elektronisches Buch DRM: Digital Rights Management E-Books und DRM.odp,, Folie 2 von 21 Begriffserklärung

Mehr

Download Adobe Digital Editions. Anleitung zum Download

Download Adobe Digital Editions. Anleitung zum Download Download Adobe Digital Editions Anleitung zum Download Autor: Roman Jansen-Winkeln Datum: 19. Februar 2015 Version: Datum: 1.0sAugust 2015 20. Inhaltsverzeichnis DRM geschützte E-Books downloaden und öffnen...2

Mehr

knxpresso Webserver Plug-in

knxpresso Webserver Plug-in Technisches Handbuch knxpresso Webserver Plug-in August 2018 knxpresso Webserver Plug-in Seite 1/9 Copyright und Lizenz 2018 knxpresso UG Die Vervielfältigung, Adaption oder Übersetzung ist ohne vorherige

Mehr

Digitales Lesen. Ein Anlass der. Altstadt-Buchhandlung Bülach. und der Computeria Bülach.

Digitales Lesen. Ein Anlass der. Altstadt-Buchhandlung Bülach. und der Computeria Bülach. Digitales Lesen Ein Anlass der Altstadt-Buchhandlung Bülach www.altstadt-buchhandlung.ch und der Computeria Bülach www.computeria-buelach.ch Donnerstag 5. Dez. 2013 Gerät auswählen Ich will ein Lese-Gerät

Mehr

Quickline Cloud Apps

Quickline Cloud Apps Quickline Cloud Apps Inhaltsverzeichnis Inhalt 1. Einstieg 3 2. Unterstützte Geräte 3 3. Mobile Apps 4 3.1 Hauptmenü 5 3.2 Automatische Aktualisierung 7 3.3 Dateikennzeichnung 8 3.4 Erste Nutzung 9 3.4.1

Mehr

Anleitung 'KamaToonSutra-ebook'

Anleitung 'KamaToonSutra-ebook' Anleitung 'KamaToonSutra-ebook' Ihr habt das KamaToonSutra-ebook in den folgenden 'ebook-formaten' erworben: Welches Format für euren 'ebook-reader' das Richtige ist, könnt ihr austesten. Versucht zunächst

Mehr

Avamboo GmbH Avamboo Encrypt. SICHERE MIT Avamboo Encrypt. für Outlook 2010 / 2013 / Handbuch

Avamboo GmbH Avamboo Encrypt. SICHERE  MIT Avamboo Encrypt. für Outlook 2010 / 2013 / Handbuch SICHERE E-MAIL MIT Avamboo Encrypt für Outlook 2010 / 2013 / 2016 Handbuch Inhaltsverzeichnis Avamboo GmbH Avamboo Encrypt Installation 3 E-Mail verschlüsseln 4 Verschlüsselt antworten Link 5 Passwortverwaltung

Mehr

Zugang zum Musikstreaming-Dienst Freegal Music

Zugang zum Musikstreaming-Dienst Freegal Music Kantonsbibliothek Zugang zum Musikstreaming-Dienst Freegal Music Anleitung für Kundinnen und Kunden der Kantonsbibliothek Thurgau Inhalt 1. Allgemeine Informationen zu Freegal Music... 2 1.1. Angebot...

Mehr

Zugriff auf Fachbibliotheken von außerhalb der Hochschule Prof. Dr. Stephan Kleuker Version / Datum: 2.0 /

Zugriff auf Fachbibliotheken von außerhalb der Hochschule Prof. Dr. Stephan Kleuker Version / Datum: 2.0 / Thema: Zugriff auf Fachbibliotheken von außerhalb der Hochschule Autoren: Prof. Dr. Stephan Kleuker Version / Datum: 2.0 / 26.08.2016 Die kurze Anleitung zeigt, wie man als Studierender der Hochschule

Mehr

GEVITAS MobileCatalog

GEVITAS MobileCatalog GEVITAS MobileCatalog Inhalt 1. Allgemeines... 2 2. Funktionsweise der App... 2 3. Das Hauptmenü... 3 4. Neuen Warenkorb anlegen... 4 5. Warenkorb auswählen und bearbeiten... 5 6. Warenkorb anzeigen...

Mehr

Systemvoraussetzungen für Windows Server 2012 Windows Server 2012 R2 Windows Server 2016

Systemvoraussetzungen für Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Systemvoraussetzungen für Windows Server 2012 Windows Server 2012 R2 Windows Server 2016 Basis: HiScout 3.1 Datum: 28.03.2019 12:11 Autor(en): HiScout GmbH Gültig ab Version: 3.1.7 Dieses Dokument beinhaltet

Mehr

BlackBerry Dynamics einrichten - Android

BlackBerry Dynamics einrichten - Android Status Vorname Name Funktion Datum DD-MM-YYYY Erstellt: V. De Riggi Junior Network Engineer 07.09.2017 12:31:16 V. De Riggi Unterschrift Handwritten signature or electronic signature (time (CET) and name)

Mehr

IFA-Formulare im PDF-Format mit Adobe Acrobat Reader DC öffnen. Inhalt. Einleitung. 1. PDF-Formular lokal speichern und öffnen

IFA-Formulare im PDF-Format mit Adobe Acrobat Reader DC öffnen. Inhalt. Einleitung. 1. PDF-Formular lokal speichern und öffnen Inhalt Einleitung 1. PDF-Formular lokal speichern und öffnen 1.1 Internet Explorer 1.2 Mozilla Firefox 1.3 Google Chrome 1.4 Opera 1.5 Safari 1.6 Öffnen mit unter Windows 1.7 Öffnen mit unter MacOS Bitte

Mehr

Systemvoraussetzungen & Installation. K3Plus

Systemvoraussetzungen & Installation. K3Plus Stand: 07.09.2017 Inhaltsverzeichnis 1 Systemvoraussetzungen... 3 1.1 Betriebssystem... 3 1.2 Rechner... 3 1.3 Internet... 3 1.4 Laufzeitumgebung... 3 1.5 Zusätzliche Komponenten... 4 1.5.1 Software...

Mehr

Der neue Webreader im Überblick

Der neue Webreader im Überblick Der neue Webreader im Überblick Um auf Ihre erworbenen ebooks und Hörbücher zugreifen zu können, werden sie nun direkt durch Ihre ebook-bibliothek zum neuen Webreader geleitet. Dieser bietet Ihnen eine

Mehr

Benutzerhandbuch: tele-look

Benutzerhandbuch: tele-look Benutzerhandbuch: tele-look Inhalt 1. Systemvoraussetzungen prüfen... 1 2. Registrierung am PC, Tablet oder Smartphone... 2 3. Einloggen und Kunde anlegen... 2 4. Gespräch beginnen... 3 5. Gesprächspartner

Mehr

Basic steps. Version 6.5. Aktualisiert am Mittwoch, 12. Dezember yyyydatto, Inc.

Basic steps. Version 6.5. Aktualisiert am Mittwoch, 12. Dezember yyyydatto, Inc. Basic steps Version 6.5 Aktualisiert am Mittwoch, 12. Dezember 2018 yyyydatto, Inc. Table of Contents Table of Contents 2 Erste Schritte 3 Schritt 1 - Anmelden 4 Schritt 2 - Eine neue Site erstellen 6

Mehr

AK-Bibliothek. digital. Von der digitalen Bibliothek zum e-book-reader. Anleitung zur AK-Bibliothek digital

AK-Bibliothek. digital. Von der digitalen Bibliothek zum e-book-reader. Anleitung zur AK-Bibliothek digital Von der en Bibliothek zum e-book-reader Anleitung zur AK-Bibliothek Von ciando auf den E-Book-Reader Stand: Februar 2015 Inhalt 1. Voraussetzungen 2. Adobe Digital Editions installieren 3. Adobe ID erstellen

Mehr

Leistungsbeschreibung CSE Connect

Leistungsbeschreibung CSE Connect Leistungsbeschreibung CSE Connect 1. Allgemeine Beschreibungen Dräger CSE Connect ist eine Software Lösung zur Optimierung des Freigabeprozesses im Bereich Industrie und Mining. CSE Connect unterstützt

Mehr

1. Einleitung Vorgehensweise Dropbox - Dropbox herunterladen Einstellungen P.A.P.A... 4

1. Einleitung Vorgehensweise Dropbox - Dropbox herunterladen Einstellungen P.A.P.A... 4 P.A.P.A. die kaufmännische Softwarelösung Systembeschreibung Cloud-Daten Inhalt 1. Einleitung... 2 2. Vorgehensweise Dropbox - Dropbox herunterladen... 3 3. Einstellungen P.A.P.A.... 4 Es gelten ausschließlich

Mehr

Quickline Cloud Apps

Quickline Cloud Apps Quickline Cloud Apps Inhaltsverzeichnis Inhalt 1. Einstieg 3 2. Unterstützte Geräte 3 3. Mobile Apps 4 3.1 Hauptmenü 5 3.2 Automatische Aktualisierung 7 3.3 Dateikennzeichnung 8 3.4 Erste Nutzung 9 3.4.1

Mehr

Datenschutzerklärung

Datenschutzerklärung Datenschutzerklärung 1 Information über die Erhebung personenbezogener Daten (1) Im Folgenden informieren wir über die Erhebung personenbezogener Daten bei Nutzung unserer Website. Personenbezogene Daten

Mehr

owncloud Team IT Medizinische Universität Graz

owncloud Team IT Medizinische Universität Graz Team IT Medizinische Universität Graz 17.2.2016 Inhalt Allgemeines zu owncloud...2 Einstieg in die owncloud...2 Navigationsmenü...3 Menüpunkt Dateien...3 Menüpunkt Galerie...6 Menüpunkt News...7 Menüpunkt

Mehr

So erreichen Sie Ihre Event-App

So erreichen Sie Ihre Event-App Anleitung So erreichen Sie Ihre Event-App ZUGRIFF ÜBER DEN WEB BROWSER Die App Ihrer Veranstaltung erreichen Sie über einen Browser, wie Safari, Chrome oder Firefox, auf Smartphones, Tablets und Laptops.

Mehr

User-Guide. von datac Kommunikationssysteme

User-Guide. von datac Kommunikationssysteme User-Guide von datac Kommunikationssysteme Inhalt Dokumente verwalten und bearbeiten 4 Speichern eines Dokuments auf OneDrive for Business 4 Bearbeiten eines Excel-Arbeitsblatts auf einem Smartphone 5

Mehr

Systemvoraussetzungen für Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2

Systemvoraussetzungen für Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Systemvoraussetzungen für Windows Server 2008 R2 Windows Server 2012 Windows Server 2012 R2 Basis: HiScout 3.1 Datum: 21.03.2017 10:30 Autor(en): HiScout GmbH Gültig ab Version: 3.1.0 Status: Freigegeben

Mehr

Versionen des Dokuments. Inhaltsverzeichnis: Erstelldatum Version

Versionen des Dokuments. Inhaltsverzeichnis: Erstelldatum Version ECKD.SDA Anleitung Versionen des Dokuments Erstelldatum 13.12.2016 Version 1 13.12.2016 Inhaltsverzeichnis: 1 Aufruf und Log-In... 3 2 Übersicht Eingang... 3 3 Versenden neue Zustellung... 4 4 Sicherheitsstufen

Mehr

Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von:

Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von: Normfall 7.3 Kurzanleitung Erstellen eines Normfall Projektspeichers auf Basis einer vorhandenen Installation von: Microsoft SQL Server ab 2008 R2 (hier: kostenfreie Express-Edition) 2018 Normfall GmbH

Mehr

Schritt-für-Schritt-Anleitung

Schritt-für-Schritt-Anleitung Schritt-für-Schritt-Anleitung Enhanced Book «Fokus Sprache» Inhaltsverzeichnis 1. Download und Entpacken des Enhanced Books... 2 2. Programmeinstellungen... 3 2.1. Voreinstellungen im Adobe Acrobat Reader...

Mehr

Einstieg ins Tool. SuccessFactors Learning Management System (LMS). SBB AG Bildung SBB

Einstieg ins Tool. SuccessFactors Learning Management System (LMS). SBB AG Bildung SBB Einstieg ins Tool. SuccessFactors Learning Management System (LMS). SBB AG Bildung SBB Inhaltsverzeichnis. 1. Einleitung.... 3 2. Technische Voraussetzungen.... 3 3. Einrichtung Zwei-Faktor-Authentifizierung

Mehr

Novell ifolder. Übersicht über ifolder Installation Novell ifolder Starten des ifolders (Webbrowser und Clientsoftware)...

Novell ifolder. Übersicht über ifolder Installation Novell ifolder Starten des ifolders (Webbrowser und Clientsoftware)... 1 Novell ifolder Inhaltsverzeichnis: Übersicht über ifolder... 2 Installation Novell ifolder... 2 Starten des ifolders (Webbrowser und Clientsoftware)... 7 1.Mittels installiertem ifolder-client... 7 2.Online

Mehr

I. Wie funktioniert die Onleihe? II. Gehen Sie dazu wie folgt vor:

I. Wie funktioniert die Onleihe? II. Gehen Sie dazu wie folgt vor: Stand: 06.07.2018 Anleitung zur -App I. Wie funktioniert die Onleihe? Die Onleihe funktioniert im Prinzip wie eine bekannte Ausleihbibliothek. Jedes emedium kann immer nur von einem Nutzer ausgeliehen

Mehr

ebooks kaufen und verwalten

ebooks kaufen und verwalten ebooks kaufen und verwalten Im zweiten Beitrag über die ebooks geht es zuerst um das Anlegen der AdobeID und die Anmeldung des Readers, und anschliessend um den Kauf der ebooks, entweder direkt mit dem

Mehr

Versionshinweise. FW Version Lokalisation

Versionshinweise. FW Version Lokalisation Lokalisation WW Dezember 24, 2018 Firmwareversion: 5.19.656 (Dezember 24, 2018) 1. Unmöglichkeit, einige Dateien im EPUB-Format zu öffnen. 2. Weitere kleine Fehler. - P. 2 - Firmwareversion: 5.19.625 (Dezember

Mehr

Systemvoraussetzungen für den Zugriff auf die DAA-Zeus-Umgebung aus dem Internet (Szenario-1) Halten Sie Ihr System deswegen unbedingt immer aktuell!

Systemvoraussetzungen für den Zugriff auf die DAA-Zeus-Umgebung aus dem Internet (Szenario-1) Halten Sie Ihr System deswegen unbedingt immer aktuell! Systemvoraussetzungen für den Zugriff auf die DAA-Zeus-Umgebung aus dem Internet (Szenario-1) Mit der Markteinführung von Windows 10 (Herbst 2015) sind abweichend zu den vorherigen Windows Betriebssystemen,

Mehr

{tip4u://137} Nutzung von Box.FU

{tip4u://137} Nutzung von Box.FU {tip4u://137} Version 1 Zentraleinrichtung für Datenverarbeitung (ZEDAT) www.zedat.fu-berlin.de Der Dienst Box.FU ermöglicht das Speichern von Daten auf einem zentralen Server und den einfachen Zugriff

Mehr

Abonnieren des RSS Feed mit dem Google Reader

Abonnieren des RSS Feed mit dem Google Reader Abonnieren des RSS Feed mit dem Google Reader Folgende Anleitung stellt eine Schritt- für- Schritt Vorgehensweise dar, um den RSS- Feed des Social Media Balloon zu abonnieren. Rote Kästchen wie dieses

Mehr

«/IE Cache & Cookies» Umfrage startet nicht?

«/IE Cache & Cookies» Umfrage startet nicht? Erste Hilfe «/IE Cache & Cookies» Umfrage startet nicht? Umfrage startet nicht? Wenn Sie die Umfrage starten (d.h. den Link zur Umfrage anklicken oder eingeben) sehen Sie folgendes Bild? Cache Einstellungen

Mehr

Einführung in WEB 3.0

Einführung in WEB 3.0 Einführung in WEB 3.0 Unser Angebot unter http://www.netexx.com, bzw. unter http://w3.netexx.com bietet Ihnen eine Vielzahl von Möglichkeiten, einen virtuellen Arbeitsplatz online zu nutzen. Diese kleine

Mehr

Fernwartung mit TeamViewer

Fernwartung mit TeamViewer Fernwartung mit TeamViewer Version 1.2, 05.03.2016 DE NUR FÜR INTERNEN GEBRAUCH Die Informationen in diesem Dokument sind für internen Gebrauch bestimmt und dürfen nur direkten und indirekten Kunden von

Mehr

Novell FILR Doku Seite 1 NOVELL FILR

Novell FILR Doku Seite 1 NOVELL FILR Novell FILR Doku Seite 1 NOVELL FILR Filr 2.0 ist ein Dateimanagement- und Collaboration-Tool für Unternehmen, mit dem Benutzer vom Web, von einem Mobilgerät oder vom Dateisystem auf ihren Arbeitsstationen

Mehr

Bedienungsanleitung. Online Registrierung im beka Shop und Navigation innerhalb der Kiosk-App

Bedienungsanleitung. Online Registrierung im beka Shop und Navigation innerhalb der Kiosk-App Bedienungsanleitung Online Registrierung im beka Shop und Navigation innerhalb der Kiosk-App beka Online-Shop Besuchen Sie den beka Online-Shop unter www.bekaverlag.de und erstellen Sie Ihr persönliches

Mehr

BIT IT Cloudio. Konfigurationsanleitung

BIT IT Cloudio. Konfigurationsanleitung BIT IT Cloudio Konfigurationsanleitung - Wichtige Einrichtungsinformationen - Wir empfehlen Ihnen umgehend Ihr initiales Passwort in Ihren persönlichen Einstellungen abzuändern, sowie fehlende, persönliche

Mehr

6. INFORMATIONEN SAMMELN

6. INFORMATIONEN SAMMELN 6. INFORMATIONEN SAMMELN 6.1. WEB-INHALTE DRUCKEN Aufgabe: Drucken und präsentieren Sie Ihre Suchergebnisse! Lernziele: die Druckvorschau des Browsers Drucken von Web-Inhalten Drucken einzelner Frames

Mehr

Klimacomputer CC600. Bedienung CCWebControl Version 1.0

Klimacomputer CC600. Bedienung CCWebControl Version 1.0 Klimacomputer CC600 CCWebControl Version 1.0 Inhaltsverzeichnis Seite Allgemeines 2 3 Lesezeichen und automatische Suche 4 Bedienebene / Browser 4 Konfiguration 5 08.09.15 RAM GmbH Mess- und Regeltechnik,

Mehr

Benutzerhandbuch (Desktop-Version)

Benutzerhandbuch (Desktop-Version) Benutzerhandbuch (Desktop-Version) INHALT Besten Dank, dass Sie sich für Edubase entschieden haben! Login/Registrierung...1 Bibliothek...2 Detailinformationen...4 Kategorien...5 Schreibtisch...6 Übersichtenleiste...7

Mehr

Zugriff vom Privatcomputer auf «Mein Intranet VSZ» (Verwaltungsnetz)

Zugriff vom Privatcomputer auf «Mein Intranet VSZ» (Verwaltungsnetz) Zugriff vom Privatcomputer auf «Mein Intranet VSZ» (Verwaltungsnetz) Download Citrix-Receiver unter Microsoft Windows Anleitung für Teammitglieder Eveline Bearth Vers. 3.0 / Zürich, 22. April 2018 1 Citrix

Mehr

Systemvoraussetzungen für den Zugriff auf die DAA-Zeus-Umgebung aus dem Internet (Szenario-1) Halten Sie Ihr System deswegen unbedingt immer aktuell!

Systemvoraussetzungen für den Zugriff auf die DAA-Zeus-Umgebung aus dem Internet (Szenario-1) Halten Sie Ihr System deswegen unbedingt immer aktuell! Systemvoraussetzungen für den Zugriff auf die DAA-Zeus-Umgebung aus dem Internet (Szenario-1) Mit der Markteinführung von Windows 10 (Herbst 2015) sind abweichend zu den vorherigen Windows Betriebssystemen,

Mehr

Installation und Benutzung. LangCorr ApS Erritsoegaardsvej 11 DK 7000 Fredericia Denmark

Installation und Benutzung. LangCorr ApS Erritsoegaardsvej 11 DK 7000 Fredericia Denmark Installation und Benutzung Herzlich Willkommen zu Language Corrector! Language Corrector herunterladen: Auf unserer Seite www.langcorr.com finden Sie unten, Mitte links, den Link zu LanguageCorrector.

Mehr

ebooks kaufen und verwalten

ebooks kaufen und verwalten ebooks kaufen und verwalten Im zweiten Teil der Reihe über die ebooks geht es um die Adobe ID, um den Kauf der ebooks mit dem Reader über WLAN oder mit dem Computer; um die automatische Synchronisation

Mehr

Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface.

Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface. Erste Schritte Die Cargo Plattform bietet einen sicheren und einfachen Datentransfer mit einem modernen Web- Interface. Inhaltsverzeichnis Anmelden 2 Startseite 3 Dateimanager 4 CargoLink 5 Freigaben 6

Mehr

Mail Integration Solution White Paper

Mail Integration Solution White Paper Integration Solution White Paper Inhalt Allgemeine Information... 3 IMAP... 3 Rapid Automation (RA)... 3 RA Agent... 3 RA Solution... 3 Integration Solution... 4 Anwendungsfälle... 5 Download eingehender

Mehr

1 Privacy-Einstellungen Chrome

1 Privacy-Einstellungen Chrome In dieser Checkliste finden Sie nützliche Tipps und Hinweise für den Schutz der Privatsphäre bei der Nutzung von Chrome. 1 Privacy-Einstellungen Chrome 1 Gewünschte Suchmaschine festlegen Einstellungen

Mehr

Kurzanleitung. Zotero 5.0. Inhalt kim.uni-hohenheim.de

Kurzanleitung. Zotero 5.0. Inhalt kim.uni-hohenheim.de Zotero 5.0 Kurzanleitung 21.08.2017 kim.uni-hohenheim.de kim@uni-hohenheim.de Inhalt Installieren... 2 Literatur erfassen... 2 Automatische Übernahme aus Webseiten... 2 Einträge über eine Importdatei hinzufügen...

Mehr

ANLEITUNG EBOOKS. 1. Der Kauf von ebooks über den Onlineshop

ANLEITUNG EBOOKS. 1. Der Kauf von ebooks über den Onlineshop ANLEITUNG EBOOKS 1. Der Kauf von ebooks über den Onlineshop Wenn Sie über unseren Onlineshop ein ebook (im Dateiformat epub) erworben haben, erhalten Sie zunächst eine Benachrichtigung per E-Mail (zusätzlich

Mehr

Putzi4Win 1/ 9. Dokumentation

Putzi4Win 1/ 9. Dokumentation Dokumentation Putzi4Win Manager Plugin-Manager Der Pluginmanager verwaltet die Plugins von Putzi4Win. Mit diesem Programm haben Sie eine Übersicht über die installierten Plugins die auf dem Webswerver

Mehr

Produktion. Konzeption. E-Book-Produktion 27. Technik. Multimediale Bestandteile. Dateiformate. Geräte. Workflow. Content-Erstellung.

Produktion. Konzeption. E-Book-Produktion 27. Technik. Multimediale Bestandteile. Dateiformate. Geräte. Workflow. Content-Erstellung. E-Book- 27 Ergänzungen Trend: enhanced E-Book Einbindungs- und Nutzungsmöglichkeiten multimedialer Elemente sehr unterschiedlich PDF: Audio, Video und interaktive Formulare problemlos integrierbar epub:

Mehr

Bedienungsanleitung für MEEM-Kabel-Desktop-App Windows

Bedienungsanleitung für MEEM-Kabel-Desktop-App Windows Bedienungsanleitung für MEEM-Kabel-Desktop-App Windows Installation und Bedienungsanleitung - v0.9 Bevor Sie diese Anleitung lesen, sollten Sie bitte die Bedienungsanleitung für MEEM-Kabel und Handy-App

Mehr

Linux-Camp: Linux als Server am Beispiel LAMP

Linux-Camp: Linux als Server am Beispiel LAMP Linux-Camp: Linux als Server am Beispiel LAMP Linux, Apache, MySQL, PHP mit Ubuntu Version 8.04 Inhalt LAMP-Komponenten LAMP-Komponenten installieren, konfigurieren und prüfen Apache Webserver PHP5 MySQL

Mehr

MARMIND. Datenschutzbestimmungen

MARMIND. Datenschutzbestimmungen MARMIND Datenschutzbestimmungen Version: 1.3 vom 01.08.2016 1 Datenschutzerklärung Der Schutz personenbezogenen Daten von Nutzern ist für UPPER Network GmbH als Anbieter und Betreiber der MARMIND Software

Mehr

2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version

2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version 2.3 - Das Verwaltungsmodul moveon installieren - SQL-Version Das Verwaltungsmodul moveon besteht aus zwei Komponenten: dem moveon Client und der moveon Datenbank. Der moveon Client enthält alle Formulare,

Mehr

Verwenden von VMware Identity Manager Desktop. VMware Identity Manager 2.8 VMware Identity Manager 2.9.1

Verwenden von VMware Identity Manager Desktop. VMware Identity Manager 2.8 VMware Identity Manager 2.9.1 Verwenden von VMware Identity Manager Desktop VMware Identity Manager 2.8 VMware Identity Manager 2.9.1 Verwenden von VMware Identity Manager Desktop Die neueste technische Dokumentation finden Sie auf

Mehr

Vorbemerkungen Keine Installation notwendig Keine Updates notwendig Schonender Umgang mit den Ressourcen... 2

Vorbemerkungen Keine Installation notwendig Keine Updates notwendig Schonender Umgang mit den Ressourcen... 2 INHALTSVERZEICHNIS Vorbemerkungen... 2 Keine Installation notwendig... 2 Keine Updates notwendig... 2 Schonender Umgang mit den Ressourcen... 2 Keine Synch Probleme... 3 Optimierte Programmierung garantiert...

Mehr

Inhalt. - App Schritt für Schritt: Die Anleitung zur

Inhalt. - App Schritt für Schritt: Die Anleitung zur Die Anleitung zur - App Schritt für Schritt: Mit dieser App können ebooks im Format Adobe Digital Editions epub und Adobe Digital Editions PDF, eaudios als Stream und Download (Android ab Februar 2017),

Mehr

Schritt für Schritt Anleitung für Patienten

Schritt für Schritt Anleitung für Patienten Schritt für Schritt Anleitung für Patienten Version 1.1, Stand 25.05.2016 Copyright 2015 by Orange Innovations Inhaltsverzeichnis Allgemeine Hinweise... 3 Installation... 4 Registrierung und Anmeldung...

Mehr

Linux Unter Linux ist die Nutzung von epub Formaten derzeit nur eingeschränkt verfügbar. Für die Nutzung muss Wine installiert sein.

Linux Unter Linux ist die Nutzung von epub Formaten derzeit nur eingeschränkt verfügbar. Für die Nutzung muss Wine installiert sein. Von der auf den ebook-reader Stand: 30.06.2016 Inhalt 1. Voraussetzungen 2. Adobe Digital Editions installieren 3. Adobe ID erstellen 4. Adobe Digital Editions mit Ihrer Adobe ID autorisieren 5. Titel

Mehr

Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Windows)

Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Windows) Installationsanleitung für Haufe Advolux Kanzleisoftware ab Version 2.5 (Windows) Verfasser : Advolux GmbH, AÖ Letze Änderung : 17.04.2012 Version : v2 1 Inhaltsverzeichnis 1. Hardware-Voraussetzungen...

Mehr

Client-Systemanforderungen für Brainloop Secure Dataroom ab Version 8.30

Client-Systemanforderungen für Brainloop Secure Dataroom ab Version 8.30 Client-Systemanforderungen für Brainloop Secure Dataroom ab Version 8.30 Copyright Brainloop AG, 2004-2015. Alle Rechte vorbehalten. Dokumentenversion: 1.1 Sämtliche verwendeten Markennamen und Markenzeichen

Mehr

Die neue LMS Plattform

Die neue LMS Plattform Die neue LMS Plattform Inhalt Die neue LMS Plattform... 2 Neueinstieg und Vorbereitungen... 3 Auswahl des Clients... 4 Internet Explorer:... 4 Installationsanleitung Citrix Receiver... 5 Feststellen, welcher

Mehr