문제

에서 나오는 데이터를 확인하기 위해 Google Safe Browsing API, 각 업데이트에 대한 메시지 인증 코드 (MAC)를 계산할 수 있습니다. 이를 수행하는 지침 (Google에서)은 다음과 같습니다.

Mac은 다음 정보에 대한 MD5 다이제스트에서 계산됩니다. Client_Key | 분리기 | 테이블 데이터 | 분리기 | 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.

나는 경기를 할 수 없다. 내가 어디에서 잘못되고 있는지 지적하거나,이를 위해 필요한 파이썬 코드 몇 줄을 작성하십시오!

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

도움이 되었습니까?

해결책

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

다른 팁

Anders의 답변은 필요한 정보를 제공하지만 명확하지는 않습니다. 클라이언트 키는 결합되기 전에 해독해야합니다. (위의 예는 또한 최종 테이블 데이터의 끝에 Newline이 없습니다).

따라서 작업 코드는 다음과 같습니다.

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