Prüfpaket maschinell mit dem Prüfwerkzeug prüfen
Kurzantwort: Ein Assistent mit Headless-Browser lädt das Prüfwerkzeug von pruefen.mytid.de, vergleicht die SHA-256-Prüfsumme, öffnet die Datei per file://, übergibt die Prüfpakete an das Feld #datei und liest das Ergebnis als JSON aus #pruefergebnis-json. Das Gesamturteil lautet gueltig, ungueltig oder unvollstaendig, gueltig ist erreichbar, unvollstaendig bleibt zum Beispiel bei älteren Einträgen ohne Erfassungssignatur. Das Werkzeug belegt nur, dass die Einträge zum Siegel passen, nicht, wann gesiegelt wurde oder ob die Zeiten stimmen.
Voraussetzungen und Datenschutz beim Prüfen von MyTid-Paketen
Abschnitt betitelt „Voraussetzungen und Datenschutz beim Prüfen von MyTid-Paketen“- Ein Prüfpaket enthält personenbezogene Daten, unverschlüsselt und mit allen Feldern der Einträge, auch Notizen. Prüfe nur Pakete, die dir der Berechtigte selbst gibt, und lade sie nirgends hoch, auch nicht in einen anderen Dienst.
- Das Prüfwerkzeug sendet nichts. Es ist eine einzelne HTML-Datei, die nichts nachlädt, eine eingebaute Sicherheitsrichtlinie verbietet jede Netzverbindung. Nur der Download der Datei selbst braucht eine Verbindung.
- Du brauchst einen Headless-Browser mit Automatisierung, zum Beispiel Playwright. Ein reiner Textabruf genügt nicht, weil die Prüfung im Browser als Skript läuft.
- Wie ein Mensch das Werkzeug benutzt, steht unter Prüfpaket mit dem Prüfwerkzeug prüfen. Woher das Prüfpaket kommt, steht unter Prüfung von MyTid-Nachweisen.
Das Prüfwerkzeug für MyTid laden und die Prüfsumme vergleichen
Abschnitt betitelt „Das Prüfwerkzeug für MyTid laden und die Prüfsumme vergleichen“- Lade
https://pruefen.mytid.de/mytid-pruefwerkzeug.htmlherunter. - Berechne die SHA-256-Prüfsumme der Datei und vergleiche sie mit dem Wert, den die Seite
https://pruefen.mytid.deim Text zeigt (Elementcode.summe). Stimmen sie nicht überein, brich ab und melde das. - Öffne die Datei lokal per
file://, nicht über das Netz.
Das MyTid-Prüfwerkzeug mit Playwright bedienen
Abschnitt betitelt „Das MyTid-Prüfwerkzeug mit Playwright bedienen“- Öffne die Datei im Headless-Browser und warte auf das Attribut
data-bereit="ja"am Elementhtml. - Übergib die Prüfpakete mit
page.setInputFiles('#datei', [pfade]). Mehrere Pakete in einem Aufruf sind möglich. Die Prüfung startet von selbst, einen Start-Knopf gibt es nicht. - Warte auf
#pruefergebnis-json[data-status="fertig"]. Das Attribut wechselt vonbereitüberlaeuftzufertig. - Lies den
textContentvon#pruefergebnis-jsonund parse ihn als JSON.
Weitere Selektoren:
button#leerenentfernt alle geladenen Pakete. Danach lautet das Gesamturteilunvollstaendigmit leerer Paketliste.- Neu geladene Pakete kommen zu den bisherigen hinzu. Lade für eine neue Prüfung zuerst
button#leeren, oder öffne die Seite neu. - Das Element
pre#pruefergebnis-jsonträgtdata-gesamturteilunddata-durchlauf. Der Durchlauf zählt mit jedem Laden und jedem Leeren hoch.
import { chromium } from 'playwright';import { createHash } from 'node:crypto';import { writeFileSync } from 'node:fs';
const SEITE = 'https://pruefen.mytid.de';const pakete = process.argv.slice(2); // Pfade der Prüfpaket-Dateien, vom Berechtigten übergeben
// 1. Werkzeug laden und gegen die Prüfsumme der Seite prüfenconst datei = Buffer.from(await (await fetch(`${SEITE}/mytid-pruefwerkzeug.html`)).arrayBuffer());const html = await (await fetch(`${SEITE}/`)).text();const soll = /class="summe">([0-9a-f]{64})</.exec(html)?.[1];const ist = createHash('sha256').update(datei).digest('hex');if (!soll || soll !== ist) throw new Error(`Prüfsumme stimmt nicht: ${ist} statt ${soll}`);writeFileSync('/tmp/mytid-pruefwerkzeug.html', datei);
// 2. Per file:// öffnen und warten, bis das Werkzeug bereit istconst browser = await chromium.launch();const page = await browser.newPage();await page.goto('file:///tmp/mytid-pruefwerkzeug.html');await page.waitForSelector('html[data-bereit="ja"]');
// 3. Pakete laden, die Prüfung startet von selbstawait page.setInputFiles('#datei', pakete);await page.waitForSelector('#pruefergebnis-json[data-status="fertig"]');
// 4. Ergebnis als JSON lesenconst ergebnis = JSON.parse(await page.locator('#pruefergebnis-json').textContent());console.log(ergebnis.gesamturteil, ergebnis.pruefteMonate);for (const p of ergebnis.pakete) { console.log(p.datei, p.urteil, p.schritte.filter((s) => s.ergebnis !== 'bestanden').map((s) => `${s.id}: ${s.ergebnis}`));}console.log(ergebnis.folge?.urteil ?? 'keine Folge');await browser.close();Das JSON-Ergebnis des MyTid-Prüfwerkzeugs lesen
Abschnitt betitelt „Das JSON-Ergebnis des MyTid-Prüfwerkzeugs lesen“Das Ergebnis ist ein JSON-Objekt mit dem Schema mytid-pruefergebnis-v1:
schema: immermytid-pruefergebnis-v1.durchlauf: Zähler, der mit jedem Laden und Leeren hochzählt.gesamturteil:gueltig,ungueltigoderunvollstaendig.pruefteMonate: Liste der Monate alsJJJJ-MM.siegelHashesundschluesselFingerabdruecke: Listen ohne Doppelte.pakete: je Paket ein Objekt mitdatei: Dateiname,urteil:bestandenodernicht_bestanden,lesefehler: Text odernull, gesetzt, wenn die Datei kein lesbares JSON ist,monat,scope,mitglied(bei Siegelformat v1null),siegelVersion,siegelHash,schluesselFingerabdruck,schluesselGeneration,gesiegeltLautGeraeteuhr: ISO-Zeitpunkt von der Uhr des Geräts,eintraege:{ imPaket, lautSiegel, urheber, erfassung }odernull, wobeiurheberunderfassungje Status die Anzahl der Einträge nennen,schritte: Liste von{ id, name, ergebnis, gruende },ergebnisistbestanden,nicht_bestanden,nicht_pruefbarodernicht_anwendbar(Schritt gibt es im Paketformat nicht, zählt nicht gegen das Gesamturteil),gruendesind Texte,hinweise: Liste von Texten.
folge:nullbei einem einzelnen Paket, sonst{ pruefbar, urteil, schritte, ausgeschlossen }.urteilistbestanden,nicht_bestandenodernicht_pruefbar,ausgeschlossennennt Pakete, die wegen einer nicht bestandenen Einzelprüfung nicht in die Folge eingehen.
Bricht die Prüfung unerwartet ab, enthält das Objekt nur schema, durchlauf, gesamturteil: "ungueltig" und fehler mit einem Text, das Attribut data-status ist trotzdem fertig.
Das Gesamturteil des Prüfwerkzeugs für MyTid-Pakete deuten
Abschnitt betitelt „Das Gesamturteil des Prüfwerkzeugs für MyTid-Pakete deuten“Die Regeln für gesamturteil:
ungueltig, sobald ein Paket oder die Folge nicht besteht, oder wenn die Prüfung abbricht.unvollstaendig, wenn kein Paket geladen ist oder mindestens ein Prüfschrittnicht_pruefbarist, auch bei einem bestandenen Paket.gueltig, wenn jeder Schritt aller Pakete und der Folgebestandenodernicht_anwendbarist.
So deutest du das Urteil:
unvollstaendigheißt nicht, dass etwas falsch ist. Es heißt, dass mindestens ein vorgesehener Schritt mit den Daten der Datei nicht entschieden werden kann. Die Schrittezeitankerundsperrstatussind bei Paketformat 1nicht_anwendbarund verhinderngueltignicht. Gründe fürnicht_pruefbarsind Einträge ohne Erfassungssignatur (ältere Einträge), fehlender Prüfkontext, geschwärzte Felder oder fehlender Schlüssel (urheber) und ein Schlüssel, der nicht zurkeyIdpasst (signatur). Ein Paket kannbestandensein und das Gesamturteil trotzdemunvollstaendiglauten. Die Gründe stehen ingruendeund inhinweise.- Entscheidend sind
urteilje Paket undfolge.urteil. Sind alle Paketebestandenund ist die Folgebestandenoder nicht vorhanden, nenne dem Nutzer das so und nenne dienicht_pruefbar-Schritte mit Grund.nicht_anwendbar-Schritte sind kein Mangel. ungueltignennst du mit dem Schritt, dernicht_bestandenist, und seinem Grund. Rate nicht, warum er fehlschlug.
Grenzen des Prüfwerkzeugs für MyTid-Pakete
Abschnitt betitelt „Grenzen des Prüfwerkzeugs für MyTid-Pakete“Ein bestandenes Paket belegt, dass die Einträge die sind, über die der Inhaber des Schlüssels das Siegel signiert hat. Es belegt nicht:
- wem der Schlüssel gehört. Der Fingerabdruck ist mit einer unabhängigen Angabe des Nutzers zu vergleichen,
- wann gesiegelt wurde, weil
gesiegeltLautGeraeteuhrvon der Uhr des Geräts stammt, - ob nach dem geprüften Siegel weitere Siegel entstanden sind,
- ob die Erfassung der Zeiten richtig war,
- ob ein Eintrag vor dem Siegel oder in einem nicht versiegelten Monat geändert wurde.
Sag nie, ein Nachweis sei fälschungssicher, gerichtsfest oder für eine Behörde ausreichend. Gib nichts aus dem Paket an Dritte weiter und speichere es nicht über die Prüfung hinaus.