mirror of https://github.com/CIRCL/AIL-framework
87 lines
3.1 KiB
Python
Executable File
87 lines
3.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
# -*-coding:UTF-8 -*
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
import time
|
|
import redis
|
|
import datetime
|
|
|
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'packages/'))
|
|
import Item
|
|
import Tag
|
|
from Cryptocurrency import cryptocurrency
|
|
from Pgp import pgp
|
|
|
|
sys.path.append(os.path.join(os.environ['AIL_BIN'], 'lib/'))
|
|
import ConfigLoader
|
|
import Decoded
|
|
import Domain
|
|
|
|
def update_update_stats():
|
|
nb_updated = int(r_serv_db.get('update:nb_elem_converted'))
|
|
progress = int((nb_updated * 100) / nb_elem_to_update)
|
|
print('{}/{} updated {}%'.format(nb_updated, nb_elem_to_update, progress))
|
|
r_serv_db.set('ail:current_background_script_stat', progress)
|
|
|
|
def update_domain_by_item(domain_obj, item_id):
|
|
domain_name = domain_obj.get_domain_name()
|
|
# update domain tags
|
|
for tag in Tag.get_obj_tag(item_id):
|
|
if tag != 'infoleak:submission="crawler"' and tag != 'infoleak:submission="manual"':
|
|
Tag.add_tag("domain", tag, domain_name, obj_date=Item.get_item_date(item_id))
|
|
|
|
# update domain correlation
|
|
item_correlation = Item.get_item_all_correlation(item_id)
|
|
|
|
for correlation_name in item_correlation:
|
|
for correlation_type in item_correlation[correlation_name]:
|
|
if correlation_name in ('pgp', 'cryptocurrency'):
|
|
for correl_value in item_correlation[correlation_name][correlation_type]:
|
|
if correlation_name=='pgp':
|
|
pgp.save_domain_correlation(domain_name, correlation_type, correl_value)
|
|
if correlation_name=='cryptocurrency':
|
|
cryptocurrency.save_domain_correlation(domain_name, correlation_type, correl_value)
|
|
if correlation_name=='decoded':
|
|
for decoded_item in item_correlation['decoded']:
|
|
Decoded.save_domain_decoded(domain_name, decoded_item)
|
|
|
|
if __name__ == '__main__':
|
|
|
|
start_deb = time.time()
|
|
|
|
config_loader = ConfigLoader.ConfigLoader()
|
|
r_serv_db = config_loader.get_redis_conn("ARDB_DB")
|
|
r_serv_onion = config_loader.get_redis_conn("ARDB_Onion")
|
|
config_loader = None
|
|
|
|
r_serv.set('ail:current_background_script', 'domain update')
|
|
|
|
nb_elem_to_update = r_serv_db.get('update:nb_elem_to_convert')
|
|
if not nb_elem_to_update:
|
|
nb_elem_to_update = 0
|
|
else:
|
|
nb_elem_to_update = int(nb_elem_to_update)
|
|
|
|
while True:
|
|
domain = r_serv_onion.spop('domain_update_v2.4')
|
|
if domain is not None:
|
|
print(domain)
|
|
domain = Domain.Domain(domain)
|
|
for domain_history in domain.get_domain_history():
|
|
|
|
domain_item = domain.get_domain_items_crawled(epoch=domain_history[1]) # item_tag
|
|
if "items" in domain_item:
|
|
for item_dict in domain_item['items']:
|
|
update_domain_by_item(domain, item_dict['id'])
|
|
|
|
r_serv_db.incr('update:nb_elem_converted')
|
|
update_update_stats()
|
|
|
|
else:
|
|
r_serv.delete('update:nb_elem_to_convert')
|
|
r_serv.delete('update:nb_elem_converted')
|
|
r_serv_db.set('ail:current_background_script_stat', 100)
|
|
sys.exit(0)
|