كود للتحقق من التحديثات من API التصفح الآمن من Google
-
05-07-2019 - |
سؤال
في أجل التحقق من البيانات القادمة من التصفح الآمن من Google API ، يمكنك حساب رسالة مصادقة قانون (MAC) لكل التحديث. تعليمات للقيام بذلك (من Google) هي:
<اقتباس فقرة>ويتم احتساب MAC من دايجست MD5 على المعلومات التالية: client_key | فاصل | الجدول البيانات | فاصل | client_key. ال فاصل سلسلة: coolgoog: - هذا هو القولون تليها "coolgoog" متبوعا بنقطتين. النتيجة 128 بت MD5 هضم هو websafe قاعدة-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.
وأنا غير قادر على الحصول على المباراة. الرجاء إما نشير إلى أين أنا ذاهب خاطئ، أو مجرد كتابة بضعة أسطر من التعليمات البرمجية بايثون اللازمة للقيام بذلك!
و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 == \ ن'! = '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'