Safebrowsing API 上传哈希以检查是否存在可疑软件
Safebrowsing API upload hash to check for suspicious software
我正在尝试发送一个散列作为安全浏览 API 的有效负载,以检测文件是否 suspicious/malicious,但显然我在发送正确的有效负载时遇到了问题。
我的负载:
curl --location --request POST 'https://safebrowsing.googleapis.com/v4/threatMatches:find?key=myKey' \
--header 'Content-Type: application/json' \
--data-raw '{
"hash": "YzIyZDM4NDA="
}'
https://developers.google.com/safe-browsing/v4/lookup-api 声明我需要使用 ThreatEntry
对象(见下面的截图)
这就是 threatEntry
对象应该看起来像 https://developers.google.com/safe-browsing/v4/reference/rest/v4/ThreatEntry 的样子。它说我只需要使用其中一个选项,所以我在我的有效负载中选择了 hash
,但是这个错误返回给我。
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"hash\": Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"description": "Invalid JSON payload received. Unknown name \"hash\": Cannot find field."
}
]
}
]
}
}
我做错了什么?
根据安全浏览 API v4,您缺少一些值以允许它工作。您还需要更好地了解不同的威胁条目。
API 文档:https://developers.google.com/safe-browsing/v4/reference/rest
API 终点:POST https://safebrowsing.googleapis.com/v4/threatMatches:find?key=YOURKEYHERE
HEADERS: Content-Type: application/json
BODY:
{
"client": {
"clientId": "NothingTooSeeHereInc",
"clientVersion": "1.5.2"
},
"threatInfo": {
"threatTypes": [
"MALWARE",
"SOCIAL_ENGINEERING",
"THREAT_TYPE_UNSPECIFIED",
"UNWANTED_SOFTWARE",
"POTENTIALLY_HARMFUL_APPLICATION"
],
"platformTypes": [
"ANY_PLATFORM"
],
"threatEntryTypes": [
"EXECUTABLE"
],
"threatEntries": [
{
"digest": "OTAwMTU2N2UyMDI1ZjgzYzkzNmI4NzQ2ZmQzYjAxZTQ0NTcyZjcwZDhkZGVjMzliNzViOTQ1OWY3ZTUwODljOA=="
}
]
}
}
推理:在您的代码中,您试图仅在 json 的哈希字段中传递哈希。 API 需要正确的结构来处理请求。在您的示例中,您想为恶意文件传递 base 64 编码的哈希值。要参考我下面的示例执行该操作,您可以看到您需要传递一个客户端 object 和一个威胁信息 object。在 threatInfo object 中,您需要 threatTypes、platformTypes、threatEntryTypes 和 threatEntries。在你的例子中,即使你有像我上面的例子那样的正确结构,你的条目仍然会失败,因为你试图将可执行摘要作为哈希类型传递。我附上了 API 参考 link。希望这可以帮助。 PS:如果有匹配项,您只会 return 一个非空数据集。
干杯。
我正在尝试发送一个散列作为安全浏览 API 的有效负载,以检测文件是否 suspicious/malicious,但显然我在发送正确的有效负载时遇到了问题。
我的负载:
curl --location --request POST 'https://safebrowsing.googleapis.com/v4/threatMatches:find?key=myKey' \
--header 'Content-Type: application/json' \
--data-raw '{
"hash": "YzIyZDM4NDA="
}'
https://developers.google.com/safe-browsing/v4/lookup-api 声明我需要使用 ThreatEntry
对象(见下面的截图)
这就是 threatEntry
对象应该看起来像 https://developers.google.com/safe-browsing/v4/reference/rest/v4/ThreatEntry 的样子。它说我只需要使用其中一个选项,所以我在我的有效负载中选择了 hash
,但是这个错误返回给我。
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name \"hash\": Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"description": "Invalid JSON payload received. Unknown name \"hash\": Cannot find field."
}
]
}
]
}
}
我做错了什么?
根据安全浏览 API v4,您缺少一些值以允许它工作。您还需要更好地了解不同的威胁条目。
API 文档:https://developers.google.com/safe-browsing/v4/reference/rest
API 终点:POST https://safebrowsing.googleapis.com/v4/threatMatches:find?key=YOURKEYHERE
HEADERS: Content-Type: application/json
BODY:
{
"client": {
"clientId": "NothingTooSeeHereInc",
"clientVersion": "1.5.2"
},
"threatInfo": {
"threatTypes": [
"MALWARE",
"SOCIAL_ENGINEERING",
"THREAT_TYPE_UNSPECIFIED",
"UNWANTED_SOFTWARE",
"POTENTIALLY_HARMFUL_APPLICATION"
],
"platformTypes": [
"ANY_PLATFORM"
],
"threatEntryTypes": [
"EXECUTABLE"
],
"threatEntries": [
{
"digest": "OTAwMTU2N2UyMDI1ZjgzYzkzNmI4NzQ2ZmQzYjAxZTQ0NTcyZjcwZDhkZGVjMzliNzViOTQ1OWY3ZTUwODljOA=="
}
]
}
}
推理:在您的代码中,您试图仅在 json 的哈希字段中传递哈希。 API 需要正确的结构来处理请求。在您的示例中,您想为恶意文件传递 base 64 编码的哈希值。要参考我下面的示例执行该操作,您可以看到您需要传递一个客户端 object 和一个威胁信息 object。在 threatInfo object 中,您需要 threatTypes、platformTypes、threatEntryTypes 和 threatEntries。在你的例子中,即使你有像我上面的例子那样的正确结构,你的条目仍然会失败,因为你试图将可执行摘要作为哈希类型传递。我附上了 API 参考 link。希望这可以帮助。 PS:如果有匹配项,您只会 return 一个非空数据集。
干杯。