SuperQWE ha scritto:
Alla riga 1 hai: import subprocess
Popen e PIPE li richiami come subprocess.XXX
datetime te lo segna inutilizzato perché c'è un errore di battitura dat-a-time --> data = datatime.fromtimestamp(float(packet.frame_info.time_epoch))
Sulla causa dell'errore dovresti indagare sull'eccezione sollevata.
In genere ti sconsiglio di utilizzare except senza indicare quali eccezioni debba gestire.
Ho fatto le modifiche che mi dicevi, sono un ignorante quindi può essere sicuramente mi sbaglierò, ho provato a mettere qualche print per capire dove fosse il problema.
Mi fai qualche esempio su come gestire meglio errori su questo programma così poi mi esercito da solo? Mi pass qualche link per capirle meglio?
Credo che all'inizio del primo try fallisca il for come se la variabile packet non si trovasse in nessun cap:
file_name_pcap = '/home/dario/Scrivania/retiprova1/' + n + '/' + n + str(x) + '/traffic.pcap'
cap = pyshark.FileCapture(file_name_pcap, display_filter='dns')
dati = []
print("PROVA")
try:
for packet in cap:
print('###Avvio analisi pacchetto')
try:
data = datetime.fromtimestamp(float(packet.frame_info.time_epoch))
print("OKDATA")
except:
data = ''
print("FAILDATA")
Fino a prova stampa ma è strano ho provato a vedere se l'indirzzo che insersco nelle variabili file fosse giusta e lo è ad esempio ho messo le proprieta in un file generico .pcap e uno .tie:
/home/dario/Scrivania/retiprova1/renato/renato1/traffic.pcap
/home/dario/Scrivania/retiprova1/renato/renato1/classrenato1.tie
Non mi riconosce la libreria pyshark? E quindi non mi inserisce niente in cap? Oppure sono ciuccio e non ho capito niente?
Ti metto sotto tutto il programma e metto il link di foto degli errori che mi segnala pycharm:
import subprocess
import pyshark
import xlwt
from datetime import datetime
ip_tie = []
campi = ['Data', ' Protocol', 'DNS response address', 'DNS query name', 'SSL',
'IP Source', 'IP Destination', 'IP Proto', 'TCP Source Port',
'TCP Destination Port', 'TCP Source Port', 'Organisation', 'Reverse Host']
number = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
name = ['renato']
workbook = xlwt.Workbook()
for n in name:
for x in number:
print('#### ANALISI FILE ' + n + str(x))
r = 1
sheet = workbook.add_sheet("Pacchetto" + n + str(x))
style = xlwt.easyxf('font: bold 1')
for c in range(0, len(campi) - 1):
sheet.write(0, c, campi[c], style)
sheet.col(c).width = 256 * 40
file_name_tie = '/home/dario/Scrivania/retiprova1/' + n + '/' + n + str(x) + '/class' + n + str(x) + '.tie'
file = open(file_name_tie, "r")
righe = file.readlines()
print('Inizio lettura .tie')
for i in range(11, len(righe) - 1):
riga = righe[i]
elem = riga.split('\t')
ip_dest = elem[2]
ip_tie.append(ip_dest)
print('Fine lettura .tie')
file_name_pcap = '/home/dario/Scrivania/retiprova1/' + n + '/' + n + str(x) + '/traffic.pcap'
cap = pyshark.FileCapture(file_name_pcap, display_filter='dns')
dati = []
print("PROVA")
try:
for packet in cap:
print('###Avvio analisi pacchetto')
try:
data = datetime.fromtimestamp(float(packet.frame_info.time_epoch))
print("OKDATA")
except:
data = ''
print("FAILDATA")
try:
protocol = packet.frame_info.protocols
except:
protocol = ''
try:
dns_addr = packet.dns.a
except:
dns_addr = ''
try:
dns_name = packet.dns.qry_name
except:
dns_name = ''
try:
ssl = packet.ssl.handshake_extensions_
except:
ssl = ''
try:
ip_src = packet.ip.dst
except:
ip_src = ''
try:
ip_dst = packet.ip.dst
except:
ip_dst = ''
try:
ip_proto = packet.ip.proto
except:
ip_proto = ''
try:
src_port = packet[packet.trasport_layer]
except:
src_port = ''
try:
dst_port = packet[packet.trasport_layer]
except:
dst_port = ''
tot = [data, protocol, dns_addr, dns_name, ssl, ip_src, ip_dst, ip_proto, src_port, dst_port]
for ip in ip_tie:
if ip == dns_addr:
print('IP CORRISPONDONO: Avvio whois')
dati_agg_whois = ''
dati_agg_host = ''
proc = subprocess.Popen(['whois', ip], stdout=subprocess.PIPE)
output = proc.communicate(ip)[0]
o = output.split('\n')
for i in o:
p = i.split(':')
for m in p:
dati.append(m.lstrip().lower())
for i in 'org-name', 'orgname', 'person', 'netname':
try:
ind = dati.index(i)
dati_agg_whois = dati_agg_whois + ' ' + dati[ind + 1]
except:
pass
print('Avvio analisi host')
proc = subprocess.Popen(['host', ip], stdout=subprocess.PIPE)
output = proc.communicate(ip)[0]
o = output.split(' ')
dati_agg_host = o[4].replace('\n', '')
tot.append(dati_agg_whois)
tot.append(dati_agg_host)
break
print(tot)
for c in range(0, len(tot) - 1):
dato = str(tot[c])
sheet.write(r, c, dato)
r = r + 1
print('Fine analisi pacchetto #')
except:
print('###ERRORE')
workbook.save('Analisi.gt.tie.xlsx')
/home/dario/Scrivania/retiprova1/provaprogetto/venv/bin/python /home/dario/Scrivania/retiprova1/provaprogetto/prova.py
#### ANALISI FILE renato1
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato2
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato3
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato4
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato5
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato6
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato7
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato8
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato9
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato10
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato11
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
#### ANALISI FILE renato12
Inizio lettura .tie
Fine lettura .tie
PROVA
###ERRORE
Process finished with exit code 0
Non sono molto esperto sai dirmi che cosa vogliano dire questi messaggi?
https://imgur.com/EoxFl0
https://imgur.com/9yOP2r