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大批量读写.doc文件的问题
May 08 Python
python迭代dict的key和value的方法
Jul 06 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
Python实现计算文件MD5和SHA1的方法示例
Jun 11 Python
python读写配置文件操作示例
Jul 03 Python
python实现两个一维列表合并成一个二维列表
Dec 02 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
pytorch 实现打印模型的参数值
Dec 30 Python
django实现将修改好的新模型写入数据库
Mar 31 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
Jun 18 Python
selenium携带cookies模拟登陆CSDN的实现
Jan 19 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源代码
2013/06/26 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
php求数组全排列,元素所有组合的方法总结
2017/03/14 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
JavaScript 指导方针
2007/04/05 Javascript
jqueyr判断checkbox组的选中(示例代码)
2013/11/08 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
JS实现仿雅虎首页快捷登录入口及导航模块效果
2015/09/19 Javascript
深入理解JQuery循环绑定事件
2016/06/02 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
JavaScript之浏览器对象_动力节点Java学院整理
2017/07/03 Javascript
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
小程序兼容安卓和IOS数据处理问题及坑
2018/09/18 Javascript
在layui中layer弹出层点击事件无效的解决方法
2019/09/05 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
2018/07/12 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
2019/11/29 Python
利用SVG和CSS3来实现一个炫酷的边框动画
2015/07/22 HTML / CSS
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
StringBuilder和String的区别
2015/05/18 面试题
《狼和小羊》教学反思
2014/04/20 职场文书
小学一年级学生评语
2014/04/22 职场文书
大国崛起日本观后感
2015/06/02 职场文书
女方家长婚礼致辞
2015/07/27 职场文书
幼儿园中班教育随笔
2015/08/14 职场文书
python 利用PyAutoGUI快速构建自动化操作脚本
2021/05/31 Python