2018-05-29 21:54:22 +02:00
import json
import requests
misperrors = { ' error ' : ' Error ' }
2018-11-19 11:32:36 +01:00
mispattributes = { ' input ' : [ ' md5 ' , ' sha1 ' , ' sha256 ' ] , ' output ' : [ ' text ' ] }
moduleinfo = { ' version ' : ' 0.2 ' , ' author ' : ' Alexandre Dulaunoy ' , ' description ' : ' An expansion module to check hashes against hashdd.com including NSLR dataset. ' , ' module-type ' : [ ' hover ' ] }
2018-05-29 21:54:22 +02:00
moduleconfig = [ ]
hashddapi_url = ' https://api.hashdd.com/ '
def handler ( q = False ) :
if q is False :
return False
2018-11-19 11:32:36 +01:00
v = None
2018-05-29 21:54:22 +02:00
request = json . loads ( q )
2018-11-19 11:32:36 +01:00
for input_type in mispattributes [ ' input ' ] :
if request . get ( input_type ) :
v = request [ input_type ] . upper ( )
break
if v is None :
misperrors [ ' error ' ] = ' Hash value is missing. '
2018-05-29 21:54:22 +02:00
return misperrors
2018-12-11 15:29:09 +01:00
r = requests . post ( hashddapi_url , data = { ' hash ' : v } )
2018-05-29 21:54:22 +02:00
if r . status_code == 200 :
state = json . loads ( r . text )
if state :
if state . get ( v ) :
summary = state [ v ] [ ' known_level ' ]
else :
summary = ' Unknown hash '
else :
misperrors [ ' error ' ] = ' {} API not accessible ' . format ( hashddapi_url )
return misperrors [ ' error ' ]
r = { ' results ' : [ { ' types ' : mispattributes [ ' output ' ] , ' values ' : summary } ] }
return r
def introspection ( ) :
return mispattributes
def version ( ) :
moduleinfo [ ' config ' ] = moduleconfig
return moduleinfo