#!/usr/bin/env python # CSV HEADER DATA FROM DRILLDOWN (REPORT FROM RESILIENT) # _time,Company,dest,IP,Country,request,User Agent,Response Code,Response Description,http_referer # Tested: # Python 3.7.5 import sys import csv import os import urllib3 import certifi count = len(sys.argv) parameters = 4 if count != parameters: print("""\ This script will extract the REQUEST field of Resilient's Drilldown when the response code equals the second parameter. Usage: drilldown2scan.py file_to_extract_requests_from http_response_code URL_to_analyze """) sys.exit(0) file_to_read = sys.argv[1] response_code = sys.argv[2] if os.path.exists("requests.csv"): os.remove("requests.csv") # INITIAL STRUCT _time,Company,dest,IP,Country,request,User Agent,Response Code,Response Description,http_referer with open(file_to_read) as csvfile: reader = csv.DictReader(csvfile) file = open('requests.csv', 'w') file.write('http_method,uri,protocol,http_referer'+'\n') for row in reader: string = (row['request']+','+row['http_referer']+'\n') if row['Response Code'] == str(response_code): file.write(string.replace(" ", ",")) user_agent = 'CONTROLLED TEST' host = '127.0.0.1' site_to_scan = sys.argv[3] # CSV sctruct http_method,uri,protocol,http_referer with open('requests.csv', 'r') as data_to_send: http = urllib3.PoolManager( cert_reqs='CERT_REQUIRED', ca_certs=certifi.where() ) reader = csv.DictReader(data_to_send) for row in reader: method = (row['http_method']) uri = (site_to_scan+row['uri']) http_referer = (row['http_referer']) my_request = http.request( method, uri, headers={ 'User-Agent': user_agent, 'Host': host, 'Referer': http_referer } ) # print(my_request.data)