J'ai le fichier csv suivant qui a trois champs Titre de vulnérabilité, Vulnérabilité Niveau de gravité, Asset IP Address qui montre le nom des vulnérabilités, le niveau de vulnérabilité et l'adresse IP qui présente cette vulnérabilité. Je suis en train d'imprimer un rapport qui répertorierait vulnérabilité dans une colonne gravité à côté de et la dernière colonne de l'adresse IP ayant cette vulnérabilité.Analyser CSV en utilisant Python
Vulnerability Title Vulnerability Severity Level Asset IP Address
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.103.64.10
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.103.64.10
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.103.65.10
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.103.65.164
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.103.64.10
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.10.30.81
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.10.30.81
TLS/SSL Server Supports RC4 Cipher Algorithms (CVE-2013-2566) 4 10.10.50.82
TLS/SSL Server Supports Weak Cipher Algorithms 6 10.103.65.164
Weak Cryptographic Key 3 10.103.64.10
Unencrypted Telnet Service Available 4 10.10.30.81
Unencrypted Telnet Service Available 4 10.10.50.82
TLS/SSL Server Supports Anonymous Cipher Suites with no Key Authentication 6 10.103.65.164
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.103.64.10
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.103.65.10
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.103.65.100
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.103.65.164
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.103.65.164
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.103.64.10
TLS/SSL Server Supports The Use of Static Key Ciphers 3 10.10.30.81
et je voudrais recréer un fichier csv qui utilise l'onglet Titre de la vulnérabilité comme la clé et crée un second onglet appelé vulnérabilité Niveau de gravité et dernier onglet contiendra toutes les adresses IP qui a les vulnérabilités
import csv
from pprint import pprint
from collections import defaultdict
import glob
x= glob.glob("/root/*.csv")
d = defaultdict()
n = defaultdict()
for items in x:
with open(items, 'rb') as f:
reader = csv.DictReader(f, delimiter=',')
for row in reader:
a = row["Vulnerability Title"]
b = row["Vulnerability Severity Level"], row["Asset IP Address"]
c = row["Asset IP Address"]
# d = row["Vulnerability Proof"]
d.setdefault(a, []).append(b)
f.close()
pprint(d)
with open('results/ipaddress.csv', 'wb') as csv_file:
writer = csv.writer(csv_file)
for key, value in d.items():
for x,y in value:
n.setdefault(y, []).append(x)
# print x
writer.writerow([key,n])
with open('results/ipaddress2.csv', 'wb') as csv2_file:
writer = csv.writer(csv2_file)
for key, value in d.items():
n.setdefault(value, []).append(key)
writer.writerow([key,n])
Depuis que je ne peux pas expliquer très bien. Je vais essayer de simplifier
permet de dire que je l'csv suivante
Car model owner
Honda Blue James
Toyota Blue Tom
Chevy Green James
Chevy Green Tom
Je suis en train de créer cette csv comme suit:
Car model owner
Honda Blue James
Toyota Blue Tom
Chevy Green James,Tom
les deux solutions sont correctes. voici mon script final ainsi
import csv
import pandas as pd
df = pd.read_csv('test.csv', names=['Vulnerability Title', 'Vulnerability Severity Level','Asset IP Address'])
#print df
grouped = df.groupby(['Vulnerability Title','Vulnerability Severity Level'])
groups = grouped.groups
#print groups
new_data = [k + (v['Asset IP Address'].tolist(),) for k, v in grouped]
new_df = pd.DataFrame(new_data, columns=['Vulnerability Title' ,'Vulnerability Severity Level', 'Asset IP Address'])
print new_df
new_df.to_csv('final.csv')
merci
Pourriez-vous donner un exemple, la structure du csv final que vous essayez de créer? Ce serait vraiment utile –
merci picmate. J'ai édité les questions avec plus de détails? laissez-moi savoir si je devrais ajouter plus d'informations. –
Vous êtes les bienvenus, la dernière édition en particulier est super. Merci. –