python實(shí)現(xiàn)上傳樣本到virustotal并查詢掃描信息的方法
本文實(shí)例講述了python實(shí)現(xiàn)上傳樣本到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
返回的結(jié)果為:{u'Sophos': u'Sus/Behav-1010'},如果有掃描出的結(jié)果的話..
調(diào)用的方法如下:
MD5 = "12fa5fb74201d9b6a14f63fbf9a81ff6" #do not have report on virustotal.com MD5 = "5248f774d2ee0a10936d0b1dc89107f1" FILE_PATH = r"D:\backSample\10\9af41bc012d66c98ca2f9c68ba38e98f_ICQLiteShell.dll" from getVirusTotalInfo import VirusTotal #得到掃描結(jié)果并打印出來 virus_total = VirusTotal(MD5) print virus_total.get_report_dict() #提交文件到掃描,以后就可以根據(jù)這個MD5取掃描結(jié)果了 virus_total.submit_md5(FILE_PATH)
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Python腳本簡單實(shí)現(xiàn)打開默認(rèn)瀏覽器登錄人人和打開QQ的方法
這篇文章主要介紹了Python腳本簡單實(shí)現(xiàn)打開默認(rèn)瀏覽器登錄人人和打開QQ的方法,涉及Python針對瀏覽器及應(yīng)用程序的相關(guān)操作技巧,代碼非常簡單實(shí)用,需要的朋友可以參考下2016-04-04
Python應(yīng)用領(lǐng)域和就業(yè)形勢分析總結(jié)
在本篇文章總我們給大家整理了關(guān)于Python應(yīng)用領(lǐng)域和就業(yè)形勢分析以及圖文介紹,需要的朋友們可以參考下。2019-05-05
如何使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)
JSON 是文本,使用 JavaScript 對象表示法編寫,Python 有一個內(nèi)置的 json 包,可用于處理 JSON 數(shù)據(jù),本文給大家介紹使用Python JSON解析和轉(zhuǎn)換數(shù)據(jù)的方法,感興趣的朋友跟隨小編一起看看吧2023-11-11
tensorflow的ckpt及pb模型持久化方式及轉(zhuǎn)化詳解
今天小編就為大家分享一篇tensorflow的ckpt及pb模型持久化方式及轉(zhuǎn)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
python數(shù)據(jù)結(jié)構(gòu)之棧、隊(duì)列及雙端隊(duì)列
在上一章的學(xué)習(xí)中,我們主要學(xué)習(xí)了怎么去衡量一個算法的好壞,比較常見的方式是使用大O記法,就是所謂的時間復(fù)雜度,這一章節(jié)我來學(xué)習(xí)基本的數(shù)據(jù)結(jié)構(gòu),如棧、隊(duì)列和雙端隊(duì)列等等。感興趣的小伙伴可以參考一下2021-12-12
Python按行讀取文件的實(shí)現(xiàn)方法【小文件和大文件讀取】
這篇文章主要介紹了Python按行讀取文件的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了針對小文件和大文件的讀取方法,需要的朋友可以參考下2016-09-09
pyspark 讀取csv文件創(chuàng)建DataFrame的兩種方法
今天小編就為大家分享一篇pyspark 讀取csv文件創(chuàng)建DataFrame的兩種方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06

