Bitcoin Forum
September 21, 2019, 12:12:34 PM *
News: If you like a topic and you see an orange "bump" link, click it. More info.
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Come ritrovare parola mancante  (Read 420 times)
dende93
Member
**
Offline Offline

Activity: 63
Merit: 16


View Profile
May 26, 2019, 09:40:37 AM
 #1

Ciao a tutti, ho fatto un errore stupido ossia, ho inviato da un paper wallet 1 LTC ad un mio indirizzo su block.io, il problema è che non mi ricordavo che su questo benedetto sito, oltre la password per accedere ti viene chiesto un pin quando devi fare transazioni, io non mi ricordo neanche di averlo creato quel pin ma vabè.
Il pin lo posso cambiare a patto di avere le 12 paroline magiche, ci ho provato ma con sorpresa noto che (stupido che sono) ne ho scritte solo 11.

Quindi il mio quesito è: c'è qualche modo per recuperare la parola mancante?
Ricompenserò chiunque riesca a farmi riavere i miei fondi.

“War is Mass Murder, Conscription is Slavery, Taxation is Robbery.” Murray N. Rothbard
1569067954
Hero Member
*
Offline Offline

Posts: 1569067954

View Profile Personal Message (Offline)

Ignore
1569067954
Reply with quote  #2

1569067954
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1569067954
Hero Member
*
Offline Offline

Posts: 1569067954

View Profile Personal Message (Offline)

Ignore
1569067954
Reply with quote  #2

1569067954
Report to moderator
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
May 26, 2019, 10:32:37 AM
Last edit: May 27, 2019, 05:32:13 AM by Piggy
 #2

Ciao a tutti, ho fatto un errore stupido ossia, ho inviato da un paper wallet 1 LTC ad un mio indirizzo su block.io, il problema è che non mi ricordavo che su questo benedetto sito, oltre la password per accedere ti viene chiesto un pin quando devi fare transazioni, io non mi ricordo neanche di averlo creato quel pin ma vabè.
Il pin lo posso cambiare a patto di avere le 12 paroline magiche, ci ho provato ma con sorpresa noto che (stupido che sono) ne ho scritte solo 11.

Quindi il mio quesito è: c'è qualche modo per recuperare la parola mancante?
Ricompenserò chiunque riesca a farmi riavere i miei fondi.

Non credo sia possibile, se si fosse trattato di cifre più alte e sapessi esattamente in qualche posizione si trovasse la parola mancante un tentativo lo si sarebbe anche potuto fare, usando qualche vocabolario e controllando se salta fuori il tuo indirizzo e quindi chiave privata annessa.

Il problema qui è che la parola mancante può trovarsi in qualsiasi posizione visto che copiando te ne sei persa una chissa dove.

edit: Leggo solo ora che il PIN è indispensabile quindi non credo sia nemmeno possibile far girare qualche programma per indovinare la parola, quindi le 12 parole non bastano da sole per avere accesso al tuo account (anche se non mi è chiaro come, magari è solo un ostacolo "artificiale" che mettono loro).

Quote
Do not share your secrets.
Your Secret PIN is the key that controls your coins, and your Secret Mnemonic is the only key to reset your Secret PIN in an emergency. You should never, ever share your Secret PIN and Secret Mnemonic with anyone.
dende93
Member
**
Offline Offline

Activity: 63
Merit: 16


View Profile
May 27, 2019, 11:28:42 AM
 #3

Aspetterò la prossima bull run e allora mi converrà provare magari! Va be non è un grosso problema perchè quel LTC lo pagai veramente poco, però mi girano comunque.
E si non so quale fosse la posizione della parola mancante, il che rende la cosa più difficile.
Il pin serve perchè a quanto ho capito è una sorta di multisig con le 12 parole + il pin. Comunque una volta trovate le parole il pin lo potrei cambiare.
Spero che il sito regga qualche anno ancora  Grin

“War is Mass Murder, Conscription is Slavery, Taxation is Robbery.” Murray N. Rothbard
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
May 28, 2019, 04:49:24 AM
 #4

Aspetterò la prossima bull run e allora mi converrà provare magari! Va be non è un grosso problema perchè quel LTC lo pagai veramente poco, però mi girano comunque.
E si non so quale fosse la posizione della parola mancante, il che rende la cosa più difficile.
Il pin serve perchè a quanto ho capito è una sorta di multisig con le 12 parole + il pin. Comunque una volta trovate le parole il pin lo potrei cambiare.
Spero che il sito regga qualche anno ancora  Grin

Capisco, quindi se non altro puoi sempre utilizzare un programma esterno per cercare la parola mancante (rimane sempre complicata la cosa), senza dover passare dalla loro interfaccia web fino a quando non la trovi.

Per lo meno no hai grosse cifre in ballo. Ricordati sempre di fare qualche test per verificare che tu possa accedere all'indirizzo prima di cancellare le parole e metterci fondi dentro, che sia hardware o paper wallet Wink
LordStapy
Member
**
Offline Offline

Activity: 98
Merit: 71


View Profile
May 28, 2019, 06:43:49 AM
Last edit: May 28, 2019, 11:50:28 AM by LordStapy
Merited by Micio (4), Piggy (1)
 #5

In realtà ritrovare la parola potrebbe non essere così complicato, mancano alcune incognite all'equazione per poterlo dire con certezza. Inizio chiedendo qualche info in più:
  • quelle 12 parole dove e come vanno utilizzate? tramite API/sito/app/altro? Ho provato a dare un'occhiata al sito e alla documentazione delle API, ma essendo sveglio da ieri diciamo che non sono lucidissimo
  • senza dirci le parole in tuo possesso, hai provato a controllare se fanno tutte parte di una wordlist bip39? (link)

Tralasciando il primo punto per cui non ho abbastanza informazioni (ancora), pensiamo un secondo alla parola mancante.
Se il seed usa bip39: a te manca una parola che può andare in 12 diverse posizioni e le wordlist hanno 2048 parole, quindi 12*2048 = 24576 combinazioni di cui una dovrebbe essere quella giusta. In realtà potrebbero essere di meno, ma sono stanco per mettermi a cercare e quindi ci accontenteremo del valore massimo  Smiley

Incrociando le dita il seed è un bip39 e ora hai solo "qualche" prova da fare, c'è da capire come farle...
A mano non esiste, è ridicolo anche solo pensarlo (per il valore attuale ovviamente), ma uno script potrebbe fare al caso tuo: sono più veloci dell'uomo e non devono dormire, però ci sono varie possibilità:
  • puoi farlo in locale: scenario migliore anche se improbabile per quello che ho capito
  • tramite API: c'è da vedere come funzionano e se ci sono dei limiti, ma direi comunque fattibile
  • tramite sito: anche qua bisogna capire come ed eventuali limiti, l'automazione di un browser si fa, ma ci vuole un po' di sbattimento in più
  • tramite app: qua non saprei dove sbattere la testa sinceramente :/

BTC: 1Lord4dwWriXw7T8QoyaNmamYWup8g76Tu
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
May 28, 2019, 08:46:51 AM
 #6


Tralasciando il primo punto per cui non ho abbastanza informazioni (ancora), pensiamo un secondo alla parola mancante.
Se il seed usa bip39: a te manca una parola che può andare in 12 diverse posizioni e le wordlist hanno 2048 parole, quindi 12*48 = 24576 combinazioni di cui una dovrebbe essere quella giusta. In realtà potrebbero essere di meno, ma sono stanco per mettermi a cercare e quindi ci accontenteremo del valore massimo  Smiley


effettivamente si tratta di "solo" di 2048 parole direi che e' fattibile, le combinazioni possibili sono quelle che hai scritto.

Bisognerebbe prima di tutto provare a creare un nuovo account su block.io ed usare le 12 parole qui per esempio https://iancoleman.io/bip39/ per riuscire a trovare lo stesso indirizzo. Una volta verificato, testare tutte le posizioni per la parola mancante con le stesse impostazioni non dovrebbe essere un problema.

duesoldi
Hero Member
*****
Offline Offline

Activity: 882
Merit: 567


View Profile
May 28, 2019, 10:51:17 AM
 #7


effettivamente si tratta di "solo" di 2048 parole direi che e' fattibile, le combinazioni possibili sono quelle che hai scritto.

Bisognerebbe prima di tutto provare a creare un nuovo account su block.io ed usare le 12 parole qui per esempio https://iancoleman.io/bip39/ per riuscire a trovare lo stesso indirizzo. Una volta verificato, testare tutte le posizioni per la parola mancante con le stesse impostazioni non dovrebbe essere un problema.



Tendenzialmente escluderei dalle 2048 le 11 che già conosce, non penso che una parola possa essere ripetuta, dico bene ?
Così abbiamo già abbassato drasticamente il numero   Grin

Per fare le prove: se si potesse in locale ok (ma non è questo il caso), tuttavia facendo le prove da sito web o via API  mi stupirei se consentissero un brute force senza introdurre dei ritardi dopo 3 o 5 tentativi (un po' come avviene con Unix/Linux)  e questo (cioè il tempo di attesa dopo n tentativi) temo diventi il vero ostacolo dell'andare a tentativi. Sbaglio ?


Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
May 28, 2019, 11:07:04 AM
Merited by Micio (3)
 #8

Tendenzialmente escluderei dalle 2048 le 11 che già conosce, non penso che una parola possa essere ripetuta, dico bene ?
Così abbiamo già abbassato drasticamente il numero   Grin

Per fare le prove: se si potesse in locale ok (ma non è questo il caso), tuttavia facendo le prove da sito web o via API  mi stupirei se consentissero un brute force senza introdurre dei ritardi dopo 3 o 5 tentativi (un po' come avviene con Unix/Linux)  e questo (cioè il tempo di attesa dopo n tentativi) temo diventi il vero ostacolo dell'andare a tentativi. Sbaglio ?




Dipende da come hanno implementato loro il passaggio da frase mnemonica a chiave privata, se ci hanno infilato qualche altro passaggio intermedio allora bisogna per forza fare i tentativi attraverso la loro interfaccia. Ad esempio oltre alle parole puoi usare una password in fase di generazione.
Se invece le parole possono essere usate direttamente per riottenere la chiave privata con tool o programmi esterni allora quel numero di tentativi per trovare la parola giusta sembrerebbe abbastanza semplice. Comunque non conosco molto bene questi sistemi.  Undecided

Potremmo comunque fare un esperimento, ho creato un account su block.io, le parole segrete sono:

bless wage during setup review cupboard symbol lake release coin live champion

il pin non ci interessa

Questi sono gli indirizzi ottenuti:

BTC: 3EY5TTmLDm2oRMudVPPwbUX3dHdvtVWeWa
LTC: 37WXhx8oJAP39S1WMeyWLqe2L9ifkGFBmo

Or bisogna provare a vedere se si riesce ad ottenere quegli indirizzi usando quelle parole.  Grin
LordStapy
Member
**
Offline Offline

Activity: 98
Merit: 71


View Profile
May 28, 2019, 11:57:33 AM
Merited by Piggy (1), fillippone (1)
 #9

le combinazioni possibili sono quelle che hai scritto.

L'ultima parola del seed è un checksum, per questo dicevo che potrebbero essere di meno (404 voglia di calcolare not found)


Tendenzialmente escluderei dalle 2048 le 11 che già conosce, non penso che una parola possa essere ripetuta, dico bene ?
Così abbiamo già abbassato drasticamente il numero   Grin

In realtà non c'è nulla che vieti la ripetizione di una parola all'interno di un seed, non ricordo in che occasione ma l'ho già visto succedere. Anzi, magari è stato proprio un doppione a fargli perdere una parola e diventa un attimo provare 132 combinazioni!  Grin
Leggendo qua, applicando il paradosso del compleanno al bip39 si può anche calcolare la probabilità di avere un doppione, per 12 parole la probabilità è del ~3%


bless wage during setup review cupboard symbol lake release coin live champion

il pin non ci interessa

Questi sono gli indirizzi ottenuti:

BTC: 3EY5TTmLDm2oRMudVPPwbUX3dHdvtVWeWa
LTC: 37WXhx8oJAP39S1WMeyWLqe2L9ifkGFBmo

Or bisogna provare a vedere se si riesce ad ottenere quegli indirizzi usando quelle parole.  Grin

Le parole le hai inserite tu o te le ha date il sito?
Gli indirizzi di block.io sono dei multisig, senza le loro chiavi pubbliche non c'è modo di fare delle prove  Undecided

BTC: 1Lord4dwWriXw7T8QoyaNmamYWup8g76Tu
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
May 29, 2019, 05:13:17 AM
 #10

Le parole le hai inserite tu o te le ha date il sito?
Gli indirizzi di block.io sono dei multisig, senza le loro chiavi pubbliche non c'è modo di fare delle prove  Undecided

Le parole sono quelle del sito, te le da dopo l'iscrizione. Quindi temo senza la loro interfaccia ci sia ben poco da fare, a meno che le parole vengano utilizzate per generare gli indirizzi o almeno uno dei due indirizzi che controllano quello multisig.

dende93 se LTC raggiunge $10k può valere la pena scrivere un programma che manda le richieste direttamente al sito, in automatico, fino a quando non trova quella giusta, nel caso fammi sapere che ti do una mano  Grin
CryptoReggae
Member
**
Offline Offline

Activity: 181
Merit: 41


View Profile
May 29, 2019, 08:26:33 AM
 #11

Basterebbe un bot che vada in automatico ad inserire la parola mancante presa dal dizionario, per me non sarebbe un problema, ma come si dice in questi casi "la spesa non vale l'impresa".
jack0m
Legendary
*
Offline Offline

Activity: 1932
Merit: 1089


View Profile
May 29, 2019, 09:45:26 AM
 #12

Le parole le hai inserite tu o te le ha date il sito?
Gli indirizzi di block.io sono dei multisig, senza le loro chiavi pubbliche non c'è modo di fare delle prove  Undecided

Le parole sono quelle del sito, te le da dopo l'iscrizione. Quindi temo senza la loro interfaccia ci sia ben poco da fare, a meno che le parole vengano utilizzate per generare gli indirizzi o almeno uno dei due indirizzi che controllano quello multisig.

dende93 se LTC raggiunge $10k può valere la pena scrivere un programma che manda le richieste direttamente al sito, in automatico, fino a quando non trova quella giusta, nel caso fammi sapere che ti do una mano  Grin

si potrebbe sfruttare qualche utility già esistente che fa fuzzing sul sito, tipo burp ad esempio, dandogli in pasto una wordlist con tutte le combinazioni da provare.
Questo almeno in teoria, perché mi aspetto che se il sito ha delle policy decenti di sicurezza, dopo un certo numero di tentativi sbagliati faccia scattare un blocco temporaneo dell'account o metta un captcha nella pagina

Money is a hoax. Debt is slavery. Consumerism is toxic.
alexrossi
Legendary
*
Offline Offline

Activity: 2170
Merit: 1067


KnowNoBorders.io


View Profile WWW
May 31, 2019, 05:35:07 PM
 #13

Secondo me riesci a recupeare l'LTC solo se la parola mancante era all'inizio o alla fine del seed, altrimenti davvero non ha senso sbattere la testa

   ▄▄██████▄▄
  ████████████
███▄▄
 ██████████████▀▀▀██▄
████████████████   ▀██▄
████████████████     ▀██
██████████████       ██▌
██████████████        ▐██
██▌▀▀██████▀▀         ▐██
▐██                   ██▌
 ██▄                 ▄██
  ▀██▄             ▄██▀
    ▀██▄▄▄     ▄▄▄██▀
      ▀▀█████████▀▀
MAIN CLUB
PARTNER of
W A T F O R D  FC
Industry Leading Crypto Sportsbook
|
SPECIAL
WATFORD FC
PROMOTIONS
|
UNIQUE
CONTENT &
GIVEAWAYS
|
▄▄█████████▄▄
▄█████████████████▄
▄██████████▀▀▀▀███████▄
▄█████████▀     ████████▄
▄██████████   ████████████▄
█████████        ██████████
█████████▄▄   ▄▄███████████
███████████   █████████████
▀██████████   ████████████▀
▀█████████   ███████████▀
▀████████▄▄▄██████████▀
▀█████████████████▀
▀▀█████████▀▀
.PLAY  HERE.
[/t
duesoldi
Hero Member
*****
Offline Offline

Activity: 882
Merit: 567


View Profile
May 31, 2019, 08:07:36 PM
 #14

Secondo me riesci a recupeare l'LTC solo se la parola mancante era all'inizio o alla fine del seed, altrimenti davvero non ha senso sbattere la testa

Perché ? cosa cambia tra l'inizio/fine ed una qualsiasi posizione intermedia in termini probabilistici ?   Huh
(ovviamente a parità di numero di posizioni da provare, cioè che ne so la terza e la quarta al posto della prima e dell'ultima)

jack0m
Legendary
*
Offline Offline

Activity: 1932
Merit: 1089


View Profile
May 31, 2019, 09:31:41 PM
Merited by Piggy (1)
 #15

Per curiosità mi sono registrato e ho fatto una prova di modifica del PIN inserendo un mnemonic sbagliato. Sembra che ci sia una buona notizia: la validazione avviene lato client, senza inviare nessuna richiesta al server. Quindi in teoria si potrebbe prendere il javascript della pagina e fare un brute-force in locale. Immagino però che il codice sia offuscato, e al momento non ho proprio tempo di verificare.

Money is a hoax. Debt is slavery. Consumerism is toxic.
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
June 01, 2019, 04:12:31 AM
 #16

Per curiosità mi sono registrato e ho fatto una prova di modifica del PIN inserendo un mnemonic sbagliato. Sembra che ci sia una buona notizia: la validazione avviene lato client, senza inviare nessuna richiesta al server. Quindi in teoria si potrebbe prendere il javascript della pagina e fare un brute-force in locale. Immagino però che il codice sia offuscato, e al momento non ho proprio tempo di verificare.

Interessante, magari fa solo una verifica sull'ordine delle parole usando il checksum. Non ho tempo nemmeno io di controllare prima di lunedì, ma dovrebbe essere possibile usare il codice così com'è per trovare la parola anche se offuscato.
jack0m
Legendary
*
Offline Offline

Activity: 1932
Merit: 1089


View Profile
June 01, 2019, 10:36:27 AM
Merited by duesoldi (1), Piggy (1)
 #17

Eccolo qua lo script: non è neanche offuscato!

https://block.io/js/secure/secrets_worker.js?v=7

Code:
// import all the cryptojs and bitcoinjs goodness we need
importScripts('/js/secure/crypto-js.min.js');
importScripts('/js/secure/bitcoinjs-3.3.2-custom.js');
importScripts('/js/secure/bip39-min.js');
importScripts('/js/secure/secrets_helper.js');

function removeJunkSpaces(str) {
    // trim()s the string, and removes all but a single spaces from in between words

    var nSplits = str.split(' ');
    var iData = nSplits.pop();
    var mSplits = [];
   
    while (iData != undefined) {
   
if (iData.length > 0) {
            mSplits.push(iData);
}

iData = nSplits.pop();

    }

    str = mSplits.reverse().join(' ');

    return str;
}

function changeSecrets(pin_set, curPin, mnemonic, newPin, newPinConfirm, secrets, pubkeys, csrf_token) {
    // inputs: does this user's secret exist?, array of API Keys

    // notify that we're starting
    postMessage({message: 'Initiating PIN change...', mType: 'success', layout: 'bottomRight'});
   
    // validate the new secret pin
    mnemonicSeed = pinToAesKey(newPin)['mnemonicSeed'];

//    console.log(mnemonicSeed);
    newMnemonic = BIP39.entropyToMnemonic(mnemonicSeed);
//    console.log(BIP39.entropyToMnemonic(mnemonicSeed));
//    console.log(BIP39.mnemonicToEntropy(BIP39.entropyToMnemonic(mnemonicSeed)));
    //    console.log(CryptoJS.enc.Hex.parse(BIP39.mnemonicToEntropy(mnemonic)).toString(CryptoJS.enc.Utf8));
   
    if (newPin != newPinConfirm) { postMessage({message: 'New PINs do not match!', mType: 'error'}); return false; }
    if (newPin.length < 8) { postMessage({message: "New PIN is too short, must be at least 8 characters long.", mType: 'error'}); return false; }
    if (!isAlphaNumeric(newPin)) { postMessage({message: "New PIN is not alpha-numeric. PINs can only contain letters, and digits. PINs are case-sensitive.", mType: 'error'}); return false; }
   
    signatures = new Array();
    data_to_sign = CryptoJS.SHA256(csrf_token).toString(CryptoJS.enc.Hex); // the sha256 hash of our csrf_token will be signed whenever changing secrets on block.io
   
//    console.log("CSRF Token: "+csrf_token);
//    console.log("Data to Sign: "+data_to_sign);
   
    seeds = new Array();

    // parse the scripts from the arguments
    secrets = JSON.parse(secrets);
    pubkeys = JSON.parse(pubkeys);
   
    // validate the old secret pin if pin_set == true
    if (pin_set) {
// validate existing PIN for all networks

postMessage({message: 'Decrypting Secrets with Current PIN...', mType: 'warning', layout: 'bottomRight'});

if (mnemonic.length > 0) {
    try {

// sanitize the mnemonic first
mnemonic = removeJunkSpaces(mnemonic);
// postMessage({message: 'True Mnemonic: ' + mnemonic, mType: 'warning', layout: 'bottomRight'});

curPin = BIP39.mnemonicToEntropy(mnemonic);
    } catch (err) {
postMessage({message: 'Invalid Mnemonic provided.', mType: 'error', layout: 'topCenter'});
return false;
    }
}

for (var network in secrets) {
    // validate each secret
    try {
seeds[network] = decrypt(secrets[network], curPin, (mnemonic.length > 0));

// test the decrypted seed
key = bitcoin.ECPair.fromPassphrase(seeds[network]);
pubkey = key.getPublicKeyBuffer().toString('hex');
if (pubkeys[network].length > 0 && pubkeys[network] != pubkey) { postMessage({message: "Invalid PIN provided.", mType: 'error'}); return false; } //pubkey MISMATCH: "+pubkey+" vs. "+pubkeys[network]); }

    }
    catch (err) {
// an exception occurred, assume the decryption did not succeed
postMessage({message: 'PIN is incorrect.', mType: 'error'});
return false;
    }
}

    }
    else {
// generate new seeds, we're first timers

postMessage({message: 'Generating Secrets...', mType: 'warning', layout: 'bottomRight'});

for (var network in secrets) { var newSeed = CryptoJS.lib.WordArray.random(512/8).toString(CryptoJS.enc.Hex); seeds[network] = newSeed; }
    }
   
    //    decrypt("P5AN/N+3zeG2LSbDuDvlQWk4d7QCKFyXPISTREBZTkdad6VTs/xxxSoxsX7hMqG2", "alpha");
   
    postMessage({message: 'Encrypting Secrets with New PIN...', mType: 'warning', layout: 'bottomRight'});

    for (var network in secrets) {
// generate seed strings for each network
// encrypt them using the new PIN

key_pre = bitcoin.ECPair.fromPassphrase(seeds[network]);

encryptedB64 = encrypt(seeds[network], newPin);
encryptedHex = CryptoJS.enc.Base64.parse(encryptedB64).toString(CryptoJS.enc.Hex);

// console.log("seed: "+seeds[network]);
// console.log("encrypted: "+encryptedB64);

key = bitcoin.ECPair.fromPassphrase(seeds[network]);
pubkey = key.getPublicKeyBuffer().toString('hex');
// if (pubkeys[network].length > 0 && pubkeys[network] === pubkey) { console.log("pubkey match confirmed for "+pubkey); }
if (pubkeys[network].length > 0 && pubkeys[network] != pubkey) { postMessage({message: "Invalid PIN provided.", mType: 'error'}); return false; } //pubkey MISMATCH: "+pubkey+" vs. "+pubkeys[network]); }

// update the encrypted secrets and pubkeys
secrets[network] = encryptedB64;
pubkeys[network] = pubkey;

// sign the encryptedB64 string with this pubkey
new_signature = key.signHex(data_to_sign);
signatures[network] = new_signature

// console.log("signature: " + new_signature);

    }
   
    // create the post data
    var postData = "";
   
    for (var key in secrets) {

if (postData.length > 1) {
    postData += "&"
}

postData += "passphrases["+key+"]="+ encodeURIComponent(secrets[key]);
postData += "&signatures["+key+"]="+ encodeURIComponent(signatures[key]);
postData += "&pubkeys["+key+"]="+ encodeURIComponent(pubkeys[key]);
    }
   
//    console.log("Post Data: " + postData);
   
    //    console.log(JSON.stringify(secrets));
    //    console.log(pubkeys);
    //    console.log(signatures);
   
    // tell the master thread to save this data at Block.io

    postMessage({message: postData, mType: 'save', csrf_token: csrf_token, mnemonic: newMnemonic, pin_set: pin_set});

}

self.addEventListener('message', function(e) {
    var data = e.data;
    changeSecrets(data.pin_set, data.pin_current, data.mnemonic, data.pin_new, data.pin_new_confirm, data.secrets, data.pubkeys, data.csrf_token);
}, false);

//console.log("Worker loaded!");

Direi che con poche linee di codice, si cracca con brute-force.

Money is a hoax. Debt is slavery. Consumerism is toxic.
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
June 01, 2019, 01:00:23 PM
 #18

Eccolo qua lo script: non è neanche offuscato!

Direi che con poche linee di codice, si cracca con brute-force.

Bravo, magari tornerà utile anche a qualcun'altro in futuro, nel caso dovessero offuscare o cambiare qualcosa nel codice.

Quelle che usa li sembrano librerie standard.
jack0m
Legendary
*
Offline Offline

Activity: 1932
Merit: 1089


View Profile
June 01, 2019, 03:54:23 PM
Last edit: June 01, 2019, 04:37:45 PM by jack0m
Merited by Micio (5), LordStapy (1)
 #19

Il sorgente da modificare è questo:

https://block.io/js/secure/secrets.js

Sto facendo un test in Chrome con il codice modificato così (per semplificare il test, le combinazioni cambiano solo l'ultima word, ma si può generalizzare con un ciclo esterno):

ma vaffanculo l'array è troppo lungo e mi sega il codice Angry
va bè, si copia da qui: https://raw.githubusercontent.com/bitcoinjs/bip39/master/src/wordlists/english.json

Code:
// secrets

var worker = new Worker("/js/secure/secrets_worker.js?v=7");

function goChanger(data) {
    // make the worker change the secret pin
    $('#changeSecretButton').addClass('disabled');

    $('#spinlabel').addClass('hidden');
    $('#spinner').removeClass('hidden');
    $('#spinner').addClass('fa-spin');

    var wlist = [
    "abandon",
    "ability",
    "able",
    "about",
    "above",
    "absent",
    "absorb",
    "abstract",
    "absurd",
    "abuse",
    "access",
    "accident",
    "account",
    "accuse",
    "achieve",
    "acid",
    "acoustic",
    "acquire",
    "across",
    "act",
    "action",
    "actor",
    "actress",
    "actual",
    "adapt",
    "add",
    "addict",
    "address",
    "adjust",
    "admit",
    "adult",
    "advance",
    "advice",
    "aerobic",
    "affair",
    "afford",
    "afraid",
    "again",
    "age",
    "agent",
    "agree",
    "ahead",
    "aim",
    "air",
    "airport",
    "aisle",
    "alarm",
    "album",
    "alcohol",
    "alert",
    "alien",
    "all",
    "alley",
    "allow",
    "almost",
    "alone",
    "alpha",
    "already",
    "also",
    "alter",
    "always",
    "amateur",
    "amazing",
    "among",
    "amount",
    "amused",
    "analyst",
    "anchor",
    "ancient",
    "anger",
    "angle",
    "angry",
    "animal",
    "ankle",
    "announce",
    "annual",
    "another",
    "answer",
    "antenna",
    "antique",
    "anxiety",
    "any",
    "apart",
    "apology",
    "appear",
    "apple",
    "approve",
    "april",
    "arch",
    "arctic",
    "area",
    "arena",
    "argue",
    "arm",
    "armed",
    "armor",
    "army",
    "around",
    "arrange",
    "arrest",
    "arrive",
    "arrow",
    "art",
    "artefact",
    "artist",
    "artwork",
    "ask",
    "aspect",
    "assault",
    "asset",
    "assist",
    "assume",
    "asthma",
    "athlete",
    "atom",
    "attack",
    "attend",
    "attitude",
    "attract",
    "auction",
    "audit",
    "august",
    "aunt",
    "author",
    "auto",
    "autumn",
    "average",
    "avocado",
    "avoid",
    "awake",
    "aware",
    "away",
    "awesome",
    "awful",
    "awkward",
    "axis",
    "baby",
    "bachelor",
    "bacon",
    "badge",
    "bag",
    "balance",
    "balcony",
    "ball",
    "bamboo",
    "banana",
    "banner",
    "bar",
    "barely",
    "bargain",
    "barrel",
    "base",
    "basic",
    "basket",
    "battle",
    "beach",
    "bean",
    "beauty",
    "because",
    "become",
    "beef",
    "before",
    "begin",
    "behave",
    "behind",
    "believe",
    "below",
    "belt",
    "bench",
    "benefit",
    "best",
    "betray",
    "better",
    "between",
    "beyond",
    "bicycle",
    "bid",
    "bike",
    "bind",
    "biology",
    "bird",
    "birth",
    "bitter",
    "black",
    "blade",
    "blame",
    "blanket",
    "blast",
    "bleak",
    "bless",
    "blind",
    "blood",
    "blossom",
    "blouse",
    "blue",
    "blur",
    "blush",
    "board",
    "boat",
    "body",
    "boil",
    "bomb",
    "bone",
    "bonus",
    "book",
    "boost",
    "border",
    "boring",
    "borrow",
    "boss",
    "bottom",
    "bounce",
    "box",
    "boy",
    "bracket",
    "brain",
    "brand",
    "brass",
    "brave",
    "bread",
    "breeze",
    "brick",
    "bridge",
    "brief",
    "bright",
    "bring",
    "brisk",
    "broccoli",
    "broken",
    "bronze",
    "broom",
    "brother",
    "brown",
    "brush",
    "bubble",
    "buddy",
    "budget",
    "buffalo",
    "build",
    "bulb",
    "bulk",
    "bullet",
    "bundle",
    "bunker",
    "burden",
    "burger",
    "burst",
    "bus",
    "business",
    "busy",
    "butter",
    "buyer",
    "buzz",
    "cabbage",
    "cabin",
    "cable",
    "cactus",
    "cage",
    "cake",
    "call",
    "calm",
    "camera",
    "camp",
    "can",
    "canal",
    "cancel",
    "candy",
    "cannon",
    "canoe",
    "canvas",
    "canyon",
    "capable",
    "capital",
    "captain",
    "car",
    "carbon",
    "card",
    "cargo",
    "carpet",
    "carry",
    "cart",
    "case",
    "cash",
    "casino",
    "castle",
    "casual",
    "cat",
    "catalog",
    "catch",
    "category",
    "cattle",
    "caught",
    "cause",
    "caution",
    "cave",
    "ceiling",
    "celery",
    "cement",
    "census",
    "century",
    "cereal",
    "certain",
    "chair",
    "chalk",
    "champion",
    "change",
    "chaos",
    "chapter",
    "charge",
    "chase",
    "chat",
    "cheap",
    "check",
    "cheese",
    "chef",
    "cherry",
    "chest",
    "chicken",
    "chief",
    "child",
    "chimney",
    "choice",
    "choose",
    "chronic",
    "chuckle",
    "chunk",
    "churn",
    "cigar",
    "cinnamon",
    "circle",
    "citizen",
    "city",
    "civil",
    "claim",
    "clap",
    "clarify",
    "claw",
    "clay",
    "clean",
    "clerk",
    "clever",
    "click",
    "client",
    "cliff",
    "climb",
    "clinic",
    "clip",
    "clock",
    "clog",
    "close",
    "cloth",
    "cloud",
    "clown",
    "club",
    "clump",
    "cluster",
    "clutch",
    "coach",
    "coast",
    "coconut",
    "code",
    "coffee",
    "coil",
    "coin",
    "collect",
    "color",
    "column",
    "combine",
    "come",
    "comfort",
    "comic",
    "common",
    "company",
    "concert",
    "conduct",
    "confirm",
    "congress",
    "connect",
    "consider",
    "control",
    "convince",
    "cook",
    "cool",
    "copper",
    "copy",
    "coral",
    "core",
    "corn",
    "correct",
    "cost",
    "cotton",
    "couch",
    "country",
    "couple",
    "course",
    "cousin",
    "cover",
    "coyote",
    "crack",
    "cradle",
    "craft",
    "cram",
    "crane",
    "crash",
    "crater",
    "crawl",
    "crazy",
    "cream",
    "credit",
    "creek",
    "crew",
    "cricket",
    "crime",
    "crisp",
    "critic",
    "crop",
    "cross",
    "crouch",
    "crowd",
    "crucial",
    "cruel",
    "cruise",
    "crumble",
    "crunch",
    "crush",
    "cry",
    "crystal",
    "cube",
    "culture",
    "cup",
    "cupboard",
    "curious",
    "current",
    "curtain",
    "curve",
    "cushion",
    "custom",
    "cute",
    "cycle",
    "dad",
    "damage",
    "damp",
    "dance",
    "danger",
    "daring",
    "dash",
    "daughter",
    "dawn",
    "day",
    "deal",
    "debate",
    "debris",
    "decade",
    "december",
    "decide",
    "decline",
    "decorate",
    "decrease",
    "deer",
    "defense",
    "define",
    "defy",
    "degree",
    "delay",
    "deliver",
    "demand",
    "demise",
    "denial",
    "dentist",
    "deny",
    "depart",
    "depend",
    "deposit",
    "depth",
    "deputy",
    "derive",
    "describe",
    "desert",
    "design",
    "desk",
    "despair",
    "destroy",
    "detail",
    "detect",
    "develop",
    "device",
    "devote",
    "diagram",
    "dial",
    "diamond",
    "diary",
    "dice",
    "diesel",
    "diet",
    "differ",
    "digital",
    "dignity",
    "dilemma",
    "dinner",
    "dinosaur",
    "direct",
    "dirt",
    "disagree",
    "discover",
    "disease",
    "dish",
    "dismiss",
    "disorder",
    "display",
    "distance",
    "divert",
    "divide",
    "divorce",
    "dizzy",
    "doctor",
    "document",
    "dog",
    "doll",
    "dolphin",
    "domain",
    "donate",
    "donkey",
    "donor",
    "door",
    "dose",
    "double",
    "dove",
    "draft",
    "dragon",
    "drama",
    "drastic",
    "draw",
    "dream",
    "dress",
    "drift",
    "drill",
    "drink",
    "drip",
    "drive",
    "drop",
    "drum",
    "dry",
    "duck",
    "dumb",
    "dune",
    "during",
    "dust",
    "dutch",
    "duty",
    "dwarf",
    "dynamic",
    "eager",
    "eagle",
    "early",
    "earn",
    "earth",
    "easily",
    "east",
    "easy",
    "echo",
    "ecology",
    "economy",
    "edge",
    "edit",
    "educate",
    "effort",
    "egg",
    "eight",
    "either",
    "elbow",
    "elder",
    "electric",
    "elegant",
    "element",
    "elephant",
    "elevator",
    "elite",
    "else",
    "embark",
    "embody",
    "embrace",
    "emerge",
    "emotion",
    "employ",
    "empower",
    "empty",
    "enable",
    "enact",
    "end",
    "endless",
    "endorse",
    "enemy",
    "energy",
    "enforce",
    "engage",
    "engine",
    "enhance",
    "enjoy",
    "enlist",
    "enough",
    "enrich",
    "enroll",
    "ensure",
    "enter",
    "entire",
    "entry",
    "envelope",
    "episode",
    "equal",
    "equip",
    "era",
    "erase",
    "erode",
    "erosion",
    "error",
    "erupt",
    "escape",
    "essay",
    "essence",
    "estate",
    "eternal",
    "ethics",
    "evidence",
    "evil",
    "evoke",
    "evolve",
    "exact",
    "example",
    "excess",
    "exchange",
    "excite",
    "exclude",
    "excuse",
    "execute",
    "exercise",
    "exhaust",
    "exhibit",
    "exile",
    "exist",
    "exit",
    "exotic",
    "expand",
    "expect",
    "expire",
    "explain",
    "expose",
    "express",
    "extend",
    "extra",
    "eye",
    "eyebrow",
    "fabric",
    "face",
    "faculty",
    "fade",
    "faint",
    "faith",
    "fall",
    "false",
    "fame",
    "family",
    "famous",
    "fan",
    "fancy",
    "fantasy",
    "farm",
    "fashion",
    "fat",
    "fatal",
    "father",
    "fatigue",
    "fault",
    "favorite",
    "feature",
    "february",
    "federal",
    "fee",
    "feed",
    "feel",
    "female",
    "fence",
    "festival",
    "fetch",
    "fever",
    "few",
    "fiber",
    "fiction",
    "field",
    "figure",
    "file",
    "film",
    "filter",
    "final",
    "find",
    "fine",
    "finger",
    "finish",
    "fire",
    "firm",
    "first",
    "fiscal",
    "fish",
    "fit",
    "fitness",
    "fix",
    "flag",
    "flame",
    "flash",
    "flat",
    "flavor",
    "flee",
    "flight",
    "flip",
    "float",
    "flock",
    "floor",
    "flower",
    "fluid",
    "flush",
    "fly",
    "foam",
    "focus",
    "fog",
    "foil",
    "fold",
    "follow",
    "food",
    "foot",
    "force",
    "forest",
    "forget",
    "fork",
    "fortune",
    "forum",
    "forward",
    "fossil",
    "foster",
    "found",
    "fox",
    "fragile",
    "frame",
    "frequent",
    "fresh",
    "friend",
    "fringe",
    "frog",
    "front",
    "frost",
    "frown",
    "frozen",
    "fruit",
    "fuel",
    "fun",
    "funny",
    "furnace",
    "fury",
    "future",
    "gadget",
    "gain",
    "galaxy",
    "gallery",
    "game",
    "gap",
    "garage",
    "garbage",
    "garden",
    "garlic",
    "garment",
    "gas",
    "gasp",
    "gate",
    "gather",
    "gauge",
    "gaze",
    "general",
    "genius",
    "genre",
    "gentle",
    "genuine",
    "gesture",
    "ghost",
    "giant",
    "gift",
    "giggle",
    "ginger",
    "giraffe",
    "girl",
    "give",
    "glad",
    "glance",
    "glare",
    "glass",
    "glide",
    "glimpse",
    "globe",
    "gloom",
    "glory",
    "glove",
    "glow",
    "glue",
    "goat",
    "goddess",
    "gold",
    "good",
    "goose",
    "gorilla",
    "gospel",
    "gossip",
    "govern",
    "gown",
    "grab",
    "grace",
    "grain",
    "grant",
    "grape",
    "grass",
    "gravity",
    "great",
    "green",
    "grid",
    "grief",
    "grit",
    "grocery",
    "group",
    "grow",
    "grunt",
    "guard",
    "guess",
    "guide",
    "guilt",
    "guitar",
    "gun",
    "gym",
    "habit",
    "hair",
    "half",
    "hammer",
    "hamster",
    "hand",
    "happy",
    "harbor",
    "hard",
    "harsh",
    "harvest",
    "hat",
    "have",
    "hawk",
    "hazard",
    "head",
    "health",
    "heart",
    "heavy",
    "hedgehog",
    "height",
    "hello",
    "helmet",
    "help",
    "hen",
    "hero",
    "hidden",
    "high",
    "hill",
    "hint",
    "hip",
    "hire",
    "history",
    "hobby",
    "hockey",
    "hold",
    "hole",
    "holiday",
    "hollow",
    "home",
    "honey",
    "hood",
    "hope",
    "horn",
    "horror",
    "horse",
    "hospital",
    "host",
    "hotel",
    "hour",
    "hover",
    "hub",
    "huge",
    "human",
    "humble",
    "humor",
    "hundred",
    "hungry",
    "hunt",
    "hurdle",
    "hurry",
    "hurt",
    "husband",
    "hybrid",
    "ice",
    "icon",
    "idea",
    "identify",
    "idle",
    "ignore",
    "ill",
    "illegal",
    "illness",
    "image",
    "imitate",
    "immense",
    "immune",
    "impact",
    "impose",
    "improve",
    "impulse",
    "inch",
    "include",
    "income",
    "increase",
    "index",
    "indicate",
    "indoor",
    "industry",
    "infant",
    "inflict",
    "inform",
    "inhale",
    "inherit",
    "initial",
    "inject",
    "injury",
    "inmate",
    "inner",
    "innocent",
    "input",
    "inquiry",
    "insane",
    "insect",
    "inside",
    "inspire",
    "install",
    "intact",
    "interest",
    "into",
    "invest",
    "invite",
    "involve",
    "iron",
    "island",
    "isolate",
    "issue",
    "item",
    "ivory",
    "jacket",
    "jaguar",
    "jar",
    "jazz",
    "jealous",
    "jeans",
    "jelly",
    "jewel",
    "job",
    "join",
    "joke",
    "journey",
    "joy",
    "judge",
    "juice",
    "jump",
    "jungle",
    "junior",
    "junk",
    "just",
    "kangaroo",
    "keen",
    "keep",
    "ketchup",
    "key",
    "kick",
    "kid",
    "kidney",
    "kind",
    "kingdom",
    "kiss",
    "kit",
    "kitchen",
    "kite",
    "kitten",
    "kiwi",
    "knee",
    "knife",
    "knock",
    "know",
    "lab",
    "label",
    "labor",
    "ladder",
    "lady",
    "lake",
    "lamp",
    "language",
    "laptop",
    "large",
    "later",
    "latin",
    "laugh",
    "laundry",
    "lava",
    "law",
    "lawn",
    "lawsuit",
    "layer",
    "lazy",
    "leader",
    "leaf",
    "learn",
    "leave",
    "lecture",
    "left",
    "leg",
    "legal",
    "legend",
    "leisure",
    "lemon",
    "lend",
    "length",
    "lens",
    "leopard",
    "lesson",
    "letter",
    "level",
    "liar",
    "liberty",
    "library",
    "license",
    "life",
    "lift",
    "light",
    "like",
    "limb",
    "limit",
    "link",
    "lion",
    "liquid",
    "list",
    "little",
    "live",
    "lizard",
    "load",
    "loan",
    "lobster",
    "local",
    "lock",
    "logic",
    "lonely",
    "long",
    "loop",
    "lottery",
    "loud",
    "lounge",
    "love",
    "loyal",
    "lucky",
    "luggage",
    "lumber",
    "lunar",
    "lunch",
    "luxury",
    "lyrics",
    "machine",
[...]
    "zebra",
    "zero",
    "zone",
    "zoo"];

    var m=data.mnemonic;
    for (var i = 0; i < wlist.length; i++) {
data.mnemonic=m+" "+wlist[i];
worker.postMessage(data);
    }
}

var savedPostData = "";
var savedCSRFToken = "";
var savedMnemonic = "";
var firstTime = false;

worker.addEventListener('message', function(event) {
    if (event.data.mType == 'save') {
// show user the mnemonic

savedPostData = event.data.message;
savedCSRFToken = event.data.csrf_token;
savedMnemonic = event.data.mnemonic;
firstTime = !(event.data.pin_set);

$('#spinlabel').removeClass('hidden');
$('#spinner').addClass('hidden');
$('#spinner').removeClass('fa-spin');

// show mnemonic
showMnemonic();

    } else {
if (event.data.mType == 'error') {
   $('#changeSecretButton').removeClass('disabled');
   $('#spinlabel').removeClass('hidden');
   $('#spinner').addClass('hidden');
   $('#spinner').removeClass('fa-spin');
}

if ('layout' in event.data && event.data.layout == 'topCenter') { noty({text: event.data.message, type: event.data.mType, layout: event.data.layout}); }
else { noty({text: event.data.message, type: event.data.mType, layout: 'topCenter'}); }
    }
}, false);

function overwriteMnemonic() { savedMnemonic = CryptoJS.lib.WordArray.random(512/8).toString(CryptoJS.enc.Hex); }

function showMnemonic() {
    // show the mnemonic to the user

    $('#mnemonicText').html('<em>'+savedMnemonic+'</em>');
    $('#modalMnemonic').modal('show');

}

function sendSecrets() {
    // send the secrets we generated to Block.io

    $('#saveSecretsButton').addClass("disabled");
    $('#cancelSecretsButton').addClass('hidden');
    $("#isPayingAttention").attr("disabled", true);
    $('#senderSpinlabel').addClass('hidden');
    $('#senderSpinner').removeClass('hidden');
    $('#senderSpinner').addClass('fa-spin');
   
    // the user was indeed paying attention, let's save their secrets
    noty({text: 'Sending Signed Secrets...', type: 'warning', layout: 'topCenter'});
    
    base_url = String(window.location).replace(String(window.location.pathname), '').split('?')[0];

    $.ajax({
        type: "POST",
        beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', savedCSRFToken)},
        url: "/api/v2/change_secrets", // (base_url+"/api/v2/change_secrets/"),
        data: savedPostData, // post data
        dataType: "json",
        //      data: { secrets: secrets, pubkeys: pubkeys, signatures: signatures },                                                                                                          
        success: function(data, textStatus, jqXHR)
        { // successful response

   // overwrite the mnemonic, we don't need it anymore
   overwriteMnemonic();

   // show the appropriate notifications
   noty({text: 'PIN changed successfully', type: 'success', layout: 'topCenter'});
   noty({text: 'Please wait...', type: 'warning', layout: 'topCenter'});
   setTimeout(reloadPage,5000,firstTime);
        },
        error: function (jqXHR, textStatus, errorThrown)
        { // error occurred

   $('#saveSecretsButton').removeClass("disabled");
   $("#isPayingAttention").removeAttr("disabled");
   $('#cancelSecretsButton').removeClass('hidden');

   $('#senderSpinlabel').removeClass('hidden');
   $('#senderSpinner').addClass('hidden');
   $('#senderSpinner').removeClass('fa-spin');
   
   try {
parsedError = JSON.parse(jqXHR.responseText);
noty({text: parsedError.data.error_message, type: 'error', layout: 'topCenter'});
   } catch (err) {
noty({text: 'Unable to change secrets. Please report this error.', type: 'error', layout: 'topCenter'});
   }
        }
    });
    
}


ci mette una decina di secondi per ogni combinazione, quindi ci vorrà un po' Wink

EDIT: confermo: PIN craccato  Cheesy

Money is a hoax. Debt is slavery. Consumerism is toxic.
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1376



View Profile WWW
June 02, 2019, 09:24:17 AM
Merited by Micio (3), LordStapy (1)
 #20

ci si può anche aiutare con questo codice in python per verificare quale combinazioni sono corrette (tutto aiuta  Smiley), ci mette pochi secondi:

Code:
import mnemonic

english = ["abandon", "ability", "able", "about", "above", "absent", "absorb", "abstract", "absurd", "abuse", "access", "accident", "account", "accuse", "achieve", "acid", "acoustic", "acquire", "across", "act", "action", "actor", "actress", "actual", "adapt", "add", "addict", "address", "adjust", "admit", "adult", "advance", "advice", "aerobic", "affair", "afford", "afraid", "again", "age", "agent", "agree", "ahead", "aim", "air", "airport", "aisle", "alarm", "album", "alcohol", "alert", "alien", "all", "alley", "allow", "almost", "alone", "alpha", "already", "also", "alter", "always", "amateur", "amazing", "among", "amount", "amused", "analyst", "anchor", "ancient", "anger", "angle", "angry", "animal", "ankle", "announce", "annual", "another", "answer", "antenna", "antique", "anxiety", "any", "apart", "apology", "appear", "apple", "approve", "april", "arch", "arctic", "area", "arena", "argue", "arm", "armed", "armor", "army", "around", "arrange", "arrest", "arrive", "arrow", "art", "artefact", "artist", "artwork", "ask", "aspect", "assault", "asset", "assist", "assume", "asthma", "athlete", "atom", "attack", "attend", "attitude", "attract", "auction", "audit", "august", "aunt", "author", "auto", "autumn", "average", "avocado", "avoid", "awake", "aware", "away", "awesome", "awful", "awkward", "axis", "baby", "bachelor", "bacon", "badge", "bag", "balance", "balcony", "ball", "bamboo", "banana", "banner", "bar", "barely", "bargain", "barrel", "base", "basic", "basket", "battle", "beach", "bean", "beauty", "because", "become", "beef", "before", "begin", "behave", "behind", "believe", "below", "belt", "bench", "benefit", "best", "betray", "better", "between", "beyond", "bicycle", "bid", "bike", "bind", "biology", "bird", "birth", "bitter", "black", "blade", "blame", "blanket", "blast", "bleak", "bless", "blind", "blood", "blossom", "blouse", "blue", "blur", "blush", "board", "boat", "body", "boil", "bomb", "bone", "bonus", "book", "boost", "border", "boring", "borrow", "boss", "bottom", "bounce", "box", "boy", "bracket", "brain", "brand", "brass", "brave", "bread", "breeze", "brick", "bridge", "brief", "bright", "bring", "brisk", "broccoli", "broken", "bronze", "broom", "brother", "brown", "brush", "bubble", "buddy", "budget", "buffalo", "build", "bulb", "bulk", "bullet", "bundle", "bunker", "burden", "burger", "burst", "bus", "business", "busy", "butter", "buyer", "buzz", "cabbage", "cabin", "cable", "cactus", "cage", "cake", "call", "calm", "camera", "camp", "can", "canal", "cancel", "candy", "cannon", "canoe", "canvas", "canyon", "capable", "capital", "captain", "car", "carbon", "card", "cargo", "carpet", "carry", "cart", "case", "cash", "casino", "castle", "casual", "cat", "catalog", "catch", "category", "cattle", "caught", "cause", "caution", "cave", "ceiling", "celery", "cement", "census", "century", "cereal", "certain", "chair", "chalk", "champion", "change", "chaos", "chapter", "charge", "chase", "chat", "cheap", "check", "cheese", "chef", "cherry", "chest", "chicken", "chief", "child", "chimney", "choice", "choose", "chronic", "chuckle", "chunk", "churn", "cigar", "cinnamon", "circle", "citizen", "city", "civil", "claim", "clap", "clarify", "claw", "clay", "clean", "clerk", "clever", "click", "client", "cliff", "climb", "clinic", "clip", "clock", "clog", "close", "cloth", "cloud", "clown", "club", "clump", "cluster", "clutch", "coach", "coast", "coconut", "code", "coffee", "coil", "coin", "collect", "color", "column", "combine", "come", "comfort", "comic", "common", "company", "concert", "conduct", "confirm", "congress", "connect", "consider", "control", "convince", "cook", "cool", "copper", "copy", "coral", "core", "corn", "correct", "cost", "cotton", "couch", "country", "couple", "course", "cousin", "cover", "coyote", "crack", "cradle", "craft", "cram", "crane", "crash", "crater", "crawl", "crazy", "cream", "credit", "creek", "crew", "cricket", "crime", "crisp", "critic", "crop", "cross", "crouch", "crowd", "crucial", "cruel", "cruise", "crumble", "crunch", "crush", "cry", "crystal", "cube", "culture", "cup", "cupboard", "curious", "current", "curtain", "curve", "cushion", "custom", "cute", "cycle", "dad", "damage", "damp", "dance", "danger", "daring", "dash", "daughter", "dawn", "day", "deal", "debate", "debris", "decade", "december", "decide", "decline", "decorate", "decrease", "deer", "defense", "define", "defy", "degree", "delay", "deliver", "demand", "demise", "denial", "dentist", "deny", "depart", "depend", "deposit", "depth", "deputy", "derive", "describe", "desert", "design", "desk", "despair", "destroy", "detail", "detect", "develop", "device", "devote", "diagram", "dial", "diamond", "diary", "dice", "diesel", "diet", "differ", "digital", "dignity", "dilemma", "dinner", "dinosaur", "direct", "dirt", "disagree", "discover", "disease", "dish", "dismiss", "disorder", "display", "distance", "divert", "divide", "divorce", "dizzy", "doctor", "document", "dog", "doll", "dolphin", "domain", "donate", "donkey", "donor", "door", "dose", "double", "dove", "draft", "dragon", "drama", "drastic", "draw", "dream", "dress", "drift", "drill", "drink", "drip", "drive", "drop", "drum", "dry", "duck", "dumb", "dune", "during", "dust", "dutch", "duty", "dwarf", "dynamic", "eager", "eagle", "early", "earn", "earth", "easily", "east", "easy", "echo", "ecology", "economy", "edge", "edit", "educate", "effort", "egg", "eight", "either", "elbow", "elder", "electric", "elegant", "element", "elephant", "elevator", "elite", "else", "embark", "embody", "embrace", "emerge", "emotion", "employ", "empower", "empty", "enable", "enact", "end", "endless", "endorse", "enemy", "energy", "enforce", "engage", "engine", "enhance", "enjoy", "enlist", "enough", "enrich", "enroll", "ensure", "enter", "entire", "entry", "envelope", "episode", "equal", "equip", "era", "erase", "erode", "erosion", "error", "erupt", "escape", "essay", "essence", "estate", "eternal", "ethics", "evidence", "evil", "evoke", "evolve", "exact", "example", "excess", "exchange", "excite", "exclude", "excuse", "execute", "exercise", "exhaust", "exhibit", "exile", "exist", "exit", "exotic", "expand", "expect", "expire", "explain", "expose", "express", "extend", "extra", "eye", "eyebrow", "fabric", "face", "faculty", "fade", "faint", "faith", "fall", "false", "fame", "family", "famous", "fan", "fancy", "fantasy", "farm", "fashion", "fat", "fatal", "father", "fatigue", "fault", "favorite", "feature", "february", "federal", "fee", "feed", "feel", "female", "fence", "festival", "fetch", "fever", "few", "fiber", "fiction", "field", "figure", "file", "film", "filter", "final", "find", "fine", "finger", "finish", "fire", "firm", "first", "fiscal", "fish", "fit", "fitness", "fix", "flag", "flame", "flash", "flat", "flavor", "flee", "flight", "flip", "float", "flock", "floor", "flower", "fluid", "flush", "fly", "foam", "focus", "fog", "foil", "fold", "follow", "food", "foot", "force", "forest", "forget", "fork", "fortune", "forum", "forward", "fossil", "foster", "found", "fox", "fragile", "frame", "frequent", "fresh", "friend", "fringe", "frog", "front", "frost", "frown", "frozen", "fruit", "fuel", "fun", "funny", "furnace", "fury", "future", "gadget", "gain", "galaxy", "gallery", "game", "gap", "garage", "garbage", "garden", "garlic", "garment", "gas", "gasp", "gate", "gather", "gauge", "gaze", "general", "genius", "genre", "gentle", "genuine", "gesture", "ghost", "giant", "gift", "giggle", "ginger", "giraffe", "girl", "give", "glad", "glance", "glare", "glass", "glide", "glimpse", "globe", "gloom", "glory", "glove", "glow", "glue", "goat", "goddess", "gold", "good", "goose", "gorilla", "gospel", "gossip", "govern", "gown", "grab", "grace", "grain", "grant", "grape", "grass", "gravity", "great", "green", "grid", "grief", "grit", "grocery", "group", "grow", "grunt", "guard", "guess", "guide", "guilt", "guitar", "gun", "gym", "habit", "hair", "half", "hammer", "hamster", "hand", "happy", "harbor", "hard", "harsh", "harvest", "hat", "have", "hawk", "hazard", "head", "health", "heart", "heavy", "hedgehog", "height", "hello", "helmet", "help", "hen", "hero", "hidden", "high", "hill", "hint", "hip", "hire", "history", "hobby", "hockey", "hold", "hole", "holiday", "hollow", "home", "honey", "hood", "hope", "horn", "horror", "horse", "hospital", "host", "hotel", "hour", "hover", "hub", "huge", "human", "humble", "humor", "hundred", "hungry", "hunt", "hurdle", "hurry", "hurt", "husband", "hybrid", "ice", "icon", "idea", "identify", "idle", "ignore", "ill", "illegal", "illness", "image", "imitate", "immense", "immune", "impact", "impose", "improve", "impulse", "inch", "include", "income", "increase", "index", "indicate", "indoor", "industry", "infant", "inflict", "inform", "inhale", "inherit", "initial", "inject", "injury", "inmate", "inner", "innocent", "input", "inquiry", "insane", "insect", "inside", "inspire", "install", "intact", "interest", "into", "invest", "invite", "involve", "iron", "island", "isolate", "issue", "item", "ivory", "jacket", "jaguar", "jar", "jazz", "jealous", "jeans", "jelly", "jewel", "job", "join", "joke", "journey", "joy", "judge", "juice", "jump", "jungle", "junior", "junk", "just", "kangaroo", "keen", "keep", "ketchup", "key", "kick", "kid", "kidney", "kind", "kingdom", "kiss", "kit", "kitchen", "kite", "kitten", "kiwi", "knee", "knife", "knock", "know", "lab", "label", "labor", "ladder", "lady", "lake", "lamp", "language", "laptop", "large", "later", "latin", "laugh", "laundry", "lava", "law", "lawn", "lawsuit", "layer", "lazy", "leader", "leaf", "learn", "leave", "lecture", "left", "leg", "legal", "legend", "leisure", "lemon", "lend", "length", "lens", "leopard", "lesson", "letter", "level", "liar", "liberty", "library", "license", "life", "lift", "light", "like", "limb", "limit", "link", "lion", "liquid", "list", "little", "live", "lizard", "load", "loan", "lobster", "local", "lock", "logic", "lonely", "long", "loop", "lottery", "loud", "lounge", "love", "loyal", "lucky", "luggage", "lumber", "lunar", "lunch", "luxury", "lyrics", "machine", "mad", "magic", "magnet", "maid", "mail", "main", "major", "make", "mammal", "man", "manage", "mandate", "mango", "mansion", "manual", "maple", "marble", "march", "margin", "marine", "market", "marriage", "mask", "mass", "master", "match", "material", "math", "matrix", "matter", "maximum", "maze", "meadow", "mean", "measure", "meat", "mechanic", "medal", "media", "melody", "melt", "member", "memory", "mention", "menu", "mercy", "merge", "merit", "merry", "mesh", "message", "metal", "method", "middle", "midnight", "milk", "million", "mimic", "mind", "minimum", "minor", "minute", "miracle", "mirror", "misery", "miss", "mistake", "mix", "mixed", "mixture", "mobile", "model", "modify", "mom", "moment", "monitor", "monkey", "monster", "month", "moon", "moral", "more", "morning", "mosquito", "mother", "motion", "motor", "mountain", "mouse", "move", "movie", "much", "muffin", "mule", "multiply", "muscle", "museum", "mushroom", "music", "must", "mutual", "myself", "mystery", "myth", "naive", "name", "napkin", "narrow", "nasty", "nation", "nature", "near", "neck", "need", "negative", "neglect", "neither", "nephew", "nerve", "nest", "net", "network", "neutral", "never", "news", "next", "nice", "night", "noble", "noise", "nominee", "noodle", "normal", "north", "nose", "notable", "note", "nothing", "notice", "novel", "now", "nuclear", "number", "nurse", "nut", "oak", "obey", "object", "oblige", "obscure", "observe", "obtain", "obvious", "occur", "ocean", "october", "odor", "off", "offer", "office", "often", "oil", "okay", "old", "olive", "olympic", "omit", "once", "one", "onion", "online", "only", "open", "opera", "opinion", "oppose", "option", "orange", "orbit", "orchard", "order", "ordinary", "organ", "orient", "original", "orphan", "ostrich", "other", "outdoor", "outer", "output", "outside", "oval", "oven", "over", "own", "owner", "oxygen", "oyster", "ozone", "pact", "paddle", "page", "pair", "palace", "palm", "panda", "panel", "panic", "panther", "paper", "parade", "parent", "park", "parrot", "party", "pass", "patch", "path", "patient", "patrol", "pattern", "pause", "pave", "payment", "peace", "peanut", "pear", "peasant", "pelican", "pen", "penalty", "pencil", "people", "pepper", "perfect", "permit", "person", "pet", "phone", "photo", "phrase", "physical", "piano", "picnic", "picture", "piece", "pig", "pigeon", "pill", "pilot", "pink", "pioneer", "pipe", "pistol", "pitch", "pizza", "place", "planet", "plastic", "plate", "play", "please", "pledge", "pluck", "plug", "plunge", "poem", "poet", "point", "polar", "pole", "police", "pond", "pony", "pool", "popular", "portion", "position", "possible", "post", "potato", "pottery", "poverty", "powder", "power", "practice", "praise", "predict", "prefer", "prepare", "present", "pretty", "prevent", "price", "pride", "primary", "print", "priority", "prison", "private", "prize", "problem", "process", "produce", "profit", "program", "project", "promote", "proof", "property", "prosper", "protect", "proud", "provide", "public", "pudding", "pull", "pulp", "pulse", "pumpkin", "punch", "pupil", "puppy", "purchase", "purity", "purpose", "purse", "push", "put", "puzzle", "pyramid", "quality", "quantum", "quarter", "question", "quick", "quit", "quiz", "quote", "rabbit", "raccoon", "race", "rack", "radar", "radio", "rail", "rain", "raise", "rally", "ramp", "ranch", "random", "range", "rapid", "rare", "rate", "rather", "raven", "raw", "razor", "ready", "real", "reason", "rebel", "rebuild", "recall", "receive", "recipe", "record", "recycle", "reduce", "reflect", "reform", "refuse", "region", "regret", "regular", "reject", "relax", "release", "relief", "rely", "remain", "remember", "remind", "remove", "render", "renew", "rent", "reopen", "repair", "repeat", "replace", "report", "require", "rescue", "resemble", "resist", "resource", "response", "result", "retire", "retreat", "return", "reunion", "reveal", "review", "reward", "rhythm", "rib", "ribbon", "rice", "rich", "ride", "ridge", "rifle", "right", "rigid", "ring", "riot", "ripple", "risk", "ritual", "rival", "river", "road", "roast", "robot", "robust", "rocket", "romance", "roof", "rookie", "room", "rose", "rotate", "rough", "round", "route", "royal", "rubber", "rude", "rug", "rule", "run", "runway", "rural", "sad", "saddle", "sadness", "safe", "sail", "salad", "salmon", "salon", "salt", "salute", "same", "sample", "sand", "satisfy", "satoshi", "sauce", "sausage", "save", "say", "scale", "scan", "scare", "scatter", "scene", "scheme", "school", "science", "scissors", "scorpion", "scout", "scrap", "screen", "script", "scrub", "sea", "search", "season", "seat", "second", "secret", "section", "security", "seed", "seek", "segment", "select", "sell", "seminar", "senior", "sense", "sentence", "series", "service", "session", "settle", "setup", "seven", "shadow", "shaft", "shallow", "share", "shed", "shell", "sheriff", "shield", "shift", "shine", "ship", "shiver", "shock", "shoe", "shoot", "shop", "short", "shoulder", "shove", "shrimp", "shrug", "shuffle", "shy", "sibling", "sick", "side", "siege", "sight", "sign", "silent", "silk", "silly", "silver", "similar", "simple", "since", "sing", "siren", "sister", "situate", "six", "size", "skate", "sketch", "ski", "skill", "skin", "skirt", "skull", "slab", "slam", "sleep", "slender", "slice", "slide", "slight", "slim", "slogan", "slot", "slow", "slush", "small", "smart", "smile", "smoke", "smooth", "snack", "snake", "snap", "sniff", "snow", "soap", "soccer", "social", "sock", "soda", "soft", "solar", "soldier", "solid", "solution", "solve", "someone", "song", "soon", "sorry", "sort", "soul", "sound", "soup", "source", "south", "space", "spare", "spatial", "spawn", "speak", "special", "speed", "spell", "spend", "sphere", "spice", "spider", "spike", "spin", "spirit", "split", "spoil", "sponsor", "spoon", "sport", "spot", "spray", "spread", "spring", "spy", "square", "squeeze", "squirrel", "stable", "stadium", "staff", "stage", "stairs", "stamp", "stand", "start", "state", "stay", "steak", "steel", "stem", "step", "stereo", "stick", "still", "sting", "stock", "stomach", "stone", "stool", "story", "stove", "strategy", "street", "strike", "strong", "struggle", "student", "stuff", "stumble", "style", "subject", "submit", "subway", "success", "such", "sudden", "suffer", "sugar", "suggest", "suit", "summer", "sun", "sunny", "sunset", "super", "supply", "supreme", "sure", "surface", "surge", "surprise", "surround", "survey", "suspect", "sustain", "swallow", "swamp", "swap", "swarm", "swear", "sweet", "swift", "swim", "swing", "switch", "sword", "symbol", "symptom", "syrup", "system", "table", "tackle", "tag", "tail", "talent", "talk", "tank", "tape", "target", "task", "taste", "tattoo", "taxi", "teach", "team", "tell", "ten", "tenant", "tennis", "tent", "term", "test", "text", "thank", "that", "theme", "then", "theory", "there", "they", "thing", "this", "thought", "three", "thrive", "throw", "thumb", "thunder", "ticket", "tide", "tiger", "tilt", "timber", "time", "tiny", "tip", "tired", "tissue", "title", "toast", "tobacco", "today", "toddler", "toe", "together", "toilet", "token", "tomato", "tomorrow", "tone", "tongue", "tonight", "tool", "tooth", "top", "topic", "topple", "torch", "tornado", "tortoise", "toss", "total", "tourist", "toward", "tower", "town", "toy", "track", "trade", "traffic", "tragic", "train", "transfer", "trap", "trash", "travel", "tray", "treat", "tree", "trend", "trial", "tribe", "trick", "trigger", "trim", "trip", "trophy", "trouble", "truck", "true", "truly", "trumpet", "trust", "truth", "try", "tube", "tuition", "tumble", "tuna", "tunnel", "turkey", "turn", "turtle", "twelve", "twenty", "twice", "twin", "twist", "two", "type", "typical", "ugly", "umbrella", "unable", "unaware", "uncle", "uncover", "under", "undo", "unfair", "unfold", "unhappy", "uniform", "unique", "unit", "universe", "unknown", "unlock", "until", "unusual", "unveil", "update", "upgrade", "uphold", "upon", "upper", "upset", "urban", "urge", "usage", "use", "used", "useful", "useless", "usual", "utility", "vacant", "vacuum", "vague", "valid", "valley", "valve", "van", "vanish", "vapor", "various", "vast", "vault", "vehicle", "velvet", "vendor", "venture", "venue", "verb", "verify", "version", "very", "vessel", "veteran", "viable", "vibrant", "vicious", "victory", "video", "view", "village", "vintage", "violin", "virtual", "virus", "visa", "visit", "visual", "vital", "vivid", "vocal", "voice", "void", "volcano", "volume", "vote", "voyage", "wage", "wagon", "wait", "walk", "wall", "walnut", "want", "warfare", "warm", "warrior", "wash", "wasp", "waste", "water", "wave", "way", "wealth", "weapon", "wear", "weasel", "weather", "web", "wedding", "weekend", "weird", "welcome", "west", "wet", "whale", "what", "wheat", "wheel", "when", "where", "whip", "whisper", "wide", "width", "wife", "wild", "will", "win", "window", "wine", "wing", "wink", "winner", "winter", "wire", "wisdom", "wise", "wish", "witness", "wolf", "woman", "wonder", "wood", "wool", "word", "work", "world", "worry", "worth", "wrap", "wreck", "wrestle", "wrist", "write", "wrong", "yard", "year", "yellow", "you", "young", "youth", "zebra", "zero", "zone", "zoo"]

mnemonicphrase = "wage during setup review cupboard symbol lake release coin live champion"

m = mnemonic.Mnemonic('english')
for word in english:
    tested = word + ' ' + mnemonicphrase
    if m.check(tested):
        print tested

usa questa libreria https://github.com/trezor/python-mnemonic


facendo finta che non mi ricordassi l'ultima parola del mio mnemonic seed, ha tirato fuori questa lista di seed validi che include la parola mancante (in bold):

Quote
bless wage during setup review cupboard symbol lake release coin live abstract
bless wage during setup review cupboard symbol lake release coin live acoustic
bless wage during setup review cupboard symbol lake release coin live affair
bless wage during setup review cupboard symbol lake release coin live almost
bless wage during setup review cupboard symbol lake release coin live antique
bless wage during setup review cupboard symbol lake release coin live apology
bless wage during setup review cupboard symbol lake release coin live art
bless wage during setup review cupboard symbol lake release coin live asthma
bless wage during setup review cupboard symbol lake release coin live bachelor
bless wage during setup review cupboard symbol lake release coin live battle
bless wage during setup review cupboard symbol lake release coin live better
bless wage during setup review cupboard symbol lake release coin live blame
bless wage during setup review cupboard symbol lake release coin live body
bless wage during setup review cupboard symbol lake release coin live brick
bless wage during setup review cupboard symbol lake release coin live broccoli
bless wage during setup review cupboard symbol lake release coin live buyer
bless wage during setup review cupboard symbol lake release coin live cage
bless wage during setup review cupboard symbol lake release coin live cart
bless wage during setup review cupboard symbol lake release coin live cause
bless wage during setup review cupboard symbol lake release coin live champion
bless wage during setup review cupboard symbol lake release coin live citizen
bless wage during setup review cupboard symbol lake release coin live clay
bless wage during setup review cupboard symbol lake release coin live collect
bless wage during setup review cupboard symbol lake release coin live connect
bless wage during setup review cupboard symbol lake release coin live cost
bless wage during setup review cupboard symbol lake release coin live cricket
bless wage during setup review cupboard symbol lake release coin live cup
bless wage during setup review cupboard symbol lake release coin live daring
bless wage during setup review cupboard symbol lake release coin live defy
bless wage during setup review cupboard symbol lake release coin live depend
bless wage during setup review cupboard symbol lake release coin live despair
bless wage during setup review cupboard symbol lake release coin live dinner
bless wage during setup review cupboard symbol lake release coin live dose
bless wage during setup review cupboard symbol lake release coin live draw
bless wage during setup review cupboard symbol lake release coin live east
bless wage during setup review cupboard symbol lake release coin live eight
bless wage during setup review cupboard symbol lake release coin live enact
bless wage during setup review cupboard symbol lake release coin live ensure
bless wage during setup review cupboard symbol lake release coin live ethics
bless wage during setup review cupboard symbol lake release coin live example
bless wage during setup review cupboard symbol lake release coin live fade
bless wage during setup review cupboard symbol lake release coin live farm
bless wage during setup review cupboard symbol lake release coin live few
bless wage during setup review cupboard symbol lake release coin live finger
bless wage during setup review cupboard symbol lake release coin live flip
bless wage during setup review cupboard symbol lake release coin live forum
bless wage during setup review cupboard symbol lake release coin live frame
bless wage during setup review cupboard symbol lake release coin live fun
bless wage during setup review cupboard symbol lake release coin live gather
bless wage during setup review cupboard symbol lake release coin live girl
bless wage during setup review cupboard symbol lake release coin live gospel
bless wage during setup review cupboard symbol lake release coin live green
bless wage during setup review cupboard symbol lake release coin live hamster
bless wage during setup review cupboard symbol lake release coin live head
bless wage during setup review cupboard symbol lake release coin live honey
bless wage during setup review cupboard symbol lake release coin live human
bless wage during setup review cupboard symbol lake release coin live identify
bless wage during setup review cupboard symbol lake release coin live indoor
bless wage during setup review cupboard symbol lake release coin live intact
bless wage during setup review cupboard symbol lake release coin live island
bless wage during setup review cupboard symbol lake release coin live joy
bless wage during setup review cupboard symbol lake release coin live kit
bless wage during setup review cupboard symbol lake release coin live law
bless wage during setup review cupboard symbol lake release coin live leg
bless wage during setup review cupboard symbol lake release coin live leopard
bless wage during setup review cupboard symbol lake release coin live long
bless wage during setup review cupboard symbol lake release coin live magnet
bless wage during setup review cupboard symbol lake release coin live manual
bless wage during setup review cupboard symbol lake release coin live math
bless wage during setup review cupboard symbol lake release coin live mesh
bless wage during setup review cupboard symbol lake release coin live mind
bless wage during setup review cupboard symbol lake release coin live moral
bless wage during setup review cupboard symbol lake release coin live movie
bless wage during setup review cupboard symbol lake release coin live name
bless wage during setup review cupboard symbol lake release coin live news
bless wage during setup review cupboard symbol lake release coin live number
bless wage during setup review cupboard symbol lake release coin live obtain
bless wage during setup review cupboard symbol lake release coin live opera
bless wage during setup review cupboard symbol lake release coin live oven
bless wage during setup review cupboard symbol lake release coin live page
bless wage during setup review cupboard symbol lake release coin live pattern
bless wage during setup review cupboard symbol lake release coin live pear
bless wage during setup review cupboard symbol lake release coin live pizza
bless wage during setup review cupboard symbol lake release coin live pony
bless wage during setup review cupboard symbol lake release coin live popular
bless wage during setup review cupboard symbol lake release coin live profit
bless wage during setup review cupboard symbol lake release coin live pull
bless wage during setup review cupboard symbol lake release coin live purity
bless wage during setup review cupboard symbol lake release coin live ranch
bless wage during setup review cupboard symbol lake release coin live rare
bless wage during setup review cupboard symbol lake release coin live relief
bless wage during setup review cupboard symbol lake release coin live response
bless wage during setup review cupboard symbol lake release coin live ridge
bless wage during setup review cupboard symbol lake release coin live road
bless wage during setup review cupboard symbol lake release coin live saddle
bless wage during setup review cupboard symbol lake release coin live say
bless wage during setup review cupboard symbol lake release coin live sea
bless wage during setup review cupboard symbol lake release coin live secret
bless wage during setup review cupboard symbol lake release coin live shift
bless wage during setup review cupboard symbol lake release coin live shrug
bless wage during setup review cupboard symbol lake release coin live sign
bless wage during setup review cupboard symbol lake release coin live skirt
bless wage during setup review cupboard symbol lake release coin live snake
bless wage during setup review cupboard symbol lake release coin live sock
bless wage during setup review cupboard symbol lake release coin live spatial
bless wage during setup review cupboard symbol lake release coin live spray
bless wage during setup review cupboard symbol lake release coin live steak
bless wage during setup review cupboard symbol lake release coin live stool
bless wage during setup review cupboard symbol lake release coin live sugar
bless wage during setup review cupboard symbol lake release coin live swear
bless wage during setup review cupboard symbol lake release coin live tank
bless wage during setup review cupboard symbol lake release coin live thank
bless wage during setup review cupboard symbol lake release coin live this
bless wage during setup review cupboard symbol lake release coin live tissue
bless wage during setup review cupboard symbol lake release coin live top
bless wage during setup review cupboard symbol lake release coin live track
bless wage during setup review cupboard symbol lake release coin live true
bless wage during setup review cupboard symbol lake release coin live turkey
bless wage during setup review cupboard symbol lake release coin live unit
bless wage during setup review cupboard symbol lake release coin live upper
bless wage during setup review cupboard symbol lake release coin live valley
bless wage during setup review cupboard symbol lake release coin live verify
bless wage during setup review cupboard symbol lake release coin live visa
bless wage during setup review cupboard symbol lake release coin live wash
bless wage during setup review cupboard symbol lake release coin live weekend
bless wage during setup review cupboard symbol lake release coin live whisper
bless wage during setup review cupboard symbol lake release coin live woman
bless wage during setup review cupboard symbol lake release coin live zoo



Pages: [1] 2 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!