Jun-21-2020, 04:50 PM
I have the following Python Script. This is to fetch data from a JSON file.
This JSON file is fetched from Sentinel using API Calls (URL) and APID-using postman.
The JSON file I get has much more data than I needed. I want to fetch a few headers of JSON data and the DATA under those headers.
Next, I want to map them to different set of headers (Mapping ) and fetch the new file as a CSV file.
Here is the script. But it gives errors.
If API call is the problem, Its alright to have a script to fetch and map data from JSON to CSV also is fine.
Please help.
Thank you
This JSON file is fetched from Sentinel using API Calls (URL) and APID-using postman.
The JSON file I get has much more data than I needed. I want to fetch a few headers of JSON data and the DATA under those headers.
Next, I want to map them to different set of headers (Mapping ) and fetch the new file as a CSV file.
Here is the script. But it gives errors.
import requests import json import csv csv_columns = ['Application ID', 'Vulnerability ID', 'Vulnerability Name', 'Severity', 'Category', 'Status', 'Date Found', 'Tester', 'Description'] with open('C:\Users\jthomas\Documents/H1_findings.csv', 'w') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=csv_columns) writer.writeheader() headers = { 'Accept': 'application/json' } for i in range(1, 15): r = requests.get( 'https://sentinel.whitehatsec.com/api/vuln?query_status=open%2C%20closed%2C%20accepted&query_asset_status=active&display_vulnerability=1&display_description=1&display_solution=custom&display_default_solution=1&display_cvss=1&display_risk=1&display_first_opened=1&display_custom_risk=1&display_custom_policy=0&display_text=0&display_attack_vectors=open%2C%20closed%2C%20accepted&display_attack_vectors_limit=1&display_attack_vector_notes=1&display_body=0&display_abbr=1&display_headers=0&display_param=0&display_has_notes=0&display_stats=0&display_errors=0&page%3Aorder_by=id&format=xml', auth=('APID', 'aCuSCxtedT89vwrvNW24nXSprOSCR2vEDRs8HVXNrrp79NveTl7jxh8FFUZZ8zlciLRF8Vgv1YSsELa%2B60irOR9AdrX35rCRBO3sDqWDVTmGgJsRuKEeYim1UFWYwlKM'), params={''}, headers = headers ) print("page number: ++++++++++++++++++++", i) json_parsed = json.loads(r.text) if len(json_parsed['data']) < 1: break for finding in json_parsed['data']: vulnerability_name = finding['attributes']['Vulnerability Name'] #Description Application_ID= finding['attributes']['vulnerability/@site'] Vulnerability_ID= finding['attributes']['vulnerability/@id'] Category = finding['attributes']['vulnerability/@class'] Severity = finding['attributes']['vulnerability/@Severity'] Status = finding['attributes']['vulnerability/@status'] date_found = finding['attributes']['vulnerability/@opened'] tester = finding['relationships']['reporter']['data']['attributes'][Jomi] description = finding['attributes']['vulnerability/description'] #write rows to CSV #writer.writerow({'Application ID' : application_id, 'Vulnerability ID' : vulnerability_id, 'Vulnerability Name' : vulnerability_name, 'Category' : category, 'Severity' : severity, 'Status' : status, 'Date Found' : date_found, 'Tester' : tester, 'Description' : description }) #removed description as it was breaking CSV writer.writerow({'Application ID' : application_id, 'Vulnerability ID' : vulnerability_id, 'Vulnerability Name' : vulnerability_name, 'Category' : category, 'Severity' : severity, 'Status' : status, 'Date Found' : date_found, 'Tester' : tester })Can somebody help me to correct this and get the final CSV file with data in it.
If API call is the problem, Its alright to have a script to fetch and map data from JSON to CSV also is fine.
Please help.
Thank you