3

Google Safe Browsing APIからのデータを確認するために、更新ごとにメッセージ認証コード (MAC) を計算できます。これを行う手順 (Google から) は次のとおりです。

MAC は、次の情報に基づいて MD5 ダイジェストから計算されます: client_key|separator|table data|separator|client_key。区切り文字は文字列:coolgoog: - コロンの後に "coolgoog" が続き、その後にコロンが続きます。結果の 128 ビット MD5 ダイジェストは、websafe base-64 でエンコードされます。

確認するサンプル データもあります。

client key: "8eirwN1kTwCzgWA2HxTaRQ=="

応答:

[goog-black-hash 1.180 update][mac=dRalfTU+bXwUhlk0NCGJtQ==]
+8070465bdf3b9c6ad6a89c32e8162ef1   
+86fa593a025714f89d6bc8c9c5a191ac
+bbbd7247731cbb7ec1b3a5814ed4bc9d
*Note that there are tabs at the end of each line.

私は試合を得ることができません。私が間違っているところを指摘するか、これを行うために必要な数行の Python コードを書いてください!

FWIW、私は次のようなことができると思っていました:

>>> s = "+8070465bdf3b9c6ad6a89c32e8162ef1\t\n+86fa593a025714f89d6bc8c9c5a191ac\t\n+bbbd7247731cbb7ec1b3a5814ed4bc9d\t"
>>> c = "8eirwN1kTwCzgWA2HxTaRQ=="
>>> hashlib.md5("%s%s%s%s%s" % (c, ":coolgoog:", s, ":coolgoog:", c)).digest().encode("base64")
'qfb50mxpHrS82yTofPkcEg==\n'

しかし、ご覧のとおり、'qfb50mxpHrS82yTofPkcEg==\n' != 'dRalfTU+bXwUhlk0NCGJtQ==' です。

4

2 に答える 2

2

アンダースの答えは必要な情報を提供しますが、それほど明確ではありません.クライアントキーは、結合する前にデコードする必要があります. (上記の例でも、最終的なテーブル データの末尾に改行がありません)。

したがって、作業コードは次のとおりです。

>>> s = "+8070465bdf3b9c6ad6a89c32e8162ef1\t\n+86fa593a025714f89d6bc8c9c5a191ac\t\n+bbbd7247731cbb7ec1b3a5814ed4bc9d\t\n"
>>> c = "8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')                            
>>> hashlib.md5("%s%s%s%s%s" % (c, ":coolgoog:", s, ":coolgoog:", c)).digest().encode("base64")
'dRalfTU+bXwUhlk0NCGJtQ==\n'
于 2008-10-08T20:07:42.630 に答える
1
c="8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')
于 2008-10-08T10:47:51.030 に答える