Уязвимость, домен или адрес
CVE, домен или IP — одной строкой, без трёх вкладок в браузере.
Ключ
Вставьте куда угодно и допишите в конец то, что проверяете.
https://monoblock.casa/keys/dev/номер уязвимости, домен или IP-адрес
Попробовать прямо тут
Три вещи, которые разработчик ищет чаще всего и каждый раз открывает разные сайты. Номер уязвимости — что за дыра, насколько опасна, что затронуто. Домен — кто владелец, когда истекает, куда указывает, есть ли копия в веб-архиве. IP-адрес — чей он, откуда и какой провайдер. Что именно вы дали, ключ понимает сам: номер, домен и адрес друг на друга не похожи. Источники открытые и без ключей: CIRCL (зеркало базы CVE), RDAP вместо устаревшего whois, DNS через Cloudflare, Веб-архив, ip-api.
Вход
| параметр | тип | что это |
|---|---|---|
q * | string | номер уязвимости, домен или IP-адрес |
Ответ
| поле | тип | что это |
|---|---|---|
kind | string | что распознали: cve, domain или ip |
subject | string | то же, приведённое к канону |
severity | string | оценка опасности уязвимости по CVSS |
published | string | когда уязвимость опубликовали |
description | string | в чём суть уязвимости |
affected | string | чьи продукты затронуты |
registrar | string | через кого зарегистрирован домен |
created | string | когда домен зарегистрировали |
expires | string | когда регистрация истекает |
nameservers | string | чьи DNS-серверы обслуживают домен |
status | string | состояние регистрации |
ips | string | адреса, на которые указывает домен |
mx | string | куда идёт почта домена |
archived | string | дата последней копии в веб-архиве |
country | string | страна адреса |
city | string | город адреса |
isp | string | провайдер |
org | string | организация, которой выделен адрес |
asn | string | автономная система |
reverse | string | обратное имя адреса |
ok | boolean | получилось ли что-то узнать |
error | string | что не так, если не получилось |
Позвать из кода
Ставить нечего: везде, кроме C++, хватает стандартной библиотеки. Ответ приходит готовой строкой — разбирать нечего.
curl 'https://monoblock.casa/keys/dev/CVE-2021-44228'
import urllib.request
print(urllib.request.urlopen("https://monoblock.casa/keys/dev/CVE-2021-44228").read().decode())const answer = await (await fetch("https://monoblock.casa/keys/dev/CVE-2021-44228")).text();
console.log(answer);// сборка: g++ main.cpp -lcurl
#include <curl/curl.h>
#include <iostream>
#include <string>
static size_t sink(char* data, size_t size, size_t n, void* out) {
static_cast<std::string*>(out)->append(data, size * n);
return size * n;
}
int main() {
CURL* curl = curl_easy_init();
std::string answer;
curl_easy_setopt(curl, CURLOPT_URL, "https://monoblock.casa/keys/dev/CVE-2021-44228");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, sink);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &answer);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
std::cout << answer << std::endl; // готовая строка, разбирать нечего
}resp, _ := http.Get("https://monoblock.casa/keys/dev/CVE-2021-44228")
defer resp.Body.Close()
answer, _ := io.ReadAll(resp.Body)
fmt.Println(string(answer))echo file_get_contents("https://monoblock.casa/keys/dev/CVE-2021-44228");Нужно одно поле — допишите ?only=kind, придёт только оно. Полный ответ — ?fmt=json, да/нет — ?fmt=bool.
В ассистенте
Инструмент называется dev — просто попросите словами, подставлять параметры ассистент будет сам.
Откуда
Ключи — собрано из открытых интерфейсов, ни одного платного