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实现定时播放mp3
Mar 29 Python
10种检测Python程序运行时间、CPU和内存占用的方法
Apr 01 Python
python3爬虫之设计签名小程序
Jun 19 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
OpenCV 轮廓检测的实现方法
Jul 03 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
python3 xpath和requests应用详解
Mar 06 Python
pycharm sciview的图片另存为操作
Jun 01 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
python - asyncio异步编程
Apr 06 Python
详解Flask开发技巧之异常处理
Jun 15 Python
python3 字符串str和bytes相互转换
Mar 23 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
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
php使用file函数、fseek函数读取大文件效率对比分析
2016/11/04 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
PHP时间戳和日期相互转换操作实例小结
2018/12/18 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
javascript call方法使用说明
2010/01/11 Javascript
JavaScript异步编程:异步数据收集的具体方法
2013/08/19 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
使用javascript做在线算法编程
2018/05/25 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
React 使用recharts实现散点地图的示例代码
2018/12/07 Javascript
微信小程序开发实现的IP地址查询功能示例
2019/03/28 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
Python单元测试实例详解
2018/05/25 Python
Python爬虫实现(伪)球迷速成
2018/06/10 Python
Windows下Python3.6安装第三方模块的方法
2018/11/22 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
保密承诺书范文
2014/03/27 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
党支部考察意见范文
2015/06/02 职场文书
四年级数学教学反思
2016/02/16 职场文书
承诺书应该怎么写?
2019/09/10 职场文书
Python selenium模拟网页点击爬虫交管12123违章数据
2021/05/26 Python
电频谱管理的原则是什么
2022/02/18 无线电
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL
Apache自带的ab压力测试工具的实现
2022/07/23 Servers