[cmd/ps] signaturzeitpunkt​ einer datei, unmöglich

  • hallo,

    ich hab ein kleines problem:


    ich möchte von einer datei

    "C:\Windows\explorer.exe"

    gewisse zertifikatinformationen herausbekommen.


    eigentlich nur eine, und zwar den

    "Signaturzeitpunkt/Signature Date/Date signed"-wert herrausfinden...


    es ist schwerer als ihr glaubt.

    bei powerschell hab ich & ein kollege mich mit 'Get-Certificate' & 'Get-ItemProperty' rumgeprügelt

    bei cmd bin ich bei 'certutil' hängengeblieben.


    bei 'certutil' gibs zwar haufen schalter, aber da scheind keiner so recht zu passen.

    mit dem 'dump' befehl konnte ich meine information finden.


    theoretisch könnte ich den string filtern,

    zu dumm das das filterwort meiner wahl auf deutsch ist,

    was auf einem potenziellen sprach fremden system nicht funktioniert.


    in powershell konnte ich leider keinen vergleichbaren 'dump'-befehl nicht finden,

    das hätte die interoperabilität gesichert.


    es wäre natürlich wunderbar, wenn man den wert direkt auslesen könnte...

  • glaub schon.


    der signaturzeitpunkt ist der exakte tag/uhrzeit,

    zu welchen zeitpunkt die datei signiert wurde,

    um so das alter der datei zu bestimmen.


    auf die dateisystem-eigenschaften von 'erstellt', 'geändert' & 'letzter zugriff'

    kann ich mich nicht verlassen, wenn das objekt aus dem internet kommt,

    da diese zeiten dann den download-zeitpunkt aber nicht den herstellungszeitpunkt trägt.



    wenn es leicht herrauszufinden ist wäre super,

    das was ich sonnst gefunden habe ist sehr eskalierend:


    www.sysadmins.lv/blog-en/retrieve-timestamp-attribute-from-digital-signature.aspx

    www.sysadmins.lv/blog-en/reading-multiple-signatures-from-signed-file-with-powershell.aspx

    ich bräuchte schon ehr was kompakteres, was ich via cmd als einzeiler abfragen kann.

    für einfache sachen fragen ich in cmd auch gern powershell funktionen ab.

    einen riesigen codeblock-funktion da duchzuquetschen ist ehr hinderlich.


    ich hätte theoretisch noch andere möglichkeiten,

    aber das könnte sich in zukunft als praktisch erweisen,

    da werte von einer webseite unbeständig sind (desingänderungen).


    ---

    [edit:]

    \\live.sysinternals.com\tools\sigcheck.exe kann ich auch nicht nutzen,

    da die formatierung nicht auf allen systemen gewärleistet werden kann.

    (regionale unterschiede)

  • Ich nehme an, dass du Win. 10- oder Win. 11 mit dem Windows Media Creation Tool herunterlädtst. Es ging ja um das Explorer-Zertifikat.

    Alle Zertifikate müssten normalerweise auf das jeweilige Betriebssystembuild abgestimmt sein.

    Und zwar mit dem originalen Erstelldatum (sha1 und sha256) und dem Zeitpunkt, wann das Zertifikat abläuft.


    Das heißt, mit jedem großen System-Update ändert sich auch zeitlich die Güldigkeit des Zertifikats.

    Wichtig ist nur die Gesamtlaufzeit eines Zertifikats, z. Bsp. bis 2025. Nach Ablauf einer bestimmten Zeit, wird das Zertifikat des Explorers sowieso verlängert. Sonst könnte man den Explorer nicht mehr öffnen.


    Vielleicht gibt es bei psw.net so ein Auslese-Tool. Sehe gerade, die wollen nur Zertifikate verkaufen.

    Ich würde aber trotzdem einmal bei der Firma fragen, ob es hierzu zuverlässige Auslese-Tools gibt. Ein SSL-Zertifikat, läuft meistens nach einem Jahr ab.

    Mehr kann ich zu diesem Thema auch nicht sagen. Du bist aber schon auf dem richtigen Weg.

  • so ich habe endlich eine lösung gefunden,

    möchte das hier nicht ergebnislos stehen lassen:

    (natürlich bin ich nicht komplett alleine darauf gekommen ;D )


    Code
    1. @FOR /f "tokens=1 delims=," %a IN (' PowerShell " [datetime]::ParseExact([regex]::match((.'\\live.sysinternals.com\tools\sigcheck.exe' 'C:\Windows\explorer.exe' -accepteula | out-string),'(?i)(?<=Signing date:\s+).*').Value.trim(),((gpv 'HKCU:\Control Panel\International' -Name sShortTime),(gpv 'HKCU:\Control Panel\International' -Name sShortDate)) -join ' ',[cultureinfo]::CurrentUICulture).toString('dd_MM_yyyy HH-mm-ss') " ') DO (@echo.[%a]")

    ich wühle in der registry, weil der powershell befehl ein falsches datum-pattern geliefert hatte.

    grund ist weiter unbekannt, aber es ist ein potenzieller fehler,

    der auch auf anderen systemen auftreten könnte.


    der live link ist nur drin, um den befehl sofort auszufüren zu können,

    sonnst selbst downloaden und umschreiben...



    aber wie schon gesagt, es wäre weitaus geiler, wenn es powerschell selbst könnte,

    dieser affentanz mit fremden, alten, verbuggten tools ist einfach nur lästig.

    und offline geht das schon gar nicht --> OOE!

  • Schön, dass du das Problem lösen konntest. Den Bug in der Powershell, wird Microsoft vermutlich nicht so schnell korrigieren.

    Dafür besteht wahrscheinlich kein Interesse.


    Aber vielleicht muss Microsoft den Zeitbug doch irgendwann einmal korrigieren, z. Bsp. bei Verwendung von Quantencomputern.

    Ansonsten ein anderes Betriebssytem von einem anderen Hersteller installieren.