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中使用poplib模块收取邮件的教程
Apr 29 Python
python中while循环语句用法简单实例
May 07 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Python实现图片转字符画的代码实例
Feb 22 Python
python3人脸识别的两种方法
Apr 25 Python
numpy.random模块用法总结
May 27 Python
用Python配平化学方程式的方法
Jul 20 Python
python实现简易学生信息管理系统
Apr 05 Python
Python叠加矩形框图层2种方法及效果
Jun 18 Python
python3爬虫中多线程的优势总结
Nov 24 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
Jan 08 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
如何删除多级目录
2006/10/09 PHP
php数组分页实现方法
2016/04/30 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
用javascript操作xml
2006/11/04 Javascript
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
详解Angularjs 如何自定义Img的ng-load 事件
2017/02/15 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
Vue SPA单页应用首屏优化实践
2018/06/28 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python 26进制计算实现方法
2015/05/28 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
Python实现区域填充的示例代码
2021/02/03 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
介绍一下XMLHttpRequest对象
2012/02/12 面试题
给朋友的道歉信
2014/01/09 职场文书
小学生元旦广播稿
2014/02/21 职场文书
小学语文业务学习材料
2014/06/02 职场文书
思想道德自我评价2015
2015/03/09 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
为什么代码规范要求SQL语句不要过多的join
2021/06/23 MySQL