0

我正在尝试发送一个哈希作为 Safebrowsing API 的有效负载,以检测文件是否可疑/恶意,但我显然无法发送正确的有效负载。

我的有效载荷:

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 通知

这就是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."
                    }
                ]
            }
        ]
    }
}

我究竟做错了什么?

4

1 回答 1

0

根据 Safe Browsing API v4,您缺少一些值以使其正常工作。此外,您需要更好地了解不同的威胁条目。

API 文档:https ://developers.google.com/safe-browsing/v4/reference/rest

API 端点:POSThttps://safebrowsing.googleapis.com/v4/threatMatches:find?key=YOURKEYHERE

标题:Content-Type: application/json

身体:

{
    "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 编码哈希。要执行参考下面我的示例的操作,您可以看到您需要传递一个客户端对象和一个threatInfo 对象。在threatInfo 对象中,您需要threatTypes、platformTypes、threatEntryTypes 和threatEntries。在您的示例中,即使您具有像我上面的示例这样的正确结构,您的条目仍然会失败,因为您试图将可执行摘要作为哈希类型传递。我附上了 API 参考链接。希望这可以帮助。PS:如果有匹配,您只会返回一个非空数据集。

干杯。

于 2022-02-18T05:53:30.580 回答