python实现上传样本到virustotal并查询扫描信息的方法_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
, 查询
, 上传
, 扫描
, 信息
, virustotal
样本
virustotal 下载样本、virustotal、virus total、virustotal api、totalvirus,以便于您获取更多的相关知识。

时间: 2024-10-30 16:06:24

python实现上传样本到virustotal并查询扫描信息的方法_python的相关文章

python在windows下实现ping操作并接收返回信息的方法_python

本文实例讲述了python在windows下实现ping操作并接收返回信息的方法.分享给大家供大家参考.具体分析如下: 这段python代码调用windows下的ping命令,通过subprocess在其子进程里面实现,由于windows下的ping和linux下的ping返回的消息不太一样,所以这段python代码要想在linux下运行,需要修改一下正则匹配 复制代码 代码如下: import subprocess   import re p = subprocess.Popen(["ping

python实现根据用户输入从电影网站获取影片信息的方法_python

本文实例讲述了python实现根据用户输入从电影网站获取影片信息的方法.分享给大家供大家参考.具体如下: 这段python代码主要演示了用户终端输入,正则表达式,网页抓取等 #!/usr/bin/env python27 #Importing the modules from BeautifulSoup import BeautifulSoup import sys import urllib2 import re import json #Ask for movie title title =

linux文件上传,给文件或目录添加apache权限的方法_Linux

在LAMP环境中,测试一个简单的php文件上传功能时,发现/var/log/apache2/error.log中出现如下php警告: 1. [Tue Jan 31 09:40:27 2012] [error] [client 127.0.0.1] PHP Warning: move_uploaded_file(/home/leotody/32883679.jpeg): failed to open stream: Permission denied in /var/www/upload_file

Java中使用WebUploader插件上传大文件单文件和多文件的方法小结_java

一.使用webuploader插件的原因说明 被现在做的项目坑了. 先说一下我的项目架构spring+struts2+mybatis+MySQL 然后呢.之前说好的按照2G上传就可以了,于是乎,用了ajaxFileUpload插件,因为之前用图片上传也是用这个,所以上传附件的时候就直接拿来用了 各种码代码,测试也测过了,2G文件上传没问题,坑来了,项目上线后,客户又要求上传4G文件,甚至还有20G以上的..纳尼,你不早说哦... 在IE11下用ajaxFileUpload.js插件上传超过4G的

selenium-webdriver(python) (九) 上传文件

本节重点: 上传文件 文件上传操作也比较常见功能之一,上传功能没有用到新有方法或函数,关键是思路. 上传过程一般要打开一个本地窗口,从窗口选择本地文件添加.所以,一般会卡在如何操作本地窗口添加上传文件. 其实,在selenium webdriver没我们想的那么复杂:只要定位上传按钮,通send_keys添加本地文件路径就可以了.绝对路径和相对路径都可以,关键是上传的文件存在.下面通地例子演示. upload_file.html <html> <head> <meta htt

asp.net下ueditor上传大容量视频报http请求错误的解决方法

故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器,但是上传稍微大一点的文件就会报错, 解决方案 1:修改相对应的ueditor\asp\config.json编辑器文件夹中的配置文件config.json在其中查找"videoMaxSize": 1024000000, /* 上传大小限制,单位B,默认1GBB */ 这是我修改后的参数:

关于如何实现FTP上传或者下载带进度和速率的实现方法

中介交易 SEO诊断 淘宝客 云主机 技术大厅 在这里需要说明的是,该方式是通过其他代码进行改进的. 首先我们需要定义一个委托,用来实现传输过程中传递文件的总数,已完成的字节数和速度,方便客户端界面上调用. public delegate void TransferProcess(long total,long finished,double speed); 调用代码就不举例了 接下来我们建立一个FTPClient类,该类基于socket和FTP协议实现了连接FTP服务,建立目录,上传文件,下载

解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法_php技巧

最近用ThinkPHP开发一个项目,集成了批量上传文件插件Uploadify,在谷歌Chrome和IE下都能正常上传,只有火狐下提示这个错误,网上找了很多解决办法,基本都说flash在firefox下重新发起session会话,由于session没有验证通过所以报错,这个问题网上有很多解决方案,但是试了很多,都没有真正解决我的问题,最后看了官方的解决方案 http://www.uploadify.com/documentation/uploadify/using-sessions-with-up

解决jQuery上传插件Uploadify出现Http Error 302错误的方法_jquery

之前介绍过jquery uploadify上传插件的使用方法,我在使用中遇到过Http Error 302错误问题,应该会有很多人在使用中遇到过,在此记录下来: 首先http 302是请求被重定向的意思,这就很容易理解了,如果你的uploadify处理上传脚本有session验证,就会出现此错误,因为flash在执行post请求的时候没有包含cookie信息,而服务器的session会根据客户端的cookie来得到SESSIONID.没有提交cookie自然就不能获取到session,然后upl