xrayスキャナスキャン結果整理

5627 ワード

github :
xrayスキャナで生成されたjsonファイルを処理し、csvとして保存し、初歩的な誤報フィルタリングを行う
#!/usr/bin/python
# -*- coding: utf-8 -*-


"""
@version: 0.1
@author: thatqier
@site: 1
@file: xray.py
@time: 2019/8/15 11:54 PM
"""

import json
import time
import csv

def zhuanhuan(json_file,save_file):
    wb = 0
    dqr = 0
    csvfile = open(save_file, "w+")
    writer = csv.writer(csvfile)
    writer.writerow(('create_time','expected_value','filename','header_name','header_value','host','param','payload','plugin','port','request','request1','request2','response','response1','response2','target','title','type','url','vuln_class','  '))

    with open(json_file,'r') as load_f:
        load_dict = json.load(load_f)
        for i in range(0,len(load_dict)):
            mate = ''
            try:
                #         ,         
                create_time = time_zh(load_dict[i]['create_time'])
            except:
                create_time = ''
            try:
                expected_value = load_dict[i]['detail']['expected_value']
            except:
                expected_value = ''
            try:
                header_name = load_dict[i]['detail']['header_name']
            except:
                header_name = ''
            try:
                header_value = load_dict[i]['detail']['header_value']
            except:
                header_value = ''
            try:
                filename = load_dict[i]['detail']['filename']
            except:
                filename = ''
            try:
                host = load_dict[i]['detail']['host']
            except:
                host = ''
            try:
                param = load_dict[i]['detail']['param']
            except:
                param =''
            try:
                payload = load_dict[i]['detail']['payload']
            except:
                payload =''
            try:
                port = load_dict[i]['detail']['port']
            except:
                port = ''
            try:
                request = load_dict[i]['detail']['request']
            except:
                request = ''
            try:
                request1 = load_dict[i]['detail']['request1']
            except:
                request1 = ''
            try:
                request2 = load_dict[i]['detail']['request2']
            except:
                request2 = ''
            try:
                response = load_dict[i]['detail']['response']
                mate = wubao_pa(response,mate)
            except:
                response = ''
            try:
                response1= load_dict[i]['detail']['response1']
                mate = wubao_pa(response1,mate)
            except:
                response1 = ''
            try:
                response2= load_dict[i]['detail']['response2']
                mate =wubao_pa(response2,mate)
            except:
                response2 = ''
            try:
                title = load_dict[i]['detail']['title']
                mate = wubao_pa(title,mate)
            except:
                title = ''
            try:
                type = load_dict[i]['detail']['type']
            except:
                type = ''
            try:
                url = load_dict[i]['detail']['url']
            except:
                url = ''
            try:
                plugin = load_dict[i]['plugin']
            except:
                plugin = ''
            try:
                target = load_dict[i]['target']['url']
            except:
                target = ''
            try:
                vuln_class = load_dict[i]['vuln_class']
            except:
                vuln_class = ''
            if(mate ==''):
                mate = "   "
                dqr = dqr + 1
            else:
                wb = wb +1
            writer.writerow((create_time,expected_value,filename,header_name,header_value,host,param,payload,plugin,port,request,request1,request2,response,response1,response2,target,title,type,url,vuln_class,mate))
            #print(create_time,expected_value,header_name,header_value,host,param,payload,port,request,plugin)
        print("      " + str(len(load_dict)) + "   ,       :"  + str(dqr) + " ,    :"+ str(wb) + ",   " )
    csvfile.close()

def wubao_pa(word,mate):
    #       
    black_list = ['waf','WAF','   ','  ','  ','  ','  ','  ']
    for list in black_list:
        if(list in word):
            mate = mate + list
    return mate

def time_zh(timeNum):
    timeStamp = float(timeNum / 1000)
    timeArray = time.localtime(timeStamp)
    otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    return otherStyleTime

if __name__ == '__main__':
    #result_qq.json      
    #1.csv       
    zhuanhuan("result_qq.json","1.csv")