Необычное событие. Номера событий типа -2147481364 в Python с использованием win32evtlog из Pywin32

Я написал скрипт python(3.2) для запрета ips для определенных событий из журналов событий на сервере Windows 2008, и я пытался проверить, будет ли он правильно блокировать ips от попыток перебора SQL. К сожалению, до сих пор он не доходит до этой части кода, потому что искомый идентификатор события никогда не появляется (хотя это должно быть, как в файле журнала).

def run_script_application_log():
    eventIds = [18456] #look for these events to process for possible ip bans 18456 = failed login
    server = 'localhost' # name of the target computer to get event logs from
    logtype = 'Application' # 'Application' or 'Security' etc...
    hand = win32evtlog.OpenEventLog(server,logtype)
    ipsToBan = look_for_ips_to_ban(hand,flags,eventIds)

def look_for_ips_to_ban(hand, flag, eventIds):
    ...some code....
    events=1
    while events:
        events=win32evtlog.ReadEventLog(hand,flag,0)
        for event in events:
            the_time=event.TimeGenerated.Format()
            seconds=date2sec(the_time)
            #if seconds < begin_sec - time_in_seconds: break
            if event.EventID in eventIds:

Я вставил простую инструкцию print, чтобы увидеть, что происходит с event.EventID и числами, которые он получал, было странно, если не сказать больше. Журнал событий идет до 33090, но подавляющее большинство возвращаемых идентификаторов похожи на эти: 1073750020 1073754112 -1073741823 -2147481364

Я понятия не имею, что происходит. Он отлично работает с журналом безопасности, но журнал приложений, кажется, не идет.

Я просмотрел некоторые данные, и все они, кажется, сообщают правильно, за исключением eventID.

Например, эта запись в журнале является правильной, за исключением того, что она показывает идентификатор события как 1073742726 вместо 18456.

<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="MSSQLSERVER" /> 
<EventID Qualifiers="49152">18456</EventID> 
<Level>0</Level> 
<Task>4</Task> 
<Keywords>0x90000000000000</Keywords> 
<TimeCreated SystemTime="2012-12-08T18:01:32.000000000Z" /> 
<EventRecordID>4532</EventRecordID> 
<Channel>Application</Channel> 
<Computer>windowsmachine</Computer> 
<Security /> 
</System>
<EventData>
<Data>username</Data> 
<Data>Reason: Password did not match that for the login provided.</Data> 
<Data>[CLIENT: <local machine>]</Data
<Binary>184800000E0000000A000000570049004E004D00430041005000460058000000070000006D00610073007400650072000000</Binary> 
</EventData>
</Event>

1 ответ

Решение

Если вы проверяете это двоично, функция работает нормально, она просто добавляет 1 бит (или больше, не проверял), что вам не нужно. попробуйте поставить ответ через "И" следующим образом:

answer = event.EventID & 0x1FFFFFFF

Другие вопросы по тегам