python实现上传样本到virustotal并查询扫描信息的方法


Posted in Python onOctober 05, 2014

本文实例讲述了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 相关文章推荐
深入讲解Python中面向对象编程的相关知识
May 25 Python
Python多线程下载文件的方法
Jul 10 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
浅谈python函数之作用域(python3.5)
Oct 27 Python
Python 查看文件的编码格式方法
Dec 21 Python
Python中函数的返回值示例浅析
Aug 28 Python
使用TensorFlow搭建一个全连接神经网络教程
Feb 06 Python
Python unittest工作原理和使用过程解析
Feb 24 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
python中元组的用法整理
Jun 15 Python
Python Numpy之linspace用法说明
Apr 17 Python
python实现计算资源图标crc值的方法
Oct 05 #Python
python求crc32值的方法
Oct 05 #Python
Python获取文件ssdeep值的方法
Oct 05 #Python
python获取Linux下文件版本信息、公司名和产品名的方法
Oct 05 #Python
python获取文件版本信息、公司名和产品名的方法
Oct 05 #Python
python实现调用其他python脚本的方法
Oct 05 #Python
跟老齐学Python之让人欢喜让人忧的迭代
Oct 02 #Python
You might like
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
PHP 7.1中AES加解密方法mcrypt_module_open()的替换方案
2017/10/17 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
jQuery常见开发技巧详细整理
2013/01/02 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
JS 加入收藏夹的代码(主流浏览器通用)
2013/05/13 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
极易被忽视的javascript面试题七问七答
2016/02/15 Javascript
纯jQuery实现前端分页功能
2017/03/23 jQuery
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python中super关键字用法实例分析
2015/05/28 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
opencv python统计及绘制直方图的方法
2019/01/21 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
wxPython实现文本框基础组件
2019/11/18 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
可以在一个PHP文件里面include另外一个PHP文件两次吗
2015/05/22 面试题
工作收入证明模板
2014/10/10 职场文书
2014年科研工作总结
2014/12/03 职场文书
研究生个人学年总结
2015/02/14 职场文书
环境卫生标语
2015/08/03 职场文书
《只有一个地球》教学反思
2016/02/16 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书