2013-06-03 10 views
7

Sto provando a simulare il pulsante di google +.In Qualche parte del codice allo LINK, converte l'ID di sessione in Qualche tipo di hash. Quello che ho trovato è il nome dell'ID di sessione è SAPISID e il nome hash convertito è SAPISIDHASH , Qualcuno può dirmi quale parte del codice fa la parte hash. Qualsiasi aiuto sarà appreciated.i hanno trascorso 6 ore di fila, ancora nessun indizio :(Reverse engineering Javascript dietro il pulsante Google+

Per esempio VUOyLIU22fNPz2ko/AbGsxW03_WHoGjaJq is SAPISID e f17aa630b9b9a105dad437b0fedcafe429f6fca2 is SAPISIDHASH. In PHP ho provato tutti i tipi di partite hash..nothing.

+0

L'hash è di 40 caratteri di cifre esadecimali, quindi è probabilmente un [hash SHA-1] (http://en.wikipedia.org/wiki/SHA-1) di alcuni dati. Esattamente * quali * dati sono indovinati da nessuno ... – maerics

+0

Non solo è indovinata da nessuno ... ma significava che si facevano in quattro per assicurarsi che nessuno sarebbe in grado di indovinarlo. – djechlin

+0

ripemd160 anche 40 caratteri .. ho provato tutto l'hash .. il codice sostituisce qualche simbolo suppongo .. quindi ho bisogno di trovare cosa fa – user2449384

risposta

6

VITTORIA! Bene per me almeno = p il SAPISIDHASH che stavo cercando era quello nella console di api.Automazione per un lavoro piuttosto grande, totalmente legittimo

Anyways -> quello che ho trovato era uno SHA1 sull'attuale timestamp javascript millisecondi più il tuo attuale SAPISID dal tuo cookie più l'origine del dominio

In o der per la mia richiesta di lavorare ho dovuto includere le seguenti intestazioni nella richiesta Authorization:SAPISIDHASH 1439879298823_<hidden sha1 hash value> e X-Origin:https://console.developers.google.com

La prima intestazione Suppongo che indica al server il tuo timestamp e il tuo valore SHA1. Il secondo (interrompe se non lo includi) indica l'origine da utilizzare nell'algoritmo sha1.

Ho trovato l'algoritmo scavando attraverso e il debug l'inferno fuori di tonnellate di minified js NOTA ci sono spazi allegati tra i valori

Il codice pseudo è basiclly>

sha1(new Date().getTime() + " " + SAPISID + " " + origin)

Questo è almeno il modo in cui ho ottenuto il mio valore SAPISIDHASH nel mio caso d'uso qui nel 2015 (pochi anni dopo lo so) ... diverso dal tuo ma forse aiuterò qualche altro giovane hacker là fuori un giorno

+0

Grazie amico! Sei il migliore. –

2

Tutti i crediti di Dave Thomas.

Voglio solo chiarire che per la X-Origin, o di origine, non si comprendono "X-Origin:" oppure "Origine:"

Ecco un esempio:

public class SAPISIDHASH { 

    public static void main(String [] args) { 

     String sapisid = "b4qUZKO4943exo9W/AmP2OAZLWGDwTsuh1"; 
     String origin = "https://hangouts.google.com"; 
     String sapisidhash = "1447033700279" + " " + sapisid + " " + origin; 
     System.out.println("SAPISID:\n"+ hashString(sapisidhash)); 
     System.out.println("Expecting:"); 
     System.out.println("38cb670a2eaa2aca37edf07293150865121275cd"); 

    } 

    private static String hashString(String password) 
    { 
     String sha1 = ""; 
     try 
     { 
      MessageDigest crypt = MessageDigest.getInstance("SHA-1"); 
      crypt.reset(); 
      crypt.update(password.getBytes("UTF-8")); 
      sha1 = byteToHex(crypt.digest()); 
     } 
     catch(NoSuchAlgorithmException e) 
     { 
      e.printStackTrace(); 
     } 
     catch(UnsupportedEncodingException e) 
     { 
      e.printStackTrace(); 
     } 
     return sha1; 
    } 

    private static String byteToHex(final byte[] hash) 
    { 
     Formatter formatter = new Formatter(); 
     for (byte b : hash) 
     { 
      formatter.format("%02x", b); 
     } 
     String result = formatter.toString(); 
     formatter.close(); 
     return result; 
    } 
} 

fonte per SHA1 in Java: Java String to SHA1

Problemi correlati