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类中super()和__init__()的区别
Oct 18 Python
Pandas之drop_duplicates:去除重复项方法
Apr 18 Python
Python多进程写入同一文件的方法
Jan 14 Python
python+webdriver自动化环境搭建步骤详解
Jun 03 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
关于Python3 lambda函数的深入浅出
Nov 27 Python
python实现高斯判别分析算法的例子
Dec 09 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
Mar 05 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
Sep 01 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
PyQt5通过信号实现MVC的示例
Feb 06 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
PHP Global定义全局变量使用说明
2013/08/15 PHP
php的sprintf函数的用法 控制浮点数格式
2014/02/14 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
PHP 使用二进制保存用户状态的实例
2018/01/29 PHP
JS 实现完美include载入实现代码
2010/08/05 Javascript
javascript中onmouse事件在div中失效问题的解决方法
2012/01/09 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
自己动手手写jQuery插件总结
2015/01/20 Javascript
jQuery实现鼠标选文字发新浪微博的方法
2016/04/02 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
基于JavaScript Array数组方法(新手必看篇)
2016/08/20 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
2017/07/11 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
react的hooks的用法详解
2020/10/12 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
python类继承用法实例分析
2014/10/10 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
Python中不同进制的语法及转换方法分析
2016/07/27 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
2020/07/23 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
Prototype中如何为一个元素添加一个方法
2014/12/08 面试题
部队学习十八大感言
2014/01/11 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
创先争优演讲稿
2014/09/15 职场文书
详解Oracle块修改跟踪功能
2021/11/07 Oracle
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript