Vor ungefähr einem Jahr schrieb ich einen Artikel Analysieren von .evtx-Dateien mit Python, aber grob gesagt handelt es sich um eine Anwendung. Ist es?
Ob ein Anwalt es verwendet, um die Arbeitszeit in einem Prozess nachzuweisen oder nicht ... Ich frage mich, ob es Zeiten gibt, in denen ich Daten extrahieren möchte, die anscheinend aus der EVTX-Datei (Windows XML Event Log) funktionieren, in der das Windows-Systemprotokoll aufgezeichnet wird. Überlegen. (Es scheint, dass die EVTX-Datei im Win7-Format vorliegt und je nach Betriebssystemversion unterschiedlich sein kann, aber ich denke, dass sich die Denkweise nicht so sehr ändert.) Wenn es sich um einen PC handelt, der nicht aus dem Büro genommen wird, scheint es vom Start bis zur Beendigung in Ordnung zu sein. Wenn Sie jedoch den PC herausnehmen dürfen, ist nicht immer klar, ob der PC-Start an Feiertagen für den geschäftlichen oder privaten Gebrauch bestimmt ist. Wenn Sie jedoch Office-Software verwenden, kann dies wie Arbeit sein. Verwenden Sie also den vorherigen Artikel und verwenden Sie Python-Evtx, um solche Ereignisprotokolle mithilfe der Office-Software zu extrahieren.
Die Idee ist fast die gleiche wie im vorherigen Artikel. Bitte beziehen Sie sich darauf. Wenn ich also ein Skript geschrieben habe, um aufzulisten, welche Art von Programm in "Data [@ Name = ProcessName]" oder "Data [@ Name = NewProcessName]" erscheint, scheint die Zeichenfolge "Office" enthalten zu sein. Ich hatte das Gefühl, dass die Office-Software funktionieren würde. Wenn Sie also einen Code wie diesen grob erstellen und ihn wie "$ python ExtractOffice.py EventLog.evtx" aussehen lassen, wird eine Datei mit dem Namen "Events_office.tsv" ausgespuckt.
ExtractOffice.py
import Evtx.Evtx as evtx
from lxml import etree
schema = "http://schemas.microsoft.com/win/2004/08/events/event"
def main():
f = open("events_office.tsv", "w") #Dateiname direkt getroffen(Schweiß
import argparse
parser = argparse.ArgumentParser(
description="Dump a binary EVTX file into XML.")
parser.add_argument("evtx", type=str,
help="Path to the Windows EVTX event log file")
args = parser.parse_args()
#Arbeiten mit EVTX-Dateien
with evtx.Evtx(args.evtx) as log:
counter = 0 #Für den Fortschrittsbericht
for record in log.records():
elm = record.lxml()
#Fortschrittsbericht
counter += 1
if counter % 1000 == 0:
print("Now on record:"+str(counter))
pn = elm.xpath("//event:Data[@Name='ProcessName']", namespaces={"event":schema})
npn = elm.xpath("//event:Data[@Name='NewProcessName']", namespaces={"event":schema})
pnt="" #Der Standardwert von ProcessName""Nishitoku
npnt="" #NewProcessName (weggelassen)
try: #Versuchen Sie es, da einige Fehler auftreten können
if ("Office" in pn[0].text): #String-Suche hier
pnt = pn[0].text
except:
pnt = ""
try:
if "Office" in npn[0].text:
npnt = npn[0].text
except:
npnt = ""
if ( len(pnt) or len(npnt) ):
print(
elm.xpath("//event:EventID", namespaces={"event":schema})[0].text
+"\t"+
elm.xpath("//event:TimeCreated", namespaces={"event":schema})[0].get("SystemTime")
+"\t"+pnt
+"\t"+npnt
, file=f)
print(counter) #Notieren Sie die Anzahl der Ereignisse, wenn Sie fertig sind.
f.close()
if __name__ == "__main__":
main()
Lesen Sie dann die Spucke Events_office.tsv
in Excel aus und formatieren Sie sie entsprechend (→ Zum Beispiel Gefällt mir (separater Artikel)). Wenn Sie es richtig zusammenstellen, wird es so aussehen.
Die EVTX-Datei ist XML für jedes Ereignis (Datensatz), und es scheint, dass die "Daten" -Elemente unter "// Ereignis / Ereignisdaten /" abhängig vom Typ des "Ereignisses" nicht konstant sind. Wenn es jedoch entweder "ProcessName" oder "NewProcessName" gibt, kann man anscheinend irgendwie erkennen, aus welchem Programm das Protokoll ausgespuckt wurde. Also habe ich versucht, einen von ihnen zu ergänzen. Da die gleiche Verarbeitung für ProcessName und NewProcessName ausgeführt wird, ist es meines Erachtens besser, den Refactor so zu gestalten, dass er als Funktion ausgeht ...
Recommended Posts