Domanda

Per verificare i dati provenienti dalla API di navigazione sicura di Google , puoi calcolare un codice di autenticazione dei messaggi (MAC) per ciascun aggiornamento. Le istruzioni per farlo (da Google) sono:

  

Il MAC è calcolato da un digest MD5   sulle seguenti informazioni:   client_key | Separatore | tavolo   Dati | Separatore | client_key. Il   il separatore è la stringa: coolgoog: -   questo è un colon seguito da "coolgoog"   seguito da due punti. Il risultato   Il digest MD5 a 128 bit è websafe base-64   codificati.

Esistono anche dati di esempio da verificare:

client key: "8eirwN1kTwCzgWA2HxTaRQ=="

Risposta:

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

Non riesco a trovare una corrispondenza. Per favore, indica dove sto sbagliando, o semplicemente scrivi un paio di righe di codice Python necessarie per farlo!

FWIW, mi aspettavo di poter fare qualcosa del genere:

>>> 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'

Ma come puoi vedere, 'qfb50mxpHrS82yTofPkcEg == \ n'! = 'dRalfTU + bXwUhlk0NCGJtQ =='.

È stato utile?

Soluzione

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

Altri suggerimenti

La risposta di Anders fornisce le informazioni necessarie, ma non è così chiaro: la chiave del client deve essere decodificata prima di essere combinata. (Nell'esempio sopra manca anche una nuova riga alla fine dei dati del tavolo finale).

Quindi il codice di lavoro è:

>>> 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'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top