Я пытаюсь отформатировать вывод json из API VirusTotal таким образом, чтобы в одном обзоре были представлены все необходимые данные. API VirusTotal можно вызвать с помощью curl следующим образом (сначала необходимо зарегистрировать ключ API, переданные данные - это ха sh файла, который вы подозреваете в качестве вредоносного):
curl --silent https://www.virustotal.com/vtapi/v2/file/report -F apikey=$VTAPI -F resource=b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b
и вывод в json. Таким образом, jq - это путь к тому, чтобы сделать этого человека читабельным:
curl --silent https://www.virustotal.com/vtapi/v2/file/report -F apikey=$VTAPI -F resource=b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b | jq "."
Это даст что-то похожее на приведенное ниже (11 механизмов определяют файл как вредоносное ПО, проверяют постоянную ссылку URL и просматривают подробности на веб-сайте VT) :
{
"scans": {
"Bkav": {
"detected": false,
"version": "1.3.0.9899",
"result": null,
"update": "20200418"
},
"TotalDefense": {
"detected": false,
... etc.
"resource": "b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b",
"response_code": 1,
"scan_date": "2020-04-18 12:36:44",
"permalink": "https://www.virustotal.com/file/b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b/analysis/1587213404/",
"verbose_msg": "Scan finished, information embedded",
"total": 61,
"positives": 11,
"sha256": "b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b",
"md5": "a860ff8b038de1ab70706163f4adf955"
}
Я поставил полный вывод json VT на pastebin
Я хотел бы показать только записи с обнаруженным == true и отформатируйте их так, чтобы вся соответствующая информация была видна в одном обзоре, без необходимости прокрутки назад. Я мог бы сделать perl скрипт для этого, но так как jq настолько мощный, я надеюсь, что там тоже можно все форматировать? В идеале это выглядело бы так:
MicroWorld-eScan 14.0.409.0 20200418 Trojan.GenericKD.42992262
McAfee 6.0.6.653 20200417 Artemis!A860FF8B038D
...
"scan_id": "b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b-1587213404",
"sha1": "155f680dfc91b0f90976c0892bb883f7a360e041",
"resource": "b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b",
"response_code": 1,
"scan_date": "2020-04-18 12:36:44",
"permalink": "https://www.virustotal.com/file/b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b/analysis/1587213404/",
"verbose_msg": "Scan finished, information embedded",
"total": 61,
"positives": 11,
"sha256": "b2349998571ab733d4ee0ca8a82afa614527aec75679569a91940631851c3d2b",
"md5": "a860ff8b038de1ab70706163f4adf955"
Я пробовал кое-что с jq, но не очень далеко: (
% jq '.scans[] | "\(.detected)" + " " + .result' vt-json.txt | grep -v false
"true Trojan.GenericKD.42992262"
"true Artemis!A860FF8B038D"
"true Trojan.Generic.D2900286"
"true Trojan.GenericKD.42992262"
"true Trojan.PDF.Generic.O!c"
"true Trojan.GenericKD.42992262"
"true Trojan.GenericKD.42992262 (B)"
"true Artemis"
"true malware (ai score=86)"
"true Trojan.GenericKD.42992262"
"true Trojan.GenericKD.42992262"
и
jq '. | select( .scans[].detected == true ) | .result ' vt-json.txt
null
null
null
null
null
null
null
null
null
null
null
заранее спасибо за любую помощь. Эвальд ...