完整的pythonic virustotal公共api 2.0客户端
virustotal2的Python项目详细描述
一个可移植的、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。