Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Windows Benutzerzertifikate auslesen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.12.2006, 08:22 Uhr
~Gerri
Gast


Hallo zusammen,

ich habe die Aufgabe die Windows Benutzerzertifikate aus dem Zertifikatsspeicher auszulesen. Normal anschauen kann man sich die über die MMC und dem Snap-In Zertifikate.

Ist das möglich, wenn ja wie? Ich habe nur ein Beispiel gefunden, welches auf dem .net Framework aufbaut. Da ich dieses aber meiden soll, stehe ich wie Ochs vorm Berge.
--> .net Variante: http://msdn2.microsoft.com/en-gb/library/ms148473.aspx


Wäre sehr dankbar für eure Hilfe, Ratschläge oder Belehrungen :-)

Besten Dank und Grüße,
Gerri
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.12.2006, 08:50 Uhr
ao

(Operator)


Dann guck mal hier und in den Unterkapiteln:

http://msdn2.microsoft.com/en-gb/library/aa374863.aspx

Ach ja, und: to WinApi
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.12.2006, 09:01 Uhr
~Gerri
Gast


hmmm damit kann ich erstmal nicht viel anfangen. Am liebsten hätte ich es wenn mit irgendjemand ein lauffähiges CodeBeispiel posten kann, weil ich aus der Java und C# Welt komme...

C++ fällt mir momentan doch noch recht schwer, weil ich noch nie was damit gemacht habe.

Besten Dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.12.2006, 09:04 Uhr
~Gerri
Gast


... außerdem müsste das Ganze auf WinXP oder Win2k lauffähig sein.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.12.2006, 09:58 Uhr
ao

(Operator)


Sorry, kein Beispiel zur Hand. Du musst dich schon selber einlesen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.12.2006, 10:20 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


Wieso meidest du .NET, wenn du eh aus der C# Welt kommst ?
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.12.2006, 11:46 Uhr
~Gerri
Gast



Zitat von J-jayz-Z:
Wieso meidest du .NET, wenn du eh aus der C# Welt kommst ?


.net ist nicht auf allen Systemen installiert. Und ein Ausrollen muss / soll vermieden werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.12.2006, 12:15 Uhr
~Gerri
Gast


So hier mal wie weit ich bisher gekommen bin:


C++:
#include <stdio.h>
#include <windows.h>
#include <wincrypt.h>



void main(void)
{

//--------------------------------------------------------------------
// Declare and initialize variables.
HANDLE          hStoreHandle = NULL;
PCCERT_CONTEXT  pCertContext = NULL;  
char * pszStoreName = "MY";

//--------------------------------------------------------------------
// Open a system certificate store.
if (hStoreHandle = CertOpenSystemStore(
     NULL,    
     pszStoreName))
    {
         printf("The %s store has been opened. \n", pszStoreName);
    }
    else
    {
         printf("The store was not opened.\n");
         exit(1);
    }

//-------------------------------------------------------------------
// Find the certificates in the system store.
while(pCertContext= CertEnumCertificatesInStore(
      hStoreHandle,
      pCertContext)) // on the first call to the function,
                     // this parameter is NULL
                     // on all subsequent calls,
                     // this parameter is the last pointer
                     // returned by the function
{
    
     printf("Zert. gefunden\n");
    
     CERT_INFO ci = *(pCertContext->pCertInfo);
     printf("Vers. = %d Extension = %d\n", ci.dwVersion, ci.cExtension);
     CERT_NAME_BLOB blob = ci.Subject;
     printf("cbData = %d\n", blob.cbData);
    
     char *text;
    
     text = (char*) blob.pbData;
     printf ("pbData = %s\n", text);
    
     FILETIME von, bis;
     SYSTEMTIME stUTC, stLocal;
    
     von = ci.NotBefore;
     bis = ci.NotAfter;
    
     FileTimeToSystemTime(&von, &stUTC);
    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

    // Build a string showing the date and time.
    printf("von = %02d/%02d/%d  %02d:%02d\n",
        stLocal.wDay, stLocal.wMonth, stLocal.wYear,
        stLocal.wHour, stLocal.wMinute);
        
     FileTimeToSystemTime(&bis, &stUTC);
    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

    // Build a string showing the date and time.
    printf("bis = %02d/%02d/%d  %02d:%02d\n",
        stLocal.wDay, stLocal.wMonth, stLocal.wYear,
        stLocal.wHour, stLocal.wMinute);
    
    
    //----------------------------------------------------------------
    // Do whatever is needed for a current certificate.
    // ...
} // End of while

//--------------------------------------------------------------------
//   Clean up.
if (!CertCloseStore(
         hStoreHandle,
         0))
{
    printf("Failed CertCloseStore\n");
    exit(1);
}
}




Leider verstehe ich jetzt noch nicht wie ich genau an alle Informationen des Zertifikats rankomme. Datum und Uhrzeit sieht gut aus, jedoch der Rest sieht komisch aus...

Wäre cool wenn mir da noch jemand unter die Arme greifen könnte.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: