#kyc #OSINT #_2022 Interpol red and yellow notices are quite helpful for KYC and OSINT efforts, particularly in the military. Link: Script: ```py # migrate_interpol_notices.py from bs4 import BeautifulSoup import requests from bs4.element import Comment import sqlite3 import pandas as pd import requests import os import json import time def create_interpol_db(): # ------------------------------------ # # Delete the DB if it exists # ------------------------------------ # if os.path.exists("db_interpol.db"): os.remove("db_interpol.db") # ------------------------------------ # # Make the db # ------------------------------------ # db = sqlite3.connect('db_interpol.db') cursor = db.cursor() cursor.close() db.close() # ------------------------------------ # # Make the dataframe # ------------------------------------ # # make the list of all character combos for the url list_0 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] list_1 = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] char_list = [] for char_0 in list_0: for char_1 in list_1: set = char_0+char_1 char_list.append(set) # make the red notice dataframe from the url for char_set in char_list: url = f'https://ws-public.interpol.int/notices/v1/red?forename={char_set}&resultPerPage=160&page=1' response = requests.get(url) response_json = response.json() df = pd.DataFrame(response_json['_embedded']['notices']) df = df.astype(str) # ------------------------------------ # # Insert data to db # ------------------------------------ # conn = sqlite3.connect('db_interpol.db', check_same_thread=False) df.to_sql(name='interpol', con=conn, if_exists='append', index=False) print(f'red notice: {char_set}') # make the yellow notice dataframe from the url for char_set in char_list: url = f'https://ws-public.interpol.int/notices/v1/yellow?forename={char_set}&resultPerPage=160&page=1' response = requests.get(url) response_json = response.json() df = pd.DataFrame(response_json['_embedded']['notices']) df = df.astype(str) # ------------------------------------ # # Insert data to db # ------------------------------------ # conn = sqlite3.connect('db_interpol.db', check_same_thread=False) df.to_sql(name='interpol', con=conn, if_exists='append', index=False) print(f'yellow notice: {char_set}') # ------------------------------------ # # Make the virtual table # ------------------------------------ # conn.execute(''' CREATE VIRTUAL TABLE v_interpol USING FTS5 ( forename, name, date_of_birth --nationalities ) ; ''' ) conn.execute(''' INSERT INTO v_interpol ( forename, name, date_of_birth --nationalities ) SELECT DISTINCT forename, name, date_of_birth --nationalities FROM interpol ; ''' ) conn.commit() conn.execute('''DROP TABLE interpol;''') conn.execute('''VACUUM;''') # ------------------------------------ # # Close the database # ------------------------------------ # conn.close() # ------------------------------------ # # print statement # ------------------------------------ # print('--------------------------------------------') print('--------------------------------------------') print(' Interpol Database Build Complete ') print('--------------------------------------------') print('--------------------------------------------') # create_interpol_db() ```