View Full Version : visualizzatore eventi e login
allora, non so se è la sezione giusta... xò forse si xkè qualke riga di codice bisognerà scriverla...
allora io ho bisogno di sapere, attraverso il visualizzatore eventi, o qualke altro tool di sistema ke fa la stessa cosa, quanti e quali utenti hanno fatto il login su un pc.. come posso fare? grazie
La prima soluzione che mi viene in mente è scrivere un Gina (:D)...
Probabilmente ci sarà qualcosa di più semplice, ma non mi viene in mente altro...
http://www.codeproject.com/useritems/GINA_SPY.asp
Master FO
15-11-2006, 20:15
se sei su un sistema linux basta che ti logghi come root e digiti il comando "last".
và a leggere un file di log che credo si chiami /var/log/last.log
non sono su linux :(
cmq in quel link su gina non sembra esserci quello ke mi serve...potresti spiegarmi? grazie
Gina è una DLL che gestisce il login. In questo modo puoi salvarti gli username degli utenti che si loggano (praticamente viene fatto lo stesso su quell'esempio).
ok, provo a darci un'occhiata x bene, poi t faccio sapere. se intanto qualcuno conosce altri modi dica pure ;)
Visto che non ho mai usato le API del Event Logging, ho voluto provare a scrivere un semplice programmino per leggere gli eventi registrati nel Registro di protezione.
Se può essere utile, ecco il sorgente:
#define STRICT
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
#define EVLOGREC_BUFSIZE 2048
int main (int argc, char *argv[])
{
HANDLE hLog;
BYTE bBuffer[EVLOGREC_BUFSIZE];
EVENTLOGRECORD *pelr;
DWORD dwRead, dwNeed;
time_t t;
CHAR szTime[64];
WORD wIdx;
PCHAR pStr;
pelr = (EVENTLOGRECORD*) bBuffer;
hLog = OpenEventLog (NULL, "Security");
if (hLog != NULL)
{
while (ReadEventLog (hLog, EVENTLOG_SEQUENTIAL_READ | EVENTLOG_FORWARDS_READ,
0, pelr, EVLOGREC_BUFSIZE, &dwRead, &dwNeed))
{
while (dwRead > 0)
{
t = (time_t) pelr->TimeGenerated;
strcpy (szTime, ctime (&t));
if ((pStr = strchr (szTime, '\n')) != NULL)
*pStr = '\0';
/*-- Stampa data/ora --*/
printf ("%s ", szTime);
/*-- Stampa tipo evento --*/
switch (pelr->EventType)
{
case EVENTLOG_ERROR_TYPE:
printf ("Error ");
break;
case EVENTLOG_WARNING_TYPE:
printf ("Warning ");
break;
case EVENTLOG_INFORMATION_TYPE:
printf ("Information ");
break;
case EVENTLOG_AUDIT_SUCCESS:
printf ("Audit Success ");
break;
case EVENTLOG_AUDIT_FAILURE:
printf ("Audit Failure ");
break;
}
/*-- Stampa stringhe --*/
pStr = (PCHAR) pelr + pelr->StringOffset;
for (wIdx = 0; wIdx < pelr->NumStrings; wIdx++)
{
if (wIdx > 0)
printf (" ");
printf ("\"%s\"", pStr);
pStr += strlen (pStr)+1;
}
printf ("\n");
dwRead -= pelr->Length;
pelr = (EVENTLOGRECORD*) ((LPBYTE) pelr + pelr->Length);
}
pelr = (EVENTLOGRECORD*) bBuffer;
}
CloseEventLog (hLog);
}
else
printf ("Error %lu\n", GetLastError ());
return 0;
}
Nota: si potrebbero stampare anche altre informazioni. Non mi è ancora chiarissimo al 100% cosa c'è nel record. :p
appena possibile provo poi t faccio sapere! grazie mille!
c rivediamo anke qui eh! :D
l'ho provato... ma nn stampa niente! :confused: :mbe:
l'ho provato... ma nn stampa niente! :confused: :mbe:Sono raccomandazioni banali, lo so, ma ... l'hai fatto girare come "Administrator"??? Hai qualcosa nel "Registro di protezione"??
Se lo lanci non come amministratore dovrebbe indicare Error 1314 (cioè ERROR_PRIVILEGE_NOT_HELD).
non mi dava quell'errore xò nn ero admin. ora ho provato con admin e va, ma stampa milioni di informazioni...
a me interessa semplicemente sapere quanti utenti hanno effettuato l'accesso fino a quel momento... e poi magari svuotare il registro, ma questo viene dopo...
a me interessa semplicemente sapere quanti utenti hanno effettuato l'accesso fino a quel momento... e poi magari svuotare il registro, ma questo viene dopo...Beh, io ho fatto solo una stampa dei record e solo di alcune informazioni. Nel record ci sono diverse altre informazioni. C'è sicuramente da fare dei filtri per quello che vuoi fare tu ma bisognerebbe capire meglio quali sono i campi e i valori che servono.
ho scoperto ke l'id x l'evento "login" è il 528... quindi suppongo, e magari dico una cavolata, ke ogni volta ke il tuo prog vede sto numero, incrementi un contatore, ke poi viene scritto in un file... naturalmente non ne ho idea se sia fattibile oppure no :rolleyes:
qualcuno mi aiuta? grazie :)
vaka_85: avevi già la soluzione pronta nel sito che ti avevo linkato ;)
Bastava fare qualche modifica e compilare il tutto :)
Edit: aspetta ho letto che sembra non funzionare su XP
andbin aiutami tu! :)Allora diciamo questo: ho fatto una prova con il sorgente che ho postato. Gli ho fatto solo una modifica affinché stampasse anche il 'EventID'.
Ecco un esempio di cosa mi stampa:
Thu Nov 23 09:54:07 2006 681 Audit Failure "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" "dev" "WIN2000" "3221225578"
Thu Nov 23 09:54:19 2006 680 Audit Success "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0" "administrator" "WIN2000"
Quindi bisogna innanzitutto verificare che la prima stringa sia "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0", poi verificare se il EventID è 680 (login con successo) o 681 (login fallito).
Poi la seconda stringa è il nome utente e la terza è il computer.
ti ringrazio.
ma sei sicuro dell'id dell'evento? io avevo fatto delle ricerche e ho anche provato e avevo visto ke era il 528 :confused: :confused: :confused:
ti ringrazio.
ma sei sicuro dell'id dell'evento? io avevo fatto delle ricerche e ho anche provato e avevo visto ke era il 528 :confused: :confused: :confused:Eh, lo so ... ho fatto delle ricerche in rete e ho trovato che parlavano anche di questo 528 e di altri ID.
Il fatto è che non sono esperto di queste cose e non ho trovato informazioni chiare e precise. Non vorrei che gli ID variassero da una versione di Windows all'altra o in base ad altre cose che non conosco.
Sul mio PC Win2000 prof. vedo solo ID 680/681.
beh si vede ke cambia col sistema operativo, cmq questo non penso sia un problema, nel laboratorio tutti i pc hanno winxp...
quindi, supponendo ke l'id sia X, potresti postare il codice ke hai fatto così provo a modificarlo? anke se non ci capisco quasi niente di c... :muro:
beh si vede ke cambia col sistema operativo, cmq questo non penso sia un problema, nel laboratorio tutti i pc hanno winxp...
quindi, supponendo ke l'id sia X, potresti postare il codice ke hai fatto così provo a modificarlo? anke se non ci capisco quasi niente di c... :muro:Il codice è praticamente quello del post #7. Qui da me gli ho solo aggiunto una banale printf per stampare l'EventID.
Ovvio, per quello che vuoi fare tu, ci sono diverse modifiche e cose in più da fare.
non è ke in un ritaglio di tempo potresti farlo? :p :D
uReverendo
26-11-2006, 13:50
allora, non so se è la sezione giusta... xò forse si xkè qualke riga di codice bisognerà scriverla...
allora io ho bisogno di sapere, attraverso il visualizzatore eventi, o qualke altro tool di sistema ke fa la stessa cosa, quanti e quali utenti hanno fatto il login su un pc.. come posso fare? grazie
Prova questa utility "NTLast 3.0" la trovi qui (http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&subcontent=/resources/proddesc/ntlast.htm).
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.