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 BeautifulSoup中文乱码问题的2种解决方法
Apr 22 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
django数据库自动重连的方法实例
Jul 21 Python
python实现简单银行管理系统
Oct 25 Python
python实现图片上添加图片
Nov 26 Python
Python操作redis和mongoDB的方法
Dec 19 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
python 6行代码制作月历生成器
Sep 18 Python
python 模拟登陆163邮箱
Dec 15 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
IE6不能修改NAME问题的解决方法
2010/09/03 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
js登录弹出层特效
2014/03/07 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
2015/09/24 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
vue图片上传本地预览组件使用详解
2019/02/20 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
vue项目接口域名动态获取操作
2020/08/13 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
[02:19]2018年度DOTA2最佳核心位选手-完美盛典
2018/12/17 DOTA
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
单位委托书范本
2014/04/04 职场文书
工地宣传标语
2014/06/18 职场文书
住房租房协议书
2014/08/20 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
报效祖国演讲稿
2014/09/15 职场文书
2014年四风问题自我剖析材料
2014/09/15 职场文书
群众路线教育实践活动学习笔记
2014/11/05 职场文书
重阳节座谈会主持词
2015/07/03 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书