Код для проверки обновлений API безопасного просмотра Google.

StackOverflow https://stackoverflow.com/questions/181994

Вопрос

Для проверки данных, поступающих от API безопасного просмотра Google, вы можете рассчитать код аутентификации сообщения (MAC) для каждого обновления.Инструкции для этого (от Google):

Mac вычисляется из дайджеста MD5 по следующей информации:client_key | Разделитель | Данные таблицы | Разделитель | client_key.Сепаратор - это строка: coolgoog:- Это толстая кишка, за которой следует «Coolgoog», за которой следует толстая кишка.Результирующий 128-битный Digest MD5-это кодируется веб-базовая 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, необходимых для этого!

Кстати, я ожидал, что смогу сделать что-то вроде этого:

>>> 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== ' != 'dRalfTU+bXwUhlk0NCGJtQ=='.

Это было полезно?

Решение

c="8eirwN1kTwCzgWA2HxTaRQ==".decode('base64')

Другие советы

Ответ Андерса дает необходимую информацию, но не так ясен:ключ клиента необходимо декодировать перед его объединением.(В приведенном выше примере также отсутствует новая строка в конце окончательных данных таблицы).

Итак, рабочий код:

>>> 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'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top