Code, um zu überprüfen, Updates von dem Google Safe Browsing API
-
05-07-2019 - |
Frage
Um die Daten zu überprüfen, aus dem kommenden Google Safe Browsing API können Sie einen Message Authentication Code (MAC) für jedes Update berechnen. Die Anweisungen, dies zu tun (von Google) ist:
Der MAC wird von einem MD5 Digest berechnet über die folgenden Informationen: client_key | Separator | Tisch Daten | Separator | client_key. Das Abscheider ist der String: coolgoog: - das ist ein Doppelpunkt, gefolgt von „coolgoog“ mit einem Doppelpunkt. die daraus resultierende 128-Bit-MD5 Digest ist websafe Base-64 codiert wird.
Es gibt auch Beispieldaten gegen überprüfen:
client key: "8eirwN1kTwCzgWA2HxTaRQ=="
Antwort:
[goog-black-hash 1.180 update][mac=dRalfTU+bXwUhlk0NCGJtQ==]
+8070465bdf3b9c6ad6a89c32e8162ef1
+86fa593a025714f89d6bc8c9c5a191ac
+bbbd7247731cbb7ec1b3a5814ed4bc9d
*Note that there are tabs at the end of each line.
Ich bin nicht in der Lage ein Spiel zu bekommen. Bitte entweder zeigen, wo ich falsch bin, oder schreiben Sie einfach den paar Zeilen Python-Code notwendig, dies zu tun!
FWIW, ich voraussichtlich in der Lage sein, so etwas zu tun:
>>> 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'
Aber wie Sie sehen können, 'qfb50mxpHrS82yTofPkcEg == \ n'! = 'DRalfTU + bXwUhlk0NCGJtQ =='.
Lösung
c="8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')
Andere Tipps
Anders' Antwort gibt die notwendigen Informationen, ist aber nicht so klar: der Client-Schlüssel muss entschlüsselt werden, bevor sie kombiniert wird. (Das obige Beispiel wird auch eine neue Zeile am Ende der letzten Tabellendaten fehlt).
So ist der Arbeitscode lautet:
>>> 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'