All pastes #969019 Raw Edit

Stuff

public python v1 · immutable
·published 2008-04-03 13:11 UTC
rendered paste body
import win32evtlogimport win32evtlogutilimport win32securityimport win32conimport winerrorimport timeimport tracebackimport sysimport reimport stringfrom RecordFetcher import RecordFetcher, Recordclass RecordFetcherWindows32(RecordFetcher):    def date2sec(self, evt_date):        '''        This function converts dates with format        '12/23/99 15:54:09' to seconds since 1970.        '''        regexp=re.compile('(.*)\\s(.*)') #store result in site        reg_result=regexp.search(evt_date)        date=reg_result.group(1)        the_time=reg_result.group(2)        (mon,day,yr)=map(lambda x: string.atoi(x),string.split(date,'/'))        (hr,min,sec)=map(lambda x: string.atoi(x),string.split(the_time,':'))        tup=[yr,mon,day,hr,min,sec,0,0,0]            sec=time.mktime(tup)            return sec    def fetchRecords(self, fromWhen = 28800):        print "RecordFetcherWindows32::fetchRecords"        begin_sec=time.time()        begin_time=time.strftime('%H:%M:%S  ',time.localtime(begin_sec))        flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ                evt_dict={                  win32con.EVENTLOG_AUDIT_FAILURE:'EVENTLOG_AUDIT_FAILURE',                  win32con.EVENTLOG_AUDIT_SUCCESS:'EVENTLOG_AUDIT_SUCCESS',                  win32con.EVENTLOG_INFORMATION_TYPE:'EVENTLOG_INFORMATION_TYPE',                  win32con.EVENTLOG_WARNING_TYPE:'EVENTLOG_WARNING_TYPE',                  win32con.EVENTLOG_ERROR_TYPE:'EVENTLOG_ERROR_TYPE'}        logType = 'Application'        hand = win32evtlog.OpenEventLog('', logType)        records = []        try:            events=1            while events:                events=win32evtlog.ReadEventLog(hand,flags,0)                for ev_obj in events:                    #check if the event is recent enough                    #only want data from last 8hrs                    the_time=ev_obj.TimeGenerated.Format()                    seconds=self.date2sec(the_time)                    if seconds < begin_sec-fromWhen:                         break                                        #data is recent enough, so print it out                    computer=str(ev_obj.ComputerName)                    cat=str(ev_obj.EventCategory)                    src=str(ev_obj.SourceName)                    if src == 'LifeBeat':                        record=str(ev_obj.RecordNumber)                        evt_id=str(winerror.HRESULT_CODE(ev_obj.EventID))                        evt_type=str(evt_dict[ev_obj.EventType])                        msg = str(win32evtlogutil.SafeFormatMessage(ev_obj, logType))                        rec = Record(the_time,computer,src,cat,record,evt_id,evt_type,msg)                        records.append(rec)                                    if seconds < begin_sec-60: break #get out of while loop as well            win32evtlog.CloseEventLog(hand)        except:            print traceback.print_exc(sys.exc_info())        return records