php2au3 neuer Ausweis

  • Moin zusammen.

    Ich habe folgende PHP-Datei gefunden.
    Kann das jemand in ein *.au3 umschreiben

    Spoiler anzeigen


    Ich sage schon jetzt Dank und schätze mal, das es einige nutzen würden. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hallo!

    Ich glaube nicht, dass das so einfach geht. Es müsste zuerst jemand einen Personalausweis-Credential-Provider oder einen Smartcard-Credential-Provider schreiben. Damit der Zugriff auf den Personalausweis oder auf die AusweisApp2 oder auf eine Smartcard (Deutsch: Chipkarte) möglich wird. Aus Deinem Beispielcode ist nicht ersichtlich, wie der Zugriff auf die AusweisApp2 oder auf eine Smartcard erfolgt.

  • Moin.

    Danke erst einmal.

    Das ist es ja. Mit dem Script benötigt man keine App oder Smardcard/Chipkarte.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Hi, ich hab mich der Sache mal angenommen und das ganze umgesetzt:

    Beispielausgabe:

    Das Alter (und damit auch der legal check) ist leider nur mäßig gut, weils nur bis 100 Jahre funktioniert. In der Ausweis-ID sind nur die letzten beiden Ziffern (z.B. 23), deshalb gibts bei 100+ Jährigen ein falsches Alter aus.

    Viel Spaß,

    Kanashius :)

  • Das spielt keine Rolle, der Code funktioniert trotzdem noch, weil von vorne gelesen wird und die letzte Prüfziffer ignoriert wird, weil sie nicht nur über die ID, sondern den ganzen Ausweis geht (und die Daten haben wir nicht).

    Man könnte ggf. noch die Versionsnummer in die Infos hinzufügen, ich denke aber nicht, dass sie relevant ist...

    Wenn man alle Ausweise (und nicht nur neue) unterstützen will sollte man an dem Code eh noch arbeiten, weil man sich dann nicht mehr auf die Zeichenpositionen (absolut in der ID) alleine verlassen kann.

  • Hallo Alina , ich sehe, Kanashius hat schon eine Variante geliefert.

    Ich schrieb heute neugierdehalber auch eine, orientierte mich dabei in den Hauptfunktionen jedoch sehr nah an deiner Vorgabe.

    Es scheint zu funktionieren, aber ich schrieb noch nie eine Zeile in PHP und habe deshalb kaum Ahnung. Die Hauptfunktionen sind intuitiv und mit dem PHP-Handbuch sowie dem Online-PHP-Code-Tester zustande gekommen.

    Wer mag, kann es ja mit der Variante von Kanashius ergänzen/erweitern.

    Wozu soll man das denn eigentlich gebrauchen können?

    Gruß, fee

  • Wozu soll man das denn eigentlich gebrauchen können?

    Naja. Auf Webseiten mag das hilfreich sein. Aber in einem PC-Programm ist ohne Gegenprüfung (z.B. über die AusweisApp2) wohl kaum eine Validierung (Echtheitsprüfung) möglich. ;)

  • Tja, keine Ahnung, bei mir läuft er optimal, auch der von hier kopierte.

    Welches Nummern-Format testet du? Das von Kanashius geht nicht und könnte vielleicht diesen Fehler verursachen.

    Ist deine AutoIt-Version die 3.3.16.1 (wie sie im Dateikopf steht)?

    Ansonsten weiß ich nicht, woran das liegen könnte, außer vielleicht am Betriebssystem. Ich nutze Windows 7 Pro (64 Bit).

  • Na, die Ausweis-Nummer. Ein ungültiges Beispiel findest du im PHP-Code von Beitrag #1:

    Zitat von Alina
    Code
    1234567891D 2345678 9012345 6

    Der Nummer-Aufbau neuerer Ausweise funktioniert mit meinem Code nicht, dafür ist der ursprüngliche PHP-Code wohl zu alt. Stattdessen müsste der Code von Beitrag #5 eingebaut werden, der vermutlich auf neuerem PHP-Code beruht.

    Einmal editiert, zuletzt von fee (24. Juli 2023 um 23:48)

  • Der Nummer-Aufbau neuerer Ausweise funktioniert hiermit wohl nicht. Dafür müsste der Code von Beitrag #5 eingebaut werden.

    Da müsste man wissen wie der Code eingebaut werden muss. ;)

    Der Code aus #5 rechnet nicht sauber. Er gibt bei isExpired True aus, obwohl der Ausweis erst 2030 abläuft.

  • Das PHP-Script werde ich nicht testen, das tue ich mir nicht an. ;)

    Ich bin jetzt erstmal dabei, den Dialog aus #8 optisch anzupassen. Sieht auch besser aus, und man weiss was man wo eintragen muss. Der Code für den Dialog sieht wie folgt aus (Die Spitzklammern kann man, wenn erforderlich, später im Code ergänzen. Dann sieht der Dialog m.E. optisch besser aus).

  • Genau das wollte ich nicht machen, weil aus dem Zahlen-WirrWarr auf dem Ausweis die einzelnen Bedeutungen nur aus der Syntax-Reihenfolge ersichtlich sind, weshalb man sie auch einfach nacheinander schreiben kann.

    Trotz der besseren Übersicht büßt du die Les-/Korrigierbarkeit der Ausweis-Nummer ein, weil du keine Festbreitenschrift für die Felder verwendest.

    Letztlich dient das Skript ja nur zur Gegenprüfung der Prüfziffern und kann sonst nicht weiterverwendet werden. Die Spitzklammern wollte ich auch erst weglassen.

    Eigentlich würde ein einziges Eingabefeld ausreichen, aber ich wollte die einzelnen Felder wie im ursprünglichen PHP-Skript aus Beitrag #1 in ihrer Eingabelänge beschränken können, was jedoch auch mit Restrict Control RegExp möglich wäre.

    Man könnte auch sagen: Ein mickriger Anwendungsfall verdient nur eine mickrige GUI.

    Aber das kann ja jeder machen/handhaben/ändern wie er lustig ist. :)

  • Für mich ist das eine nette Übung. In der Praxis kann das kaum genutzt werden. Ein Kleinkind findet die Berechnungsmethode im Internet. Altersverifikation = 0. :D

    BTW:

    In Excel ist das leichter umzusetzen (Ein paar Formeln. Und eine UDF für den Buchstaben-Zahlen-Tausch). Wobei "leicht" relativ ist. ;)

  • und die letzte Prüfziffer ignoriert wird, weil sie nicht nur über die ID, sondern den ganzen Ausweis geht

    Laut Internetrecherche wird die letzte Prüfziffer genauso berechnet wie die anderen Prüfziffern. Hierbei werden alle Angaben im Maschinencode (Ausweisnummer, Geburtsdatum, Ablaufdatum, und falls vorhanden die Versionsnummer) inklusive Prüfziffern zusammengesetzt und dann mit der "7,3,1"-Methode von vorn nach hinten multipliziert und alle Ergebnisse addiert, die letzte Ziffer ist dann die Prüfziffer. Funktioniert bei mir auch. Ob das was im Netzt steht Unsinn ist und die Berechnung "nur zufällig" funktioniert, kann ich natürlich nicht sagen.