mirror of https://github.com/MISP/misp-modules
				
				
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
import json
 | 
						|
import requests
 | 
						|
 | 
						|
misperrors = {'error': 'Error'}
 | 
						|
mispattributes = {'input': ['hostname', 'domain']}
 | 
						|
 | 
						|
# possible module-types: 'expansion', 'hover' or both
 | 
						|
moduleinfo = {'version': '1', 'author': 'Hannah Ward',
 | 
						|
              'description': 'Expand Country Codes',
 | 
						|
              'module-type': ['hover']}
 | 
						|
 | 
						|
# config fields that your code expects from the site admin
 | 
						|
moduleconfig = []
 | 
						|
 | 
						|
common_tlds = {"com": "Commercial (Worldwide)",
 | 
						|
               "org": "Organisation (Worldwide)",
 | 
						|
               "net": "Network (Worldwide)",
 | 
						|
               "int": "International (Worldwide)",
 | 
						|
               "edu": "Education (Usually USA)",
 | 
						|
               "gov": "Government (USA)"
 | 
						|
               }
 | 
						|
 | 
						|
 | 
						|
def parse_country_code(extension):
 | 
						|
    # Retrieve a json full of country info
 | 
						|
    try:
 | 
						|
        codes = requests.get("http://www.geognos.com/api/en/countries/info/all.json").json()
 | 
						|
    except Exception:
 | 
						|
        return "http://www.geognos.com/api/en/countries/info/all.json not reachable"
 | 
						|
    if not codes.get('StatusMsg') or not codes["StatusMsg"] == "OK":
 | 
						|
        return 'Not able to get the countrycode references from http://www.geognos.com/api/en/countries/info/all.json'
 | 
						|
    for country in codes['Results'].values():
 | 
						|
        if country['CountryCodes']['tld'] == extension:
 | 
						|
            return country['Name']
 | 
						|
    return "Unknown"
 | 
						|
 | 
						|
 | 
						|
def handler(q=False):
 | 
						|
    if q is False:
 | 
						|
        return False
 | 
						|
    request = json.loads(q)
 | 
						|
    domain = request["domain"] if "domain" in request else request["hostname"]
 | 
						|
 | 
						|
    # Get the extension
 | 
						|
    ext = domain.split(".")[-1]
 | 
						|
 | 
						|
    # Check if it's a common, non country one
 | 
						|
    val = common_tlds[ext] if ext in common_tlds.keys() else parse_country_code(ext)
 | 
						|
    r = {'results': [{'types': ['text'], 'values':[val]}]}
 | 
						|
    return r
 | 
						|
 | 
						|
 | 
						|
def introspection():
 | 
						|
    return mispattributes
 | 
						|
 | 
						|
 | 
						|
def version():
 | 
						|
    moduleinfo['config'] = moduleconfig
 | 
						|
    return moduleinfo
 |