python实现上传样本到virustotal并查询扫描信息的方法
作者:shichen2014 发布时间:2023-06-30 19:59:45
标签:python,上传,查询
本文实例讲述了python实现上传样本到virustotal并查询扫描信息的方法。分享给大家供大家参考。具体方法如下:
import simplejson
import urllib
import urllib2
import os
MD5 = "5248f774d2ee0a10936d0b1dc89107f1"
MD5 = "12fa5fb74201d9b6a14f63fbf9a81ff6" #do not have report on virustotal.com
########################################################################
APIKEY = "e0a50a50e77fxxxxxxxxxxxxxx4f17e31 这里用你自己在virustotal上申请的账号的KEY"
class VirusTotal:
""""""
def __init__(self, md5):
"""Constructor"""
self._virus_dict = {}
self._md5 = md5
def repr(self):
return str(self._virus_dict)
def submit_md5(self, file_path):
import postfile
#submit the file
FILE_NAME = os.path.basename(file_path)
host = "www.virustotal.com"
selector = "https://www.virustotal.com/vtapi/v2/file/scan"
fields = [("apikey", APIKEY)]
file_to_send = open(file_path, "rb").read()
files = [("file", FILE_NAME, file_to_send)]
json = postfile.post_multipart(host, selector, fields, files)
print json
pass
def get_report_dict(self):
result_dict = {}
url = "https://www.virustotal.com/vtapi/v2/file/report"
parameters = {"resource": self._md5,
"apikey": APIKEY}
data = urllib.urlencode(parameters)
req = urllib2.Request(url, data)
response = urllib2.urlopen(req)
json = response.read()
response_dict = simplejson.loads(json)
if response_dict["response_code"]: #has result
scans_dict = response_dict.get("scans", {})
for anti_virus_comany, virus_name in scans_dict.iteritems():
if virus_name["detected"]:
self._virus_dict.setdefault(anti_virus_comany, virus_name["result"])
return self._virus_dict
返回的结果为:{u'Sophos': u'Sus/Behav-1010'},如果有扫描出的结果的话..
调用的方法如下:
MD5 = "12fa5fb74201d9b6a14f63fbf9a81ff6" #do not have report on virustotal.com
MD5 = "5248f774d2ee0a10936d0b1dc89107f1"
FILE_PATH = r"D:\backSample\10\9af41bc012d66c98ca2f9c68ba38e98f_ICQLiteShell.dll"
from getVirusTotalInfo import VirusTotal
#得到扫描结果并打印出来
virus_total = VirusTotal(MD5)
print virus_total.get_report_dict()
#提交文件到扫描,以后就可以根据这个MD5取扫描结果了
virus_total.submit_md5(FILE_PATH)
希望本文所述对大家的Python程序设计有所帮助。


猜你喜欢
- Python Socket模块中包含一些有用IP转换函数,说明如下:socket.ntohl(x) // 类似于
- 本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法。  需要注
- 本文实例讲述了Python使用time模块实现指定时间触发器。分享给大家供大家参考,具体如下:其实很简单,指定某个时间让脚本处理一个事件,比
- 你是否有时想知道什么人访问你的站点,什么时间,IP地址等。下面我就这个问题向大家来阐述一下。这个例子使用文本文件来写入用户的信息创建一个lo
- 写在之前首先是写在之前的一些建议:首先是关于这本书,我真的认为他是将神经网络里非常棒的一本书,但你也需要注意,如果你真的想自己动手去实现,那
- 前言最近在爬行 nosec.org 的数据,看了下需要模拟登录拿到cookie后才能访问想抓的数据,重要的是 nosec.org 的登录页面
- 今天下午主要做了个实验,是针对 测试表的列,进行添加,修改,删除的。做法如下: 增加一列: alter table emp4 add tes
- 从一头雾水到模模糊糊,不明原理,暂时记录一下1.安装Qtcratersudo pacman -S qtcreater2.打开Qtcrater
- 前言:集合分为可变集合和不可变集合两种,所以对其的增删改查操作要看集合的类型来决定。不可变的数据当然不能增删改,只能查询,可变集合则限制稍微
- 先设定一个关系模型如下:from django.db import modelsclass Blog(models.Model): name
- 本节我们来介绍一下新浪微博宫格验证码的识别,此验证码是一种新型交互式验证码,每个宫格之间会有一条指示连线,指示了我们应该的滑动轨迹,我们需要
- Python实时数据采集-新型冠状病毒源代码 来源:https://github.com/Programming-With-Love/201
- 导言篇我的python环境是:python3.6.5这里我选择的GUI编程包是:tkintertkinker在python2.5以后就是自带
- 路由原理在Tornado框架中,路由是指将请求的URL映射到对应的处理函数上,这个过程需要通过正则表达式来实现。Tornado使用了一种叫做
- 引言今年互联网的就业环境真的好糟糕啊,好多朋友被优化。我们平常在工作中除了撸好代码,跑通项目之外,还要注意内外兼修。内功和招式都得练👌,才能
- 0 与任意非数字(或者说,不可转化为数字的字符)前导的字符串比较(操作符为==), 均返回 true.原因是, 数字与字符串比较时, 先尝试
- 由于psutil已更新到3.0.1版本,最新的代码如下:#!/usr/bin/env pythonimport osimport timei
- 1、 isalnum() :判断字符串所有的字符都是字母或者数字。返回true和falseIn [1]: str1='jiangwe
- MS SQL Server中文版的预设日期datetime格式是yyyy-mm-dd hh:mm:ss.mmm 长短日期格式 --短日期格式
- VS Code 装好ESLint 插件报黄线的问题,具体解决方法如下所示:ESLint is disabled since its exec