erkennen, ob etwas einen öffentlichen Schlüssel enthält

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

erkennen, ob etwas einen öffentlichen Schlüssel enthält

Beitrag von Lohengrin » 28.10.2018 14:54:41

Ich habe hier Dateien, die möglicherweise einen öffentlichen Schlüssel enthalten.
Wenn ich das mit file dumdidum auswerte, bekomme ich etwas wie dumdidum: GPG key public ring, created Sun Oct 28 13:01:03 2018 als Antwort. Wenn ich mit hd < /usr/share/file/magic.mgc | grep -B10 -A10 'GPG key pu' nachschaue, wie file darauf kommt, werde ich daraus nicht schlau.

Frage 0:
Hat so eine Datei eine Magic Number? Wenn ja, welche ist das? Wenn nein, dann könnte ich höchstens den Output von file parsen, was langfristig nicht taugt.

Frage 1:
Ich hätte es gerne allgemeiner.
Mir fällt da nur ein, selber einen Header zu bauen, zum Beispiel cookie monster key OpenPGP was eine Magic Number von 636f6f6b6965206d6f6e73746572206b657920 für meine Schlüssel im Allgemeinen und 636f6f6b6965206d6f6e73746572206b6579204f70656e5047500a für meine Schlüssel im OpenPGP-Format ergibt.
Hat jemand eine andere Idee?
Harry, hol schon mal das Rasiermesser!

Benutzeravatar
format_c
Beiträge: 188
Registriert: 23.01.2008 14:24:17
Kontaktdaten:

Re: erkennen, ob etwas einen öffentlichen Schlüssel enthält

Beitrag von format_c » 28.10.2018 18:44:51

Man könnte sich anschauen wie file das macht.
Speziell im Fall Zertifikat wird es schnell hässlich.
Das X.509 Zertifikat wird in einer ASN.1 Struktur notiert deren Werte mittels DER codiert sind.
Dann kann das Ganze Ding nochmal optional mit Base64 codiert werden wobei es dann noch einen ASCII Header und Footer bekommt der wiederum leichter zu detektieren ist.
Nimmt man das ASN1/DER Zertifikat sind die ersten Bytes durch den X.509 Standard immer (relativ) gleich.
Relativ, weil X.509 mittlerweile in der Version 3 im Umlauf ist und diese Version mit im Header enthalten ist außer für Version 1 :? :roll:
[[ Black Holes are where God devided by 0 ]]

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Re: erkennen, ob etwas einen öffentlichen Schlüssel enthält

Beitrag von Lohengrin » 28.10.2018 23:54:48

format_c hat geschrieben: ↑ zum Beitrag ↑
28.10.2018 18:44:51
Man könnte sich anschauen wie file das macht.
Das habe ich leider nicht nachvollziehen können.
Ich habe mir mehrere Dateien angesehen, die file als GPG key public ring erkennt, und die fangen alle mit 99020d045 an. Aber ich kann das nirgendwo im magic.mgc finden, auch nicht rückwärts und auch nicht, wenn ich vorher die \x00 entferne. Dass man vier beliebige Hexziffern in etwas, das komprimiert 180 kiB groß ist, ein paar mal findet, geht in den Bereich Radosophie.

Ich könnte ja 99020d04 als Magic Number nehmen, aber ich weiß nicht, was mir da noch so alles durchgeht.
format_c hat geschrieben: ↑ zum Beitrag ↑
28.10.2018 18:44:51
Nimmt man das ASN1/DER Zertifikat sind die ersten Bytes durch den X.509 Standard immer (relativ) gleich.
Relativ, weil X.509 mittlerweile in der Version 3 im Umlauf ist und diese Version mit im Header enthalten ist außer für Version 1 :? :roll:
Wenn mein Selektor noch ganz viel anderes ASN1 durchlässt, taugt er nicht.

Mir gefällt meine Idee, da selber einen Header zu setzen, nicht. Wenn die Dinger ohne großen Aufwand anders zu fangen sind, wäre das doppeltgemoppelt.
Mit Kanone auf Spatzen wäre, die Dateien automatisiert mit gpg zu importieren, und dann zu schauen, ob ein Schlüssel im Keyring ist.
Harry, hol schon mal das Rasiermesser!

Antworten