Как я могу получить репутацию файловых хешей на Virustotal, используя запрос и модуль bs4 и не используя PublicAPI Virustotal? - PullRequest
1 голос
/ 12 июня 2019

Мое требование - проверить репутацию нескольких файловых хешей на Virustotal, используя python. Я не хочу использовать публичный API Virustotal, поскольку существует ограничение в 4 запроса / мин. Я подумал об использовании модуля запросов и красивого супа, чтобы сделать это.

Пожалуйста, проверьте ссылку ниже: https://www.virustotal.com/gui/file/f8ee4c00a3a53206d8d37abe5ed9f4bfc210a188cd5b819d3e1f77b34504061e/summary

Мне нужно захватить 54/69 для этого файла. У меня есть список файловых хешей в Excel, который я могу зациклить на статус обнаружения, как только смогу сделать это для этого хэша.

Но я не могу получить конкретное число движков, обнаруживших хеш-файл как вредоносный. CSS-селектор для подсчета дает мне только пустой список. Пожалуйста помоги. Пожалуйста, проверьте код, который я написал ниже:

import requests
from bs4 import BeautifulSoup

filehash='F8EE4C00A3A53206D8D37ABE5ED9F4BFC210A188CD5B819D3E1F77B34504061E'
filehash_lower = filehash.lower()
URL = 'https://www.virustotal.com/gui/file/' +filehash+'/detection'

response = requests.get(URL)
print(response)

soup = BeautifulSoup(response.content,'html.parser')
detection_details = soup.select('div.detections')
print(detection_details)

1 Ответ

0 голосов
/ 12 июня 2019

Вот подход с использованием вызовов ajax:

import requests
import json

headers = {
    'pragma': 'no-cache',
    'x-app-hostname': 'https://www.virustotal.com/gui/',
    'dnt': '1',
    'x-app-version': '20190611t171116',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7,la;q=0.6,mt;q=0.5',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36',
    'accept': 'application/json',
    'cache-control': 'no-cache',
    'authority': 'www.virustotal.com',
    'referer': 'https://www.virustotal.com/',
}

response = requests.get('https://www.virustotal.com/ui/files/f8ee4c00a3a53206d8d37abe5ed9f4bfc210a188cd5b819d3e1f77b34504061e', headers=headers)
data = json.loads(response.content)
malicious = data['data']['attributes']['last_analysis_stats']['malicious']
undetected = data['data']['attributes']['last_analysis_stats']['undetected']

print(malicious, 'malicious out of', malicious + undetected)

вывод:

54 злонамеренных из 69

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...