Archiv ‘IT’

Dienstag, 18. April 2023

EXIF-Informationen komplett von JPEGs entfernen

Photos enthalten heutzutage eine grosse Zahl an Metadaten, die bei JPEGs im EXIF-Header abgelegt sind. Das können GPS-Koordinaten sein, aber auch der exakte Zeitpunkt der Bildaufnahme, ob Blitz verwendet wurde, und mit welchen Parametern, Blendenöffnungszeiten und ISO-Einstellungen, sowie bei Spiegelreflexkameras auch die verwendete Linse und die gewählte Brennweite.

Wer Photos aus welchem Grund auch immer davon säubern möchte, verwendet am Besten das Tool jhead, und zwar folgendermassen:

$ jhead -purejpg IMG_7034.jpg

Quelle: Remove metadata from JPGs with jhead

ACHTUNG: Die Datei wird überschrieben. Wer die Originaldatei weiterhin benötigt, sollte zuerst eine Kopie anfertigen. Bei iPhone-Photos habe ich auch schon die Erfahrung gemacht, dass die Orientation des Photos in den EXIF-Daten enthalten ist — werden die EXIF-Daten entfernt, kann es sein, dass das Photo plötzlich auf dem Kopf steht. Damit muss man leben können.

Tags: , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 3. April 2023

OAuth gegen Google Kalender hat sich geändert

Ich habe mir auf einem Linux-Server verschiedene Cron-Jobs eingerichtet, welche Python-Scripts gegen Google Kalender ausführen.

Das eine Script sendet mir und meiner Frau Hinweise per Email, wenn sich in der letzten Stunde bis 30 Tage in der Zukunft liegende Kalendereinträge geändert haben. Ein anderes Script schaltet Kalendereinträge, die ich aus dem SBB-Fahrplan eingetragen habe, auf die Standardsichtbarkeit (anstelle „Privat“).

Letzte Woche funktionierten beide Scripts nicht mehr. Ursache: Google hat die OAuth-Authentifizierung angepasst, und sicherer gemacht (Migrationsanleitung). Das von mir aus dem Internet zusammenkopierte, in Trial & Error zum Funktionieren gebrachte Login-Verfahren funktioniert nicht mehr:

Nach ein wenig Herumpröbeln schaut so die Lösung aus:

...
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

# Added 2023-03
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
...
googleCredentialsFile = scriptdir + '/token-readonly.json'
SCOPES = ['https://www.googleapis.com/auth/calendar.readonly']
...
creds = None
if os.path.exists(googleCredentialsFile):
    creds = Credentials.from_authorized_user_file(googleCredentialsFile, SCOPES)
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
        creds = flow.run_local_server(port=0)
    with open(googleCredentialsFile, "w") as token:
        token.write(creds.to_json())

service = build('calendar', 'v3', credentials=creds)
...

Nebenbemerkung: Beim Debuggen der (nun nicht mehr funktionierenden) Original-Routine stolperte ich auch noch über folgendes Problem: Why is oauth2client run_flow giving an Argparse error?

Tags: , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 26. März 2023

Die Log-Syntax zu geöffneten root sessions in auth.log hat sich geändert

Ich verwende monit extensiv, um viele Aspekte meines Linux-Server Fuhrparks zu überwachen.

Ein detektivischer „Sicherheitscheck“, den ich mit monit abdecke, sind Alarme zu frisch geöffneten root Sessions (der Informationssicherheits-Mensch in mir erhofft sich damit, irgendeines Tages so einen Angreifer zu entdecken):

check file su_root with path /var/log/auth.log
  if match "session opened for user root by" then alert

Ich kriege jedes Mal ein Email, wenn jemand eine root-Session eröffnet. Denn in auth.log findet sich dann jeweils folgender Eintrag:

Mar 26 13:33:16 localhost sudo: pam_unix(sudo:session): session opened for user root by pi(uid=0)

Seit einiger Zeit sind diese Emails für einige meiner Debian-Server verstummt (konkret: die x86er, während die Raspberry Pis fröhlich vor sich hermelden).

Heute machte ich mich daran, das Problem zu erforschen und zu lösen.

Erkenntnis: Die Syntax hat sich leicht geändert:

Mar 26 13:33:05 SERVER su: pam_unix(su-l:session): session opened for user root(uid=0) by mario(uid=0)

Deshalb habe ich die monit-Konfiguration angepasst:

check file su_root with path /var/log/auth.log
  if match "session opened for user root" then alert

Jetzt kommen die Alarme wieder …

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 2. Februar 2023

UAP-AC-PRO weigert sich, die Firmware zu aktualisieren

Komisches Problem am ersten des Monats: Wie üblich aktualisiere ich die Firmware meiner UniFi-Komponenten, welche ich an drei Standorten installiert habe. Einzig der UAP-AC-PRO weigert sich standhaft, das verfügbare Update einzuspielen: Im UniFi-Controller drücke ich auf Update, der Status wechselt zu Updating… — nur um ca. 30 Sekunden später auf Update zurückzufallen. Gefühlte zehn Mal klicke ich den Link, doch es tut sich nichts. Endlosschlaufe, Ground Hog Day!

Nun gut. Ich sage dem Access Point in derselben Oberfläche, dass er sich neu starten sollen. Nachdem die Pings auch zwei Minuten nach dem Neustart ins Leere laufen, beginne ich mir, sorgen zu machen. Schlussendlich sind es fünf Minuten, und das Gerät ist immer noch nicht hochgekommen. Irgendwas ist hier faul!

Ich überlege mir schon, den Bekannten am anderen Standort anzurufen und zu bitten, das Netzwerkkabel vom PoE-Switch zum Access Point kurz auszuziehen. Doch das kann ich ja auch machen — virtuell, aus der Ferne. Ich gehe in die Port Management-Oberfläche des Switches, und klicke auf Power Cycle PoE. Der Port wird grau, und dann wieder grün, und das Stromsymbol (der Blitz) erscheint wieder.

Nach ein paar dutzend Sekunden werden die Pings endlich beantwortet, und der Access Point ist in der Oberfläche nicht mehr ausgegraut. Ein letztes Mal klicke ich auf Update — und tatsächlich: Nach dem Neustart lässt sich das Firmware-Update problemlos durchführen. Das letzte UniFi-Gerät in meinem Fuhrpark wurde nun doch noch aktualisiert.

Tags: , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 30. Januar 2023

Bilder-Rückwärtssuche

Die „umgekehrte Bildsuche“ oder „Rückwärtssuche“ (engl. „reverse image search“) kann sehr nützlich sein, wenn man beispielsweise ein Photo an Hand einer Sehenswürdigkeit im Hintergrund lokalisieren möchte.

Nichts einfacher als das: Google bietet die Funktion an, Bilder hochzuladen und mit seiner Datenbank aller Bilder zu vergleichen. Irgendwo habe ich einmal gelesen, dass Yandex (ein russisches Produkt, Cancel in 3, 2, 1!) besser darin sei.

Auf Twitter wurde ich in einem Tweet zu Raketenangriffen in Israel nun auf ein drittes Produkt aufmerksam gemacht: TinEye Reverse Image Search.

Gerne teste ich das bei der nächsten Gelegenheit aus.

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 2. Januar 2023

Ein Apple SuperDrive unter Linux zum Laufen bringen

Die Feiertage sind für mich auch immer der Zeitpunkt, um mal wieder so richtig aufzuräumen. Dieses Jahr — ein Jahr nach dem Umzug — war der Keller dran. Unter anderem ging es Bundesordnern mit Unterlagen seit Mitte 1990er bis 2011 an den Kragen.

Mit meinem Fujitsu ScanSnap iX 1500 wurden alle Blätter gescannt, danach lief mit ABBYY FineReader PDF for Mac die OCR-Texterkennung darüber, und schlussendlich habe ich die PDFs auf dem lokalen Laufwerk abgelegt.

Ein Ordner enthielt auch CDs und DVDs für Web-Projekte der späten 1990er und frühen 2000er. Zum Glück hatte ich mir — in weiser Voraussicht — vor einiger Zeit ein Apple SuperDrive (A1379) gekauft, welches mit USB an beliebige Computer angeschlossen werden kann.

Bevor ich also die CDs und DVDs entsorgte, wollte ich die Daten damit ebenfalls auf den lokalen Computer sichern.

Erkenntnis: Von ungefähr einem Dutzend CDs und DVDs waren alle (!) noch lesbar. Bei zwei Datenträgern motzte macOS aber, dass diese ein „nicht unterstützes Format“ aufweisen (Nachtrag: Vermutlich weil unter Mac OS 9 gebrannt).

Ich entschied mich, noch nicht aufzugeben, und das Laufwerk an einen Linux-Laptop anzuschliessen. Das war aber gar nicht so einfach: Das Laufwerk machte zwar kurz ein Geräusch, nachdem es an USB angeschlossen wurde, doch die CD wurde nicht eingezogen.

Am USB-Bus wurde das Gerät angezeigt:

# lsusb
...
Bus 002 Device 011: ID 05ac:1500 Apple, Inc. SuperDrive [A1379]
...

Nach etwas Recherche dann die Lösung:

  • (einmalig) # apt-get install sg3-utils
  • (jedes Mal, nachdem das Laufwerk an USB angeschlossen wurde) # sg_raw /dev/sr1 EA 00 00 00 00 00 01 (WICHTIG: Wie ich erst später bemerkte, hätte das Lenovo ThinkPad eigentlich bereits einen DVD-Leser eingebaut gehabt. Dieses Gerät befindet sich unter /dev/sr0, weshalb das Apple-Laufwerk /dev/sr1 erhält)
  • Jetzt sollte man die CD/DVD einschieben können, und das Laufwerk zieht sie ein
  • Mittels # blkid kann man sich die Datenträgerinformationen anzeigen lassen; bei mir bspw. /dev/sr1: BLOCK_SIZE="2048" UUID="2001-02-02-16-03-16-00" LABEL="anzeiger wangen" TYPE="iso9660" PTTYPE="mac"
  • (einmalig) # mkdir /mnt/mac
  • # mount -t iso9660 /dev/sr1 /mnt/mac (falls das nicht klappt, kann man mit dem Parameter -t noch andere Dateisysteme testen, bspw. udf, hfs oder hfsplus Quelle)
  • Nun sollten sich die Ordnerstruktur und die Dateien unter /mnt/mac auflisten lassen
  • Backup, bspw. mit rsync
  • # umount /mnt/mac um das Filesystem zu unmounten
  • # eject /dev/sr1 um die CD auszuwerfen (das Laufwerk verfügt über keinen physischen Auswurfs-Knopf) (Quelle im Kommentar von Korhan Tınaztepe) (Fun fact: # eject /dev/sr0 öffnet die Schublade des ThinkPad-eigenen DVD-Laufwerks)

Quelle: Apple’s SuperDrive tweak for use with Linux, Use Apple’s USB SuperDrive with Linux,

Tags: , , , , , , , , , ,
Labels: Apple, IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 14. Dezember 2022

Immer noch die schnellste und effizienteste Lösung bei zickigem Hotel-WiFi

Im Blog-Post iPhone zeigt Landing Page eines WLAN-Gästeportals nicht an von 2017 habe ich aufgezeigt, wie man sich in zickige Hotel-WiFis einloggt, wenn die Anmeldemaske wider erwarten nicht erscheint.

Kurz: In das WLAN einwählen, die IP-Konfiguration anschauen, und danach manuell die IP des Routers/Gateways ansurfen. In 99.9 Prozent der Fälle gelangt man so (doch noch) auf das Anmeldeportal.

Dieser Tipp ist auch fünf Jahre später immer noch Gold wert. Das letzte Mal habe ich ihn im Oktober 2022 im Le Méridien in Stuttgart anwenden müssen:

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 3. November 2022

Homebridge stürzt kurz nach dem Start ab: „EISDIR: illegal operation on a directory, read“

Gestern kam meine Homebridge-Installation nach Anpassungen an der Konfiguration und der Umwandlung in ein systemd Service nicht mehr richtig hoch — gefühlt 30–60 Sekunden nach dem Start verschwand der Prozess.

Indem man Homebridge mit dem Debug-Parameter (-D, oder --debug) von der Kommandozeile manuell startet …

$ homebridge -D -U /var/lib/homebridge

… erkennt man kurz vor dem Ende der Ausführung folgenden Log-Event:

Got SIGTERM, shutting down Homebridge...

systemd meldet, dass der Prozess sich mit Exit Code 143 verabschiedet hat.

Scrollt man hoch, sieht man (bei mir) Warnungen von Plugins, und eine echte Fehlermeldung:

Error: EISDIR: illegal operation on a directory, read
    at Object.readSync (node:fs:748:3)
    at tryReadSync (node:fs:448:20)
    at Object.readFileSync (node:fs:494:19)
    at LocalStorage.parseDirSync (/usr/local/apps/homebridge/node_modules/node-persist/src/local-storage.js:637:35)
    at LocalStorage.parseDataDirSync (/usr/local/apps/homebridge/node_modules/node-persist/src/local-storage.js:572:21)
    at LocalStorage.initSync (/usr/local/apps/homebridge/node_modules/node-persist/src/local-storage.js:145:14)
    at HAPStorage.storage (/usr/local/apps/homebridge/node_modules/hap-nodejs/src/lib/model/HAPStorage.ts:25:25)
    at Function.HAPStorage.storage (/usr/local/apps/homebridge/node_modules/hap-nodejs/src/lib/model/HAPStorage.ts:13:26)
    at Function.AccessoryInfo.load (/usr/local/apps/homebridge/node_modules/hap-nodejs/src/lib/model/AccessoryInfo.ts:272:30)
    at Bridge. (/usr/local/apps/homebridge/node_modules/hap-nodejs/src/lib/Accessory.ts:1160:41)
    at step (/usr/local/apps/homebridge/node_modules/tslib/tslib.js:144:27)
    at Object.next (/usr/local/apps/homebridge/node_modules/tslib/tslib.js:125:57)
    at /usr/local/apps/homebridge/node_modules/tslib/tslib.js:118:75
    at new Promise ()
    at __awaiter (/usr/local/apps/homebridge/node_modules/tslib/tslib.js:114:16)
    at Bridge.Accessory.publish (/usr/local/apps/homebridge/node_modules/hap-nodejs/dist/lib/Accessory.js:928:38)

Zuerst ignorierte ich diesen Eintrag, weil ich mir nicht vorstellen konnte, dass eine „illegal operation on a directory“ die Anwendung zum Absturz bringen kann. Ich hatte mich getäuscht: Wie in Error: EISDIR: illegal operation on a directory, read beschrieben stürzt Homebridge tatsächlich ab, wenn sich im Ordner persist ein Unterordner befindet. Dies war bei mir der Fall, weil mein Installationsscript einen cp Befehl nicht korrekt ausführte.

Nachdem ich den Ordner gelöscht hatte, startete Homebridge wieder problemlos.

Tags: , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Montag, 31. Oktober 2022

Kim „Fake News“ Dotcom zu Liz Truss gehacktem Telefon und Nord Stream 1+2

Diskrepanzen im zeitlichen Ablauf

Klitzekleiner Schönheitsfehler: Die Sabotage* der Nord Stream 1 und 2-Pipelines ereigneten sich am Montag, 26. September 2022. Liz Truss wurde am 6. September 2022 zur Premierministerin Englands ernannt. Dass das private Telefon von Liz Truss gehackt worden war, wurde aber angabegemäss bereits im Sommer 2022 entdeckt:

The hack was discovered during the summer Tory leadership campaign

Quelle: Liz Truss’s personal phone that was hacked by Kremlin agents was so compromised it was locked away in a ’secure location‘ as experts fear top secret negotiations and private messages may have been leaked

Damals fungierte Liz Truss noch als Aussenministerin im Kabinett von Boris Johnson. Die „summer Tory leadership campaign“ startete im Juli 2022, dauerte sechs Wochen, und endete am 2. September 2022, dem letztmöglichen Termin zur Stimmabgabe. Der oder die Gewinnerin sollte nach Auszählung der Stimmen am 5. September 2022 ernannt werden (Quelle).

Zwei Hacks?

Die Russen hätten die Nachrichten also längst nicht mehr mitlesen können … ausser … es gab tatsächlich zwei Hacks: Den im Sommer entdeckten Hack, und anschliessend noch ein darüber hinaus bestehender, bis mindestens 26. September unentdeckt gebliebener Zugang zu „iCloud admin access“. Was Kim Dotcom damit meint, ist mir schleierhaft — eine Google-Suche fördert jedenfalls keine offizielle Seite zu „iCloud admin access“ zutage.

Verwirrung um Smartphone-Hersteller

Weitere Zweifel: Auf mehreren Photos, die Liz Truss an ihrem Smartphone hantierend zeigen, erkennt man, dass sie gar kein iPhone verwendet. Zum einen hier: MAIL ON SUNDAY EXCLUSIVE: Liz Truss’s personal phone that was hacked by Kremlin agents was so compromised it was locked away in a ’secure location‘ as experts fear top secret negotiations and private messages may have been leaked (Direktlink auf das Bild). Zum anderen hier:

Dasselbe Telefon findet sich auch auf einem Photo (Direktlink), welches angabegemäss im Mai 2018 aufgenommen wurde. Verwendet Liz Truss also tatsächlich ein mindestens vier Jahre altes Smartphone, oder sind die Bilder oben uralt?

Dank der Yandex Reverse Image Search könnte es sich beim Gerät um ein Samsung Galaxy Note8 handeln. Hier zudem ein Vergleich mit der Fussseite von Liz Truss Telefon, und dem Samsung Galaxy Note 8 Hands-On (Video) (Direktlink). Sehr ähnlich, aber nicht identisch — ich vermag bei Liz‘ Telefon zwei Kopfhöreranschlüsse (?!) erkennen.

Wobei … die Photos natürlich nach der Entdeckung des Hacks gemacht worden sein könnten, und Liz Truss zu dem Zeitpunkt entschieden hatte, von iPhones wegzumigrieren. Oder: Dass die Photos Liz Truss‘ (ungehacktes) Geschäftshandy zeigen.

Abgesehen davon: Wie Politiker auf die Idee kommen können, mit ihren privaten (!) Smartphones Nachrichten mit ausländischen Ministern auszutauschen, ist mir völlig schleierhaft.

*) Nebenbemerkung: Bei einer Google-Suche nach „nord stream 2 explosion“ heisst es mit grosser Schrift lapidar „gas leaks“ — als wären die Röhren per Zufall am selben Tag zur fast gleichen Zeit … mir nichts dir nichts „kaputt“ gegangen.

Nachtrag

Kim legt nach: Govt secrets are only secret to ordinary people, not to nations engaged in the global cyberwar.

Zusammengefasst: Alle Geheimdienste hören alle Staatsoberhäupter ab. Alle Telephone werden abgehört, und alle Datenbanken sind von den Geheimdiensten infiltriert. Es gibt keine Geheimnisse.

Kim, ich weiss nicht so recht …

Tags: , , , , , , , , , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen