-
-
[分享]使用Virustatol API提交样本获取检测结果
-
发表于:
2016-3-23 10:48
4945
-
[分享]使用Virustatol API提交样本获取检测结果
在样本检测和分析的过程中,如果样本量非常大,自己的分析肯定精力跟不上,Virustatol网站上有大部分检测结果,而且Virustatol网站提供了检测的API,能够很方便的进行查询和保存检测结果。
自己使用开源的框架写了一份简单的提交样本和获取结果的代码。
希望能够对大家样本分析有所帮助:
https://git.coding.net/weiyangye/Check_Virus_VT.git
检测逻辑是:首先提交样本的MD5,校验之前是否被检测过,如果是则直接保存结果,否则提交进行检测。
使用了自己的API-Key,每分钟只能提交检测4个样本,有能力和实力还是购买个人Key吧。
贴出核心代码:
def check_virus(virus_path):
response_code = 0
virus_md5 = 0
vt = VirusTotalPublicApi(api_key)
print "My API Key: " + vt.api_key
check_Flag = pre_check_virus(virus_path)
if check_Flag == True:
print "预处理病毒文件完毕,不需要提交病毒样本: " + virus_path
return True # 提交完毕,并且VT网站上已经有此检测,则返回True
upload_result = vt.scan_file(virus_path)
#print upload_result
#for key in upload_result:
# if key == 'response_code':
# response_code = upload_result[key]
# print "response_code: " + str(response_code)
response_code = upload_result['response_code']
if response_code == 200: # 200 表示已经获取到了结果
print "病毒文件上传成功,文件md5为: %s",upload_result['results'].get('md5')
tmp_dic = upload_result['results']
virus_md5 = tmp_dic['md5']
print virus_md5
if virus_md5 == 0:
print "无法获取到病毒文件的hash,请检查:/r/n"
exit(0)
# print vt.get_file_report()
print "获取 VirusTotal 的查杀结果: "
result= vt.get_file_report(virus_md5)
str_result= json.dumps(result['results'],sort_keys = False, indent = 4)
logfile = virus_path + "_VirusTotal.log"
file = open(logfile,"w+")
file.write(str_result)
file.close()
print virus_path + " 处理完毕"
return False # 提交样本到VT网站上进行检测,则会返回False
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)