Il y a environ un an, j'ai écrit un article Analyse des fichiers .evtx avec Python, mais en gros, c'est une application. C'est ça?
Si un avocat l'utilise ou non pour prouver les heures de travail dans un procès ... Je me demande s'il y a des moments où je veux extraire des données qui semblent fonctionner à partir du fichier EVTX (Windows XML Event Log) qui enregistre le journal système Windows. pense. (Il semble que le fichier EVTX soit au format Win7, et cela peut être différent selon la version du système d'exploitation, mais je pense que la façon de penser ne change pas tellement.) Si l'ordinateur n'est pas sorti du bureau, cela semble aller du démarrage à l'arrêt, mais si le PC est autorisé à être retiré, il n'est pas toujours clair si le démarrage du PC en vacances est destiné au travail ou à un usage privé. Mais si vous utilisez un logiciel Office, cela peut ressembler au travail. Donc, dans la continuité de l'article précédent, utilisons Python-Evtx pour extraire ces journaux d'événements à l'aide du logiciel Office.
L'idée est presque la même que celle de l'article précédent, veuillez donc vous y référer.
Ainsi, lorsque j'ai écrit un script pour lister le type de programme qui apparaît dans Data [@ Name = ProcessName]
ou Data [@ Name = NewProcessName]
, il semble que la chaîne de caractères ʻOfficesoit incluse. J'avais l'impression que le logiciel Office fonctionnerait. Donc, si vous créez un code comme celui-ci à peu près et le faites ressembler à
$ python ExtractOffice.py EventLog.evtx, il crachera un fichier appelé ʻEvents_office.tsv
.
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") #Appel direct du nom de fichier(Transpiration
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()
#Travailler avec des fichiers EVTX
with evtx.Evtx(args.evtx) as log:
counter = 0 #Pour le rapport d'étape
for record in log.records():
elm = record.lxml()
#rapport d'étape
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="" #La valeur par défaut de ProcessName""Nishitoku
npnt="" #NewProcessName (omis)
try: #Essayez car un échec peut se produire
if ("Office" in pn[0].text): #Recherche de chaîne ici
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) #Notez le nombre d'événements lorsque vous avez terminé.
f.close()
if __name__ == "__main__":
main()
Ensuite, lisez le craché ʻEvents_office.tsv` dans Excel et formatez-le correctement (→ Par exemple, Comme ceci (article séparé)), Si vous l'assemblez correctement, cela ressemblera à ça.
Le fichier EVTX est XML pour chaque événement (Record), et il semble que les éléments Data
sous // Event / EventData / ʻ ne sont pas constants selon le type de ʻEvent
.
Cependant, s'il y a soit ProcessName
ou NewProcessName
, il semble que vous puissiez d'une manière ou d'une autre savoir de quel programme le journal a été craché.
Alors, j'ai essayé de compléter l'un d'entre eux.
Étant donné que le même traitement est effectué pour ProcessName et NewProcessName, je comprends qu'il est préférable de refactoriser pour sortir en tant que fonction ...
Recommended Posts