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程序添加图形化界面的教程
Apr 29 Python
基于python实现微信模板消息
Dec 21 Python
python中函数默认值使用注意点详解
Jun 01 Python
基于Python的文件类型和字符串详解
Dec 21 Python
使用Python和xlwt向Excel文件中写入中文的实例
Apr 21 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
Django继承自带user表并重写的例子
Nov 18 Python
如何通过python实现全排列
Feb 11 Python
详解python中的lambda与sorted函数
Sep 04 Python
python 读取串口数据的示例
Nov 09 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 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
Terran建筑一览
2020/03/14 星际争霸
PHP 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
IP攻击升级,程序改进以对付新的攻击
2010/11/23 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
SSO单点登录的PHP实现方法(Laravel框架)
2016/03/23 PHP
php实现URL加密解密的方法
2016/11/17 PHP
php封装的验证码类分享
2017/02/26 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.2 0
2008/03/22 Javascript
Extjs中TabPane如何嵌套在其他网页中实现思路及代码
2013/01/27 Javascript
js 图片随机不定向浮动的实现代码
2013/07/02 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
仿当当网淘宝网等主流电子商务网站商品分类导航菜单
2013/09/25 Javascript
浅谈jQuery中对象遍历.eq().first().last().slice()方法
2014/11/26 Javascript
JavaScript页面模板库handlebars的简单用法
2015/03/02 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
运用js教你轻松制作html音乐播放器
2020/04/17 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
使用原生js+canvas实现模拟心电图的实例
2017/09/20 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
Python3实现从指定路径查找文件的方法
2015/05/22 Python
使用Python编写一个最基础的代码解释器的要点解析
2016/07/12 Python
python解析基于xml格式的日志文件
2017/02/25 Python
python实现图片筛选程序
2018/10/24 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
多版本python的pip 升级后, pip2 pip3 与python版本失配解决方法
2019/09/11 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
自我鉴定范文300字
2013/10/01 职场文书
4S店收银员岗位职责
2015/04/07 职场文书
资金申请报告范文
2015/05/14 职场文书
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL