Agespoofing

In Deutschland ist hat jeder über 16-Jährige einen Personalausweis.

Dieser Personalausweis enthält in der sogenannten maschinenlesbaren Zone eine Reihe von Ziffern und Winkeln, die nocheinmal das Wesentliche, was auf dem Ausweis auch im Klartext steht, zusammenfasst.

Dazu gehören:

  • Die ausstellende Behörde
  • Die Nationalität
  • Der Geburtstag
  • Das Ablaufdatum

Mir geht es im folgenden vor Allem um das Geburtsdatum. Oftmals wird diese Personalausweisnummer nämlich zur Altersverifikation genutzt. Es wäre doch schön wenn man nun nicht seine tatsächliche Ausweisnummer angeben müsste, sondern sich eine generieren könnte.

Das geht. Denn die Nummer lässt sich aus den oben genannten Daten und einigen Prüfsummen zusammensetzen. Das „schwierige“ wäre nun also die Prüfsummen zu berechnen. Das ist aber nicht schwer.

Die Personalausweisnummer lässt sich in Blöcke unterteilen, die jeweils durch Winkel bzw. den Nationalitätsbuchstaben (D für Deutschland) begrenzt sind.

Über diese Blöcke wird eine Prüfsumme erstellt. Es wird jeweils die erste, vierte, siebte, … Zahl mit 7 multipliziert, die zweite, fünfte, achte, … mit 3 und die anderen Ziffern mit 1. Dann werden diese Produkte aufsummiert. Die letzte Zahl dieser Summe (also die Summe Modulo 10) entspricht der Prüfsumme.

Der Aufbau der Ausweisnummer ist also folgender (ohne Leerzeichen):

wwww NNNNN p1 D << jj MM dd p2 < JJmmDD p3 <<<<<< pGes

Dabei stehen die Symbole für folgendes:

  • wwww Ist die Behördenkennzahl
  • NNNNN ist eine fortlaufende Nummer
  • p1 ist die Prüfsumme über den ersten Block
  • D ist die Nationalität für Deutschland
  • die folgenden jj MM dd stehen für Jahr, Monat und Tag (jeweils mit führender Null wenn einstellig) des Geburtstages
  • p2 ist die Prüfsumme über den Geburtstag
  • die letzten jj MM dd stehen für Jahr, Monat und Tag (wiederum mit führender Null) des Ablaufdatums
  • p3 ist widerum die Prüfsumme über das Ablaufdatum
  • pGes ist dann die Prüfsumme über alle Blöcke inklusive der Prüfsummen p1, p2, p3 (Das D wird jedoch nicht mitgezählt)

So kann sich also jeder seine eigene Personalausweisnummer berechnen und Altersverifikationssysteme austricksen.

Ein fertiges Programm im C++ Quellcode gibt es dafür auch.

Advertisements

Über kenny1987

Hallo Leute, ich bin kenny. Ich studiere momentan Informatik und werde über alles interessante was mir so über den Weg läuft bloggen. Seien es irgendwelche News oder aktuelle Entwicklungen von meinen Anwendungen. Viel Spaß :)
Dieser Beitrag wurde unter Programmieren abgelegt und mit , , , , , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort zu Agespoofing

  1. Thomas schreibt:

    Die Prüfsummen berechnen ist auch nicht das Problem. Das Problem ist, eine Karte anzufertigen, die ein Lesegerät auch akzeptiert. Daran bin ich bis jetzt noch gescheitert, ich denke die haben da noch weitere Sicherheitsmerkmale in der Maschinenlesbaren Zone integriert (zumindest bei der Schweizer Identitätskarte). Ich studiere auch Informatik und will nicht jedesmal, wenn ich Zigaretten kaufe meine ID-Kartennummer bekanntgeben…

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s