Changed file system
This commit is contained in:
53
modules/virustotal.py
Normal file
53
modules/virustotal.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import json
|
||||
import requests
|
||||
import os
|
||||
import hashlib
|
||||
|
||||
|
||||
def add_to_cfg(key):
|
||||
with open('config.cfg') as f:
|
||||
config = json.load(f)
|
||||
|
||||
config['vt-key'] = key
|
||||
|
||||
with open('config.cfg', 'w') as f:
|
||||
json.dump(config, f)
|
||||
|
||||
|
||||
def get_key():
|
||||
with open('config.cfg') as f:
|
||||
config = json.load(f)
|
||||
|
||||
try:
|
||||
return config['vt-key']
|
||||
except KeyError:
|
||||
return None
|
||||
|
||||
|
||||
def scan_file(filename):
|
||||
api_url = 'https://www.virustotal.com/api/v3/files'
|
||||
headers = {'x-apikey': get_key()}
|
||||
with open(filename, 'rb') as file:
|
||||
files = {'file': (filename, file)}
|
||||
if os.path.getsize(filename) < 33554432:
|
||||
response = requests.post(api_url, headers=headers, files=files)
|
||||
return response.json()['data']['id']
|
||||
else:
|
||||
api_url = 'https://www.virustotal.com/api/v3/files/upload_url'
|
||||
response = requests.get(api_url, headers=headers)
|
||||
response = requests.post(response.json()['data'], headers=headers, files=files)
|
||||
return response.json()['data']['id']
|
||||
|
||||
|
||||
def get_report(filename):
|
||||
hash_md5 = hashlib.md5()
|
||||
with open(filename, "rb") as f:
|
||||
for chunk in iter(lambda: f.read(4096), b""):
|
||||
hash_md5.update(chunk)
|
||||
api_url = 'https://www.virustotal.com/api/v3/files/' + hash_md5.hexdigest()
|
||||
headers = {'x-apikey': get_key()}
|
||||
response = requests.get(api_url, headers=headers)
|
||||
analysis = dict()
|
||||
analysis['detect'] = response.json()['data']['attributes']['last_analysis_stats']
|
||||
analysis['link'] = 'https://www.virustotal.com/gui/file/' + response.json()['data']['id']
|
||||
return analysis
|
||||
Reference in New Issue
Block a user