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中使用ConfigParser解析ini配置文件实例
Aug 30 Python
python中sleep函数用法实例分析
Apr 29 Python
Python实现大文件排序的方法
Jul 10 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
python爬虫中get和post方法介绍以及cookie作用
Feb 08 Python
如何用Python合并lmdb文件
Jul 02 Python
python3爬虫怎样构建请求header
Dec 23 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
Python hmac模块使用实例解析
Dec 24 Python
vue学习笔记之动态组件和v-once指令简单示例
Feb 29 Python
Python json转字典字符方法实例解析
Apr 13 Python
keras分类模型中的输入数据与标签的维度实例
Jul 03 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
php4的session功能评述(三)
2006/10/09 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
JQuery1.4+ Ajax IE8 内存泄漏问题
2010/10/15 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
js 链式延迟执行DOME
2012/01/04 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
原生JS实现N级菜单的代码
2017/05/21 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
[01:02:47]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
一篇不错的Python入门教程
2007/02/08 Python
Python实现的爬虫功能代码
2017/06/24 Python
int在python中的含义以及用法
2019/06/27 Python
Python 实现输入任意多个数,并计算其平均值的例子
2019/07/16 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
python实现AdaBoost算法的示例
2020/10/03 Python
澳大利亚相机之家:Camera House
2017/11/30 全球购物
北京大学自荐信范文
2014/01/28 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
预备党员转正材料
2014/12/19 职场文书
放射科岗位职责
2015/02/14 职场文书
小学中队委竞选稿
2015/11/20 职场文书
2016年暑假家长对孩子评语
2015/12/01 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫