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远程桌面协议RDPY安装使用介绍
Apr 15 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
May 04 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
如何将python中的List转化成dictionary
Aug 15 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
python django事务transaction源码分析详解
Mar 17 Python
浅谈python中的占位符
Nov 09 Python
Django 实现下载文件功能的示例
Mar 06 Python
python中类的属性和方法介绍
Nov 27 Python
详解python内置常用高阶函数(列出了5个常用的)
Feb 21 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
Python3 搭建Qt5 环境的方法示例
Jul 16 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抓取https的内容的代码
2010/04/06 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
PHP实现图片自动清理的方法
2015/07/08 PHP
PHP内存缓存功能memcached示例
2016/10/19 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
jquery datepicker参数介绍和示例
2014/04/15 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
使用vue.js制作分页组件
2016/06/27 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
2016/09/13 Javascript
localStorage实现便签小程序
2016/11/28 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
Bootstrap基本样式学习笔记之图片(6)
2016/12/07 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
vue 根据数组中某一项的值进行排序的方法
2018/08/30 Javascript
JavaScript 性能提升之路(推荐)
2019/04/10 Javascript
微信小程序实现的canvas合成图片功能示例
2019/05/03 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
浅探express路由和中间件的实现
2019/09/30 Javascript
[06:21]完美世界亚洲区首席发行官竺琦TI3采访
2013/08/26 DOTA
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
[01:10:49]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
python压缩文件夹内所有文件为zip文件的方法
2015/06/20 Python
Python实现定时任务
2017/02/08 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
英国领先的互联网葡萄酒礼品商:Vintage Wine & Port
2019/05/24 全球购物
非常详细的C#面试题集
2016/07/13 面试题
外国人聘用意向书
2014/04/01 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
刑事撤诉申请书
2015/05/18 职场文书