Python處理Windows事件日誌(json)

2021-09-08 18:19:52 字數 1570 閱讀 5190

通過nxlog將windows事件日誌儲存為json格式檔案,然後在python中使用json.loads()進行處理。

nxlog在將windows事件日誌儲存為json格式檔案,檔案中帶入了bom編碼格式,所以需要使用decode("utf-8-sig")先對源資料進行處理,否則json.loads()會提示 "no json object could be decoded" 錯誤

檔案中每一條事件日誌包含有中文、\r\n\t字元,所以在通過json.loads()處理時需要注意轉換:

import

struct,os,json

file='

e:\\logtest\\sec_pc-l_20160518153838.json

'with open(file,'rb

') as fo:

for f in

fo: fj = json.loads(f.decode("

utf-8-sig

"),strict=false)

print fj['

message

'].encode('u8'

)

#print fj['message'].encode('gbk')

json.loads(f.decode("utf-8-sig"),strict=false,encoding='u8')

utf-8和utf-8-sig區別:

utf-8以位元組為編碼單元,它的位元組順序在所有系統中都是一様的,沒有位元組序的問題,也因此它實際上並不需要bom(「byteorder mark」)。但是utf-8 with bom即utf-8-sig需要提供bom。

sec_pc-l_20160518153838.json檔案內容如下:

","version":0,"task":12545,"opcodevalue":0,"recordnumber":1053242,"processid":776,"threadid":20412,"channel":"security","message":"已登出帳戶。\r\n\r\n使用者:\r\n\t安全 id:\t\ts-1-5-21-3510791965-1333398612-533843580-1003\r\n\t帳戶名:\t\ttaskuser\r\n\t帳戶域:\t\tpc-l\r\n\t登入 id:\t\t0x2305c35\r\n\r\n登入型別:\t\t\t4\r\n\r\n在登入會話被破壞時生成此事件。可以使用登入 id 值將它和乙個登入事件準確關聯起來。在同一臺計算機上重新啟動的區間中,登入 id 是唯一的。","category":"登出","opcode":"資訊","targetusersid":"s-1-5-21-3510791965-1333398612-533843580-1003","targetusername":"taskuser","targetdomainname":"pc-l","targetlogonid":"0x2305c35","logontype":"4","eventreceivedtime":"2016-05-18 15:38:35","sourcemodulename":"secin","sourcemoduletype":"im_msvistalog"}

python處理Windows平台上路徑有空格

最近在採集windows上中介軟體的時候,遇到了檔案路徑有空格的問題。例如 aapche的安裝路徑為d program files apache software foundation apache2.2。採集apache要讀取配置檔案d program files apache software ...

windows問題處理

以前遇到問題解決沒有總結下,今後要養成好習慣,學習過程中遇到問題要常總結,分享,後續不斷更新中。1.dos命令視窗中無法使用ls命令查目錄下檔案清單 在windows系統安裝目錄下 我的系統安裝在c盤,所以目錄是c windows 建立乙個檔案,命名為ls.bat 用記事本開啟新增兩行語句 echo...

Windows訊息處理

這裡簡述一下關於window訊息處理,主要在實際應用中 在乙個windows程式中,乙個程式的的訊息是通過乙個大迴圈來實現接收處理的 這個可以檢視win32程式的編寫,具體可以詳細查詢相關資料 在windows程式設計中,尤其是mfc程式中,關於視窗訊息是非常重要的 視窗過程函式 接收處理視窗訊息的...