完整的pythonic virustotal公共api 2.0客户端

virustotal2的Python项目详细描述


Build Status

一个可移植的、pythonic的、完整的 VirustotalPublic API它 如果vt想给我 访问…:)

这个模块主要是从 virustotal模块。在 特别是,它使用相同的速率限制逻辑并处理报表 以同样的方式更新。最后我从头开始重新编写模块, 然而,在这个过程中做出了一些新的选择 兼容性。因此,我们有了virustotal2

先决条件

示例

import virustotal2
import urllib2
import csv

vt = virustotal2.VirusTotal2("b2510b80fec019d8b6896a8e575022690efecdfa858d1077c75b37dae5f4621e")

mdl_content = urllib2.urlopen("http://www.malwaredomainlist.com/updatescsv.php")
mdl_csv = csv.reader(mdl_content)

for line in mdl_csv:
    ip=line[2].split("/")[0]
    try:
        ip_report = vt.retrieve(ip)   #get the VT IP report for this IP
    except:
        print "API error: on ip " + ip

    total_pos = sum([u["positives"] for u in ip_report.detected_urls])
    total_scan = sum([u["total"] for u in ip_report.detected_urls])
    count = len(ip_report.detected_urls)

    print str(count)+" URLs hosted on "+ip+" are called malicious by (on average) " + \
          str(int(total_pos/count)) + " / " + str(int(total_scan/count)) + " scanners"

如何使用

安装

pip install virustotal2

导入

import virustotal2

实例化

vt2=virustotal2.VirusTotal2(API_KEY)

或者,您可以传递limit_per_min,这是查询的数量 你可以每分钟表演一次4是默认值

检索报告

使用方法Read()从ViuStoTalk获得一个现有的报告。 此方法的第一个参数可以是:

  • 一个文件的MD5、SHA1或SHA256或一个最多包含4个哈希值的列表
  • 文件路径或文件路径列表
  • 文件或文件路径列表的base64编码版本 (文件名必须以.base64!结尾)
  • URL或URL列表
  • IP地址或IP地址列表
  • 域名

retrieve()将尝试自动检测您提供的内容如果你 要显式,可以将thing\u类型参数与 价值观:

  • 知识产权
  • 散列
  • 文件
  • 基数64
  • 网址

最后,如果您想要原始json,而不是virustotal2report 对象,可以传入raw=true。

如果您传递retrieve()一个项目列表,您将得到一个报告列表 回到原来的顺序。

扫描新文件

使用scan()方法扫描新的URL或文件这种方法是第一次 参数可以是:

  • 文件的路径
  • 最多4个url的url或列表
  • 一个散列或最多25个散列的列表(仅用于重新扫描!)

scan()将尝试自动检测您提供的内容如果你想的话 明确地说,可以将type参数与以下值一起使用:

  • 文件
  • 基数64
  • 网址

如果您想要原始json,而不是virustotal2report对象,那么 可以传入raw=True

最后,如果你想强制重新分析你正在传递的资源 在中,设置rescan=true。请注意,virustotal api当前没有 允许重新分析URL。

如果您传递scan()一个项目列表,您将得到一个报告列表 同样的顺序。为了保留这个语义,如果您传入 文件列表,其中一些是无效的,您将得到一个报告列表 没有回来。

使用报告

retrieve()和scan()方法返回VirusTotal2Report对象。 这些对象有一些有用的方法,也充当到 基础JSON。

等待()

此方法将被阻止,直到您提交用于扫描的文件或url 已完成扫描这可能需要很长时间

重新扫描()

请求virustotal重新扫描创建当前 报告。这仅对文件或哈希报告有效这种方法 修改当前报表而不是返回新报表对象, 因此,以下情况是正常的:

>>> import virustotal2
>>> vt = virustotal2.VirusTotal2(API_KEY)
>>> report = vt.get("www.evilsite.com/evil.exe")
>>> report.status()
analyzing
>>> report.wait()
>>> report.status()
ok
>>> report.rescan()
>>> report.status()
analyzing
>>> report.wait()
>>> report.status()
ok

更新()

检查virustotal是否已经完成了它的分析,如果是的话 删除新的json。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
相对于框架java窗口的鼠标位置错误   Java 8流peek api   java将数据附加到文件中   java使用ExoPlayer 2.8播放播放列表中的特定文件   JavaSpring国际化:如何动态设置语言环境值   java如何在mysql中实现两个表之间的两个关联   java在gradle可执行jar文件中包含运行时参数   surefire插件中的java maven多套测试套件   java试图理解堆分析以确定内存泄漏或所需的大量内存   java识别字符串有数字   数组如何解决错误“java.lang.ArrayIndexOutOfBoundsException:5”   java Swt文件对话框选择的文件太多?   java此登录代码易受SQL注入攻击吗?   Java[3]中的文件<identifier>预期编译错误   java如何在spring webflux中发送列表   jar中未找到java文件异常   如何在java中合并2D数组?   java如何评测本机JNI库