c't 18/2022
S. 176
Tipps & Tricks

Tipps & Tricks

Sie fragen – wir antworten!

Fragen richten Sie bitte an

Alle bisher in unserer Hotline veröffentlichten Tipps und Tricks finden Sie unter www.ct.de/hotline

In-App-Käufe unter Android ohne Google

Ich habe ein Android-Gerät ohne Google-Dienste. Eine App, bei der ich früher auf einem anderen Gerät mit Google-Diensten In-App-Käufe getätigt habe, bietet mir an, diese Käufe auf dem Google-freien Gerät per „Order Number“ und E-Mail-Adresse zu aktivieren. Was gebe ich da ein?

Als Mailadresse geben Sie die Gmail-Adresse Ihres Google-Kontos ein. Die „Order Number“ finden Sie als Bestellnummer in der Rechnung, die Ihnen Google nach dem In-App-Kauf per Mail geschickt hat. Falls Sie die Rechnung nicht aufbewahrt haben: Google führt zwar alle Käufe im Play Store auf, aber an die Rechnung kommen Sie dort nicht heran. Sie müssen stattdessen über den Datenexport gehen:

Öffnen Sie am PC im Browser Ihr Google-Konto, wählen Sie links „Daten und Datenschutz“ und weiter unten „Meine Daten herunterladen oder löschen“. Beim Datenexport wählen Sie erst per „Auswahl aufheben“ alles ab und klicken weiter unten „Google Play Store“ an. Dann klicken Sie auf „Nächster Schritt“ und wählen „Einmal exportieren“. Sie bekommen dann einen Link, über den Sie ein ZIP-Archiv herunterladen können. Darin finden Sie verschiedene JSON-Dateien. Suchen Sie in „Order History.json“ nach Ihrem Kauf und kopieren Sie die „orderId“ im entsprechenden Eintrag – das geht mit etwas Geschick mit einem beliebigen Editor; komfortabler ist ein JSON-Decoder. Auch der Browser Firefox kann JSON-Dateien aufbereiten und durchsuchen.

Neuere Bestellnummern beginnen mit „GPA“, ältere bestehen nur aus ein paar Dutzend Ziffern. Die App, mit der wir das ausprobiert haben, öffnet zur Authentifizierung der Mailadresse einen Browser, in dem man sich in seinen Google-Account einloggen muss. Mit den Browsern von Custom-ROMs funktioniert das nicht, sondern die App besteht auf Chrome – der sich ohne Google-Dienste nicht installieren lässt – oder dem Samsung Internet Browser.

Der ist über die üblichen alternativen App-Quellen wie den Aurora Store erhältlich und ließ sich zumindest bei uns problemlos installieren und als Standardbrowser festlegen. Die App erkannte ihn aber erst nach einem App-Neustart – tippen Sie dazu aufs Quadrat-Symbol in der Steuerleiste, wischen Sie je nach Android-Version die App nach oben oder seitlich hinaus und starten Sie sie neu. Nachdem die App Ihre In-App-Käufe erfolgreich aktiviert hat, können Sie den Samsung-Browser wieder deinstallieren. (jow@ct.de)

Foxit: Stempel mit Namen versehen

Ich benutze den Foxit PDF Reader, um PDFs zu korrigieren beziehungsweise nach dem Korrekturlesen freizugeben. Damit man schon in der Vorschaukachel im Windows-Explorer sieht, dass die Datei bearbeitet wurde, klatsche ich meistens einen Stempel wie „geprüft“ aus der Kommentar-Menüleiste von Foxit aufs PDF und speichere es so. Dummerweise trägt der Stempel ein seltsames Namenskürzel, mit dem niemand was anfangen kann. Wie kann ich das ändern?

Am einfachsten geht es, indem Sie im Menü „Datei“ das Untermenü „Einstellungen“ wählen und im aufklappenden Fenster den Eintrag „Identität“. Der Anmeldename entspricht dem Kürzel, das auf dem Stempel zu sehen ist. Irritierenderweise kann man zwar in diese Zeile hineinklicken, sie aber nicht ändern. Der Workaround ist einfach: Tragen Sie einfach in den Feldern „Vorname“ beziehungsweise „Vor- und Nachname“ ein, was der Stempel anzeigen soll. (mil@ct.de)

Den Namen oder das Kürzel für die Beschriftung von Stempeln im Foxit PDF Reader legen Sie über „Einstellungen/Identität“ fest.
Den Namen oder das Kürzel für die Beschriftung von Stempeln im Foxit PDF Reader legen Sie über „Einstellungen/Identität“ fest.

Arbeitsspeicher als Datenrisiko?

In unserer Firma – ich arbeite in der IT-Abteilung – werden nicht nur die Festplatten/SSDs ausgemusterter Rechner vernichtet, sondern auch der Arbeitsspeicher. Dass RAM ein flüchtiger Speicher ist, weiß ich. Wie kann ausgemusterter Arbeitsspeicher dann zum Sicherheitsrisiko werden?

Die RAM-Chips selbst speichern keinerlei Daten ohne Stromversorgung; man spricht auch von Dynamic Random Access Memory (DRAM), weil der Inhalt jeder Speicherzelle alle paar Mikrosekunden „dynamisch“ aufgefrischt werden muss. Auf einem Speichermodul (Dual Inline Memory Module, DIMM) sitzen allerdings nicht nur DRAM-Speicherchips, sondern stets auch ein sogenanntes Serial Presence Detect (SPD-)EEPROM, das (über die Schnittstelle I2C) mit dem System Management Bus (SMBus) des Mainboards verbunden ist.

Das SPD-EEPROM enthält im Wesentlichen ein „digitales Datenblatt“ des DIMM, damit das BIOS des Mainboards den Speichercontroller passend konfigurieren kann. Prinzipiell könnte man jedoch einige wenige (Kilo-)Byte Informationen in das SPD-EEPROM schreiben, die wären dann dauerhaft gespeichert. Allerdings sind die SPD-EEPROMs typischerweise schreibgeschützt.

Angeblich kann die Software Thaiphoon Burner das SPD-EEPROM vieler Module beschreiben, das Tool DDR4 XMP Editor zumindest Speichermodule mit Extended Memory Profiles (XMP) – die allerdings nicht in üblichen Bürocomputern stecken dürften. Wurde eine solche Software auf dem Rechner genutzt, kann man nicht ausschließen, dass Daten auch stromlos erhalten bleiben.

In manchen Servern stecken zudem Non-Volatile-DIMMs (NVDIMMs), die außer flüchtigen DDR-SDRAM-Speicherchips auch nichtflüchtigen Speicher, etwa NAND-Flash-Chips, haben. (ciw@ct.de)

Transparentes Mesh im AP-Modus

Ich habe mir das TP-Link Deco M4 Mesh im Dreier-Set zugelegt. Die Einrichtung war simpel, das WLAN steht, aber eines geht noch nicht: Früher konnte ich vom Rechner oder Handy Bilder direkt auf den Drucker schicken. Aber der hängt nach wie vor im Router-WLAN und die Geräte im Mesh finden ihn nicht. Was kann ich tun?

Schalten Sie das Mesh-System in den Access-Point-Modus um, manchmal auch Bridge-Modus genannt. Dann übernimmt es den Adressbereich des Routers und Ihre WLAN-Clients können den Drucker wieder erreichen. Dafür fällt bei manchen Mesh-Systemen deren Gastnetz weg. Für optimalen Mesh-Betrieb sollten Sie den Drucker ins Mesh-WLAN holen. Dann können Sie das Router-WLAN ausschalten. So bleibt mehr Funkspektrum und Sendezeit fürs Mesh frei. (ea@ct.de)

Wenn WLAN-Clients nach dem Einrichten eines Mesh-Systems den Drucker und andere Peripherie im Funknetz nicht mehr finden, stellt man das Mesh-System auf den Access-Point- beziehungsweise Bridge-Modus um.
Wenn WLAN-Clients nach dem Einrichten eines Mesh-Systems den Drucker und andere Peripherie im Funknetz nicht mehr finden, stellt man das Mesh-System auf den Access-Point- beziehungsweise Bridge-Modus um.

Port-Weiterleitung per DynDNS auf mehrere Server

Ich habe bei Strato einen DynDNS auf einer Kauf-Domain eingerichtet. Die Weiterleitung auf meinen NextCloud-Webserver (192.168.10.78) läuft problemlos. Jetzt möchte ich aber weitere Server mit anderen Kauf-Domains und internen IP-Adressen (etwa 192.168.10.80) über diesen einen DynDNS-Zugang betreiben. Versuche mit CNAME-Einträgen und Subdomains bringen nicht das gewünschte Ergebnis. Wie kann ich das lösen?

Es gibt mehr als eine Lösung, aber leider keine einfache. Die genannten IP-Adressen gehören zum privaten Bereich, werden also im Internet nicht geroutet. Sie sind daher auch nicht direkt aus dem Internet erreichbar. Seit Jahrzehnten setzt man daher NAT (Network Address Translation) und Port-Weiterleitungen ein. Dabei landen eingehende Anfragen aus dem Internet an Ihrer öffentlichen WAN-IP-Adresse (beispielsweise 91.34.34.31). Abhängig von der Port-Nummer werden die Daten gemäß im Router hinterlegter Regeln an eine interne Adresse weitergeleitet. Bei HTTP-Verkehr ist das der Port 80, bei HTTPS-Verkehr Port 443.

Die Crux ist: Jeden Port kann man nur an ein Ziel weiterleiten. Man möchte aber möglichst die Webseiten auf allen Servern über Port 443 ansprechen, um die HTTPS-Verschlüsselung zu nutzen. Dazu gibt es mehrere nicht ganz triviale Lösungen.

Die in unseren Augen eleganteste: Sie richten alle Domains und Dienste auf einem einzigen Server ein, leiten den Port 443 auf diesen Server weiter und verzweigen in der Konfiguration des Webservers auf die jeweilige Webseite. Man richtet dabei „virtual hosts“ ein und die verschiedenen Webseiten liegen dann auf einem Linux-Server im Pfad /var/www/vhosts in separaten Ordnern mit Namen wie xyz.example.de oder abc.example.com. Eine passende Anleitung für den Apache-Webserver finden Sie unter ct.de/y5rs.

Der Webserver erkennt anhand der Anfrage, welche Webseite gemeint ist, und liefert diese aus. Das klappt beispielsweise mit Lets-Encrypt-Zertifikaten und vereinfacht die Wartung und das Backup, weil Sie sich um nur eine Maschine kümmern müssen.

Eine Alternative: Nutzen Sie IPv6. Damit fällt die Port-Weiterleitung zugunsten der Port-Freigabe weg und jeder Webserver kann (wenn Sie es wollen) eine eigene öffentlich erreichbare IPv6-Adresse bekommen (globale IPv6-Adresse). Dann richten Sie die zwei Webserver auf zwei verschiedenen Geräten ein und konfigurieren für jeden Webserver eine eigene DynDNS-Domain, die per IPv6 erreichbar ist. In der DNS-Verwaltung Ihres Domain-Hosters verweisen Sie dann auf die jeweilige DynDNS-Adresse des IPv6-Webservers. Das setzt allerdings voraus, dass die Clients IPv6-Konnektivität haben. Zudem müssen Sie sich etwas einarbeiten, um DynDNS-Clients für IPv6 zu konfigurieren. Näheres dazu finden Sie beispielsweise im Beitrag „Wegbereiter“ in der c’t 11/2020 auf Seite 24. (dz@ct.de)

Anleitung Virtual Hosts auf Apache-Server: ct.de/y5rs

Textvergleich mit git

Ich muss unter Linux häufig Textdateien vergleichen, wofür ich ein Diff-Tool benutze. Das funktioniert gut, wenn Text hinzugefügt oder gelöscht wurde, aber wenn viel Text nur verschoben wurde, wird es unübersichtlich. Kennen Sie ein Tool, das mit Verschiebungen gut umgehen kann?

Möglicherweise hilft Ihnen die Versionsverwaltung git, selbst wenn Sie sie sonst nicht verwenden: Mit dem Befehl git diff kann man auch zwei beliebige Dateien vergleichen, die nicht von git versioniert werden. Über den Parameter --color-moved weisen Sie das Programm an, verschobene Zeilen in anderen Farben darzustellen als Einfügungen und Löschungen.

Dem Parameter können Sie optional einen Wert übergeben, der gits Verhalten genauer bestimmt. --color-moved=dimmed-zebra zeigt beispielsweise verschobene Zeilen eher unscheinbar an, damit echte Einfügungen und Löschungen stärker ins Auge fallen. Daneben gibt es noch den Parameter --color-moved-ws=…, der festlegt, ob und welchen Weißraum git bei der Erkennung von Verschiebungen ignoriert. Wir finden zum Beispiel diese Kombination praktisch:

git diff --color-moved=dimmed-zebra--color-moved-ws=allow-indentation-change

Details zur Verschiebungserkennung und den anderen Werten für die Parameter erklärt die Dokumentation von git (siehe ct.de/y5rs). (syt@ct.de)

Git-Dokumentation: ct.de/y5rs

Benachrichtigungen in ICS-Kalenderdatei hinzufügen

Meine Gemeinde stellt einen Kalender mit den Müllabholungsterminen im ICS-Format zum Download zur Verfügung. Der Import in Outlook klappt problemlos, jedoch ist bei keinem der Termine eine vorherige Erinnerung eingestellt. Ich finde keinen Weg, allen Terminen in Outlook auf einmal eine Erinnerung hinzuzufügen; es scheint nur einzeln zu klappen.

Eine offensichtliche Funktion dafür bietet Outlook nicht. Es geht aber, sogar mit zwei unterschiedlichen Methoden. Für die erste versehen Sie zunächst einen kommenden Termin manuell mit einer Erinnerung. Stellen Sie dann die Kalenderdarstellung über „Ansicht/Ansicht ändern/Liste“ auf eine Listenform um.

Wählen Sie links den importierten Abfuhrkalender und richten Sie dann eine Gruppierung ein: „Anordnen nach/Ansichtseinstellungen…/Gruppieren…“. Das Feld „Elemente gruppieren nach“ stellen Sie auf „Erinnerung“ und schließen die Dialoge mit „OK“. Die Liste besteht nun aus zwei Gruppen: „Hat Erinnerung“ mit nur einem Eintrag und „Ohne Erinnerung“ mit den übrigen Terminen. Markieren Sie alle Einträge des zweiten Listenbereichs mit gedrückter Umschalttaste und ziehen Sie sie mit gedrückter Maustaste in den Bereich „Hat Erinnerung“. Jetzt ist in allen Einträgen dieselbe Erinnerung eingestellt wie im zuerst manuell bearbeiteten Termin. Nicht wundern: Hatten Sie in der Liste bereits zurückliegende Termine mit markiert, werden Sie an die in einem Schwung als „überfällig“ erinnert.

Eine ganz andere Methode ist es, die ICS-Datei vor dem Import zu bearbeiten. Es handelt sich dabei nämlich um eine schlichte Textdatei, die unter anderem alle Termine im Klartext enthält. Die Details zu jedem Termin stehen zwischen den Zeilen BEGIN:VEVENT und END:VEVENT. Dazwischen lässt sich ein Block einschließen, der eine Erinnerungsfunktion hinzufügt:

BEGIN:VALARM
TRIGGER:-PT24H
ACTION:DISPLAY
END:VALARM

Das -PT24H hinter TRIGGER steht für eine Erinnerung, die 24 Stunden vor dem eigentlichen Termin-Event aktiviert wird. Sie können andere Werte verwenden und zusätzlich weitere Einstellungen hinzufügen. Eine Dokumentation der VALARM-Optionen finden Sie unter ct.de/y5rs.

Mit der Suchen/Ersetzen-Funktion eines Texteditors wie Notepad++ können Sie in einer ICS-Kalenderdatei eine Erinnerung für alle enthaltenen Termine einfügen.
Mit der Suchen/Ersetzen-Funktion eines Texteditors wie Notepad++ können Sie in einer ICS-Kalenderdatei eine Erinnerung für alle enthaltenen Termine einfügen.

Wenn Sie eine Programmier- oder Skriptsprache beherrschen, könnten Sie mit ein paar Zeilen Code alle Einträge in der ICS-Datei anpassen. Alternativ eignet sich auch die Suchen/Ersetzen-Funktion eines Texteditors, falls sie reguläre Ausdrücke oder zumindest den Umgang mit Absatzmarken beherrscht. Gut funktioniert das zum Beispiel mit Notepad++. Damit lautet der Begriff, durch den Sie END:VEVENT ersetzen: BEGIN:VALARM\nTRIGGER:-PT24H\nACTION:DISPLAY\nEND:VALARM\nEND:VEVENT.

Speichern Sie die geänderte ICS-Datei sicherheitshalber unter einem neuen Namen. Löschen Sie in Outlook den bereits importierten Kalender ohne Erinnerung und importieren Sie danach stattdessen die bearbeitete ICS-Datei. (swi@ct.de)

Dokumentation VALARM: ct.de/y5rs