if (!defined('IN_AJAX')) die(basename(__FILE__));
global $userdata, $bb_cfg, $lang;
$api_key = $bb_cfg['virustotal_api_key']; // Замените на ваш ключ API
$hash = !empty($this->request['hash']) ? $this->request['hash'] : false;
$file = !empty($this->request['file']) ? $this->request['file'] : false;
if ($hash) {
$url = "https://www.virustotal.com/api/v3/files/{$hash}";
// Инициализация cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"x-apikey: {$api_key}"
]);
$response = curl_exec($ch);
curl_close($ch);
$this->response['type'] = 'hash';
// Обработка ответа
if ($response) {
$data = json_decode($response, true);
if (isset($data['data']['attributes']['last_analysis_stats'])) {
$last_analysis_stats = $data['data']['attributes']['last_analysis_stats'];
$total = (isset($data['data']['attributes']['last_analysis_stats']['malicious']) && isset($data['data']['attributes']['last_analysis_stats']['undetected']))
? (int)$data['data']['attributes']['last_analysis_stats']['malicious'] + (int)$data['data']['attributes']['last_analysis_stats']['undetected']
: 0;
$malicious = (isset($data['data']['attributes']['last_analysis_stats']['malicious'])) ? (int)$data['data']['attributes']['last_analysis_stats']['malicious'] : 0;
// Формируем HTML для отображения
$this->response['html'] = $lang['VT_MALICIOUS'].': <b'.($malicious>0?' class="text-danger"':' class="text-success"').'>' . $malicious . '/' . $total. '</b>';
} else {
$this->response['html'] = $lang['ERROR'].': <b class="text-danger">'.$data['error']['code'].'</b>';
}
} else {
$this->response['html'] = '<i class="text-danger">Ошибка запроса к VirusTotal</i>';
}
}
if ($file) {
$this->response['type'] = 'file';
$this->response['html'] = '<i class="text-danger">В разработке...</i>';
$malicious_extensions = array(
'.exe', // Исполнимые файлы
'.bat', // Пакетные файлы
'.cmd', // Файлы команд Windows
'.vbs', // Скрипты Visual Basic
'.js', // JavaScript файлы
'.jse', // Защищённые JavaScript файлы
'.ps1', // Скрипты PowerShell
'.scr', // Экранные заставки
'.pif', // Программный информационный файл
'.reg', // Реестровые файлы
'.dll', // Библиотеки динамической компоновки
'.lnk', // Ярлыки
'.msp', // Пакеты установки
'.msi', // Установочные файлы
'.iso', // Образы дисков
'.apk', // Android-программы
'.zip', // Архивы
'.rar', // Архивы
'.7z', // Архивы
'.tar', // Архивы
'.gz', // Архивы
'.tar.gz', // Архивы
'.tar.bz2', // Архивы
'.tar.xz', // Архивы
'.ace', // Архивы
'.alz', // Архивы
'.cab', // Кабинетные архивы
'.vbe', // Визуальные Basic-скрипты
'.wsf', // Скрипты Windows Script
'.ws', // Скрипты Windows Script
'.vb', // Visual Basic
'.scf', // Файлы сценариев Windows
'.inf', // Файлы конфигурации
'.torrent', // Торрент файлы (может содержать исполнимые файлы)
'.html', // Веб-страницы, которые могут содержать вредоносный JavaScript
'.htm', // Веб-страницы
'.php', // PHP скрипты (если доступ через веб)
'.pl', // Perl скрипты
'.cgi', // CGI-скрипты
'.aspx', // ASP.NET страницы
'.jsp', // Java Server Pages
'.py', // Python скрипты
'.rb', // Ruby скрипты
'.sh', // Скрипты оболочки
'.shtml', // Веб-страницы с расширением для серверных скриптов
// Документы, в которых могут содержаться вирусы:
'.doc', // Microsoft Word документы
'.docx', // Microsoft Word документы (XML формат)
'.xls', // Microsoft Excel документы
'.xlsx', // Microsoft Excel документы (XML формат)
'.ppt', // Microsoft PowerPoint документы
'.pptx', // Microsoft PowerPoint документы (XML формат)
'.odt', // OpenDocument текстовые файлы
'.ods', // OpenDocument электронные таблицы
'.odp', // OpenDocument презентации
'.rtf', // Rich Text Format
'.pdf', // PDF документы
'.chm', // Справочные файлы Windows
'.mht', // MHTML файлы
'.html', // Веб-страницы, которые могут содержать вредоносный JavaScript
'.txt', // Текстовые файлы (может содержать вредоносный скрипт)
'.csv', // CSV файлы (могут содержать вредоносные макросы в Excel)
'.epub', // Электронные книги формата EPUB
'.djvu' // Формат DjVu для документов
);
// sending file to virustotal via api
}