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 相关文章推荐
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
python输入错误密码用户锁定实现方法
Nov 27 Python
python如何去除字符串中不想要的字符
Jul 05 Python
python 输出上个月的月末日期实例
Apr 11 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
树莓派采用socket方式文件传输(python)
Jun 22 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
python清空命令行方式
Jan 13 Python
django自定义非主键自增字段类型详解(auto increment field)
Mar 30 Python
使用python将微信image下.dat文件解密为.png的方法
Nov 30 Python
python实现xml转json文件的示例代码
Dec 30 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
Uchome1.2 1.5 代码学习 common.php
2009/04/24 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
PHP实现扎金花游戏之大小比赛的方法
2015/03/10 PHP
php生成静态html页面的方法(2种方法)
2015/09/14 PHP
PHP和Mysql中转UTF8编码问题汇总
2015/10/10 PHP
php实现微信企业转账功能
2018/10/02 PHP
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
NodeJS框架Express的模板视图机制分析
2011/07/19 NodeJs
jquery移除button的inline onclick事件(已测试及兼容浏览器)
2013/01/25 Javascript
基于jquery的禁用右键、文本选择功能、复制按键的实现代码
2013/08/27 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
JavaScript中日期函数的相关操作知识
2016/08/03 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
微信小程序自定义弹窗实现详解(可通用)
2019/07/04 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
[01:10]DOTA2英雄背景故事第四期之混沌法则混沌骑士
2020/07/16 DOTA
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python服务器与android客户端socket通信实例
2014/11/12 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
django的ORM操作 删除和编辑实现详解
2019/07/24 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
Python通过Pillow实现图片对比
2020/04/29 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
python中二分查找法的实现方法
2020/12/06 Python
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
我为党旗添光彩演讲稿
2014/09/13 职场文书
大学生党性分析材料
2014/12/19 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS