tpotce/collector/CollectorAPI/reports.py
nu11secur1ty cf05cd6abd Upload-collector
Upload-collector
2024-06-05 10:52:53 +03:00

50 lines
1.9 KiB
Python

from datetime import datetime, timedelta, date
from time import gmtime, strftime, mktime
import json
import pytz
from django.db import connection
import CollectorAPI.models
import CollectorAPI.models as CollectorDB
from django.db.models import Count
def gen_report(from_date, to_date, affected_honeys, countries, with_data=0):
from_date = datetime.combine(from_date, datetime.min.time())
from_date = from_date.replace(minute=0, hour=0, second=0, microsecond= 0)
date_from = pytz.utc.localize(from_date)
to_date = datetime.combine(to_date, datetime.min.time())
to_date = to_date.replace(hour=23, minute=59, second=59, microsecond=99999)
date_to = pytz.utc.localize(to_date)
attack = CollectorAPI.models.HoneypotInfo.objects.values('src_ip').annotate(icount=Count('src_ip')).\
order_by('icount').filter(event_timestamp__gte=date_from, event_timestamp__lte=date_to,
server_id_id__in=affected_honeys)
if 'all' not in countries:
attack = attack.filter(countryISO__in=countries)
attackers = []
for attacker in attack:
print(attacker['src_ip'])
if with_data == 1:
attackers.append([attacker['src_ip'], attacker['icount']])
else:
attackers.append(attacker['src_ip'])
report = CollectorAPI.models.HoneypotReportsStorage.objects.filter(from_date=date_from, to_date=date_to).exists()
if report:
report = CollectorAPI.models.HoneypotReportsStorage.objects.filter(from_date=date_from, to_date=date_to)
report = report[0]
else:
#let's save to db
report = CollectorAPI.models.HoneypotReportsStorage()
report.from_date = date_from
report.to_date = date_to
report.affected_honeys = json.dumps(affected_honeys)
report.countries = json.dumps(countries)
report.data = json.dumps(attackers)
report.save()
return report.data