Author

Topic: Come ritrovare parola mancante (Read 682 times)

legendary
Activity: 3724
Merit: 1738
Join the world-leading crypto sportsbook NOW!
July 19, 2019, 03:51:24 PM
#30
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)



Quello che hai detto tra parentesi è correttissimo: ovvero se fossero solo 2 posizioni da provare (mentre generalmente se è una parola mancante nel mezzo, le alternative sono molte di più).
member
Activity: 168
Merit: 86
July 19, 2019, 04:05:50 AM
#29
Non ci crederete  Roll Eyes, ho fatto un ultimo disperato tentativo con tutti i pin che avrei potuto usare e finalmente l'ho trovato! Non ho idea del perché scelsi un pin impossibile da ricordare ma ce l'ho fatta! Comunque farò tesoro dei vostri consigli qualora dovesse capitare a qualcun'altro (io non farò mai più un errore del genere).
Ora mi sa che lo scambio per un milione di satoshi, o aspetto il dopo halving che è tra un paio di settimane, che dite voi?
legendary
Activity: 3570
Merit: 1985
July 06, 2019, 08:17:51 AM
#28
Grazie a tutti coloro che si sono impegnati per risolvere il mio problema! Sono stato sempre in giro così non ho tenuto sott'occhio la discussione, ma ci tengo a ringraziarvi per il vostro tempo! Io devo essere sincero non ci capisco molto di quello che avete scritto, un linguaggio che mi è alieno, perciò aspetterò che ltc abbia qualche zero in più e la ricompensa sarà più succosa ! Grazie ancora a tutti

bè, se non altro adesso sai che recuperare l'accesso è tecnicamente possibile Wink
member
Activity: 168
Merit: 86
July 06, 2019, 04:38:53 AM
#27
Grazie a tutti coloro che si sono impegnati per risolvere il mio problema! Sono stato sempre in giro così non ho tenuto sott'occhio la discussione, ma ci tengo a ringraziarvi per il vostro tempo! Io devo essere sincero non ci capisco molto di quello che avete scritto, un linguaggio che mi è alieno, perciò aspetterò che ltc abbia qualche zero in più e la ricompensa sarà più succosa ! Grazie ancora a tutti
hero member
Activity: 784
Merit: 1416
June 06, 2019, 05:06:35 AM
#26
Sono andato un pò avanti con un'implementazione in Python che riporto sotto alla fine del messaggio, i passaggi combaciano rispetto a block.io fino al punto in cui dovrebbe creare la chiave privata, ottengo correttamente il contenuto della variabile buffer


https://block.io/js/secure/bitcoinjs-3.3.2-custom.js linea 5637
Code:
ECPair.fromPassphrase = function (passphrase, options) {
  var buffer = new Buffer(passphrase, 'hex')
  options = options || {}
  buffer = bcrypto.sha256(buffer)
  var d = BigInteger.fromBuffer(buffer).mod(secp256k1.n)
  return new ECPair(d, null, {compressed: true, network: options.network || NETWORKS.bitcoin})
}

ma dopo non riesco a a capire cosa succede in questi due passaggi, ho provato a calcolare la chiave privata e poi quella pubblica con quello che avevo ma non ottengo lo stesso risultato:

Code:

var d = BigInteger.fromBuffer(buffer).mod(secp256k1.n)
return new ECPair(d, null, {compressed: true, network: options.network || NETWORKS.bitcoin})

Se qualcuno ha qualche idea  Undecided


Codice funzionante fino al punto sopra descritto
https://pastebin.com/awk67zqF

Code:
import mnemonic
import sys
import hashlib
import re
import pbkdf2
import os
import base64
import binascii
from Crypto.Protocol.KDF import PBKDF2
from Crypto.Hash import SHA256, HMAC
from Crypto.Cipher import AES

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

import os, binascii, hashlib, base58, ecdsa
def ripemd160(x):
    d = hashlib.new('ripemd160')
    d.update(x)
    return d
   
def generate_addr(seed):
   
    bytearray_seed = HexToByte(seed)
    seed_hash = hashlib.sha256(bytearray_seed).digest()
    seed_hex = binascii.hexlify(seed_hash).decode()
    seed_fullkey = '80' + seed_hex # till here is fine
       
def ByteToHex( byteStr ):
    return ''.join( [ "%02X " % ord( x ) for x in byteStr ] ).strip()

def HexToByte( hexStr ):
    bytes = []

    hexStr = ''.join( hexStr.split(" ") )

    for i in range(0, len(hexStr), 2):
        bytes.append( chr( int (hexStr[i:i+2], 16 ) ) )

    return ''.join( bytes )

def entropy(words):
    entropystring=""
    wordlist= re.split(" ",words)
    for word in wordlist: 
      index=0
      for englishword in english:
        if englishword == word:
          entropystring += int_to_padded_binary(index,11)
          break
        index+=1   
    print("entropystring", entropystring)
    entropy_ex = binary_to_padded_hex(entropystring[:-4], 32)
    return entropy_ex

def int_to_padded_binary(num, padding):
    return bin(num)[2:].zfill(padding)

def binary_to_padded_hex(bin, padding):
    num = int(bin, 2)
    return '0x{0:0{1}x}'.format(num, padding)

def pinToAesKey(passphrase, isMnemonicSeed):
 
  mnemonicSeed = passphrase;

  if (isMnemonicSeed == False):
    mnemonicSeed = PBKDF2(
        passphrase,
        "",
        16, 2048/2, lambda p,s: HMAC.new(p,s,SHA256).digest())
    mnemonicSeed=ByteToHex(mnemonicSeed).replace(" ", "").lower()

  encryptionKey = PBKDF2(
      mnemonicSeed,
      "",
      32, 2048/2, lambda p,s: HMAC.new(p,s,SHA256).digest())
  encryptionKey = ByteToHex(encryptionKey).replace(" ", "").lower()

  print(encryptionKey)
  return encryptionKey

def decrypt(secret, passphrase, isMnemonic):
 
    HEX_KEY = pinToAesKey(passphrase, isMnemonic);
    key = HexToByte(HEX_KEY) 
    cipher = AES.new(key, AES.MODE_ECB) #CryptoJS.lib.CipherParams.create({ ciphertext: CryptoJS.enc.Base64.parse(b64ciph) });
    dec = cipher.decrypt(binascii.a2b_base64(secret).rstrip())            #dec = CryptoJS.AES.decrypt(cipher, key, { mode: CryptoJS.mode.ECB });
    dec = dec.replace("\x10","")
    print(dec)
    return dec;

m = mnemonic.Mnemonic('english')

mnemphrase = "bless wage during setup review cupboard symbol lake release coin live champion"
entropy_hex = entropy(mnemphrase)

print("Entropy hex:", entropy_hex)
print("Entropy:", entropy_hex[2:])

BTC_Seed =  "nCMd4GWsqRuakijg2EakDHTXuTow3jXfQfO38AU7c449/XPqgjTb+EEhyOPSazZtiQiCzpVKGUoPK2wgY6CkmjZDK/NC2KBB0rFEGF+OVtNSUqMUfwFQOkbm2E96rGiquH7FZPcoD8Gtcmk+qL+KBxQi2izx5aPUxLWVux8QCogPvagMUe/FfIp0jcxipS4b"
seed = decrypt(BTC_Seed,
        entropy_hex[2:],
        True)

generate_addr(seed)

#key = bitcoin.ECPair.fromPassphrase(seed);
#pubkey = key.getPublicKeyBuffer().toString('hex');

#if ("" != pubkey):
#  print("Confirmed")
#else:
#  print("wrong")


#Secrets:
#BTC: "nCMd4GWsqRuakijg2EakDHTXuTow3jXfQfO38AU7c449/XPqgjTb+EEhyOPSazZtiQiCzpVKGUoPK2wgY6CkmjZDK/NC2KBB0rFEGF+OVtNSUqMUfwFQOkbm2E96rGiquH7FZPcoD8Gtcmk+qL+KBxQi2izx5aPUxLWVux8QCogPvagMUe/FfIp0jcxipS4b"
#BTCTEST: "0pY865pVLLWaNB3I/jT0SgeJIY4qAw1tQGhvS/gdbgVThZlqnNGY3DFBNg8PNYatkUEr9ZnAiHlo0oBFyxu4OPfi9oeQAZFzwuisPHmXLJHaadGnYJ1cHoW3lJWhc8SKjvZrPpsigi+uEMy8AOxwQR7fTjoZTMVyxWhGQM6WDLsPvagMUe/FfIp0jcxipS4b"
#DOGE: "omykSzqJgNHerzNmoc2NP7F6IvrpFzFkSCTaGp2QH/Rb0kNuDK2CI0Wnb7ASn4pYSpIWpS6BSV4gnImcehKGim1mGJvvsDBNrI9pT/W8WYOwPoJ5jpDOempdBAYrNFfdeY1yeJFVbUuOq3dlh8M0NQ5p1LF88RDyRjQPxS/4HRoPvagMUe/FfIp0jcxipS4b"
#DOGETEST: "IZGNvTWVKzRWRWqW6K/tBCf8FmqSRkU+uR5o2CpqTdC8bav/tevrWaF1fHcxLimS8Oo40qYtVFSuGcUwnosIVmE1GedOBeKn/fKpwQS/h9ikf6GwTPNIzmNG4gofqCdrLl89xA3/HkdvBp+Q7UIunrmQnXVOp4/O1aSLhuUW8iUPvagMUe/FfIp0jcxipS4b"
#LTC: "iS1FZUclmSpgD+bBwo0brz59JYkojs85e1rPQheYw2TK0WGHLZc7bULBCEz6ecm5I5doXoVGkXxUVpK/WY6mwvbctb/KZHrSeiuQoMJlzmwVp+XUQuDGTQhwROA64BNCYDssDZqhJ59rM8PfrGtaealPNGmjdOv2cdCS8vsuyGwPvagMUe/FfIp0jcxipS4b"
#LTCTEST: "EH+XfwynUa8RmI8ydAAv3vuZjnMHY4/zc+VappgDpPTAL+m6bCqbqBwsyHxrMuWdm/ae0xqX+g2j/ZWWfP3/R7/sVOPqZsyN7kihG1nBJjsOtfbT910kgj9VWaWVOVGtyN8JdIcZrUcKcW62FbaB/T9O5Va57fu1yRl/P4nPQsgPvagMUe/FfIp0jcxipS4b"

#Pubkeys:
#BTC: "039f6f9b10655797a1c365e36b4717c478236fcee9339c17e9b69fb0b38d47b9ba"
#BTCTEST: "03807de6cd7742c0b869a162b024bd9f35fae0bdf193f0d69cbdc081427d0249ec"
#DOGE: "02952ce4a6f811230a5dc31d1321f8fdf87c5cef07bd2d18a4ea63f53fff224380"
#DOGETEST: "026396883cb101457973f34ff9e4aa6f776abf62513959b6cf79e0d26856bcb9ff"
#LTC: "027e68e7a853d469913c1e175321de0eee687c9f0bffce0e23e4a1ed885c497e7b"
#LTCTEST: "02e3713c13e1cfab1298d15b3b2748d1ef943a960d8629b98cc36ff05706cb8a2d"
legendary
Activity: 3570
Merit: 1985
June 04, 2019, 06:13:26 AM
#25
no, il codice nella pagina funziona così: dal seed calcola il pin, il pin è poi usato per decrittare un altro seed, da cui sono ricavate le chiavi. Il check è sulla corrispondenza delle chiavi pubbliche (presenti in campi hidden del form) con quelle calcolate col secondo seed.
La modifica che ho fatto io è un semplice ciclo sul primo seed, che prova tutte le combinazioni con l'ultima parola cambiata

oggi ho provato a debuggare un pò il codice da chrome e ho capito un po meglio cosa fà, per curiosità domani (tempo permettendo) vedo se si riesce a fare la stessa cosa al di fuori, ad esempio con python, visto che effettivamente ti da già tutto quello che serve per verificare se la sequenza mnemonica è corretta.

chiaro, trovi librerie crittografiche open source per fare tutto, il più è avere tempo da perderci... io al momento non ne ho purtroppo
hero member
Activity: 784
Merit: 1416
June 03, 2019, 01:56:57 PM
#24
no, il codice nella pagina funziona così: dal seed calcola il pin, il pin è poi usato per decrittare un altro seed, da cui sono ricavate le chiavi. Il check è sulla corrispondenza delle chiavi pubbliche (presenti in campi hidden del form) con quelle calcolate col secondo seed.
La modifica che ho fatto io è un semplice ciclo sul primo seed, che prova tutte le combinazioni con l'ultima parola cambiata

oggi ho provato a debuggare un pò il codice da chrome e ho capito un po meglio cosa fà, per curiosità domani (tempo permettendo) vedo se si riesce a fare la stessa cosa al di fuori, ad esempio con python, visto che effettivamente ti da già tutto quello che serve per verificare se la sequenza mnemonica è corretta.
legendary
Activity: 3570
Merit: 1985
June 02, 2019, 11:06:54 AM
#23
L'op non ha il pin quindi penso sia il massimo che si può fare, se non sbaglio il codice modificato di quel sito assume che tu lo abbia giusto?


no, il codice nella pagina funziona così: dal seed calcola il pin, il pin è poi usato per decrittare un altro seed, da cui sono ricavate le chiavi. Il check è sulla corrispondenza delle chiavi pubbliche (presenti in campi hidden del form) con quelle calcolate col secondo seed.
La modifica che ho fatto io è un semplice ciclo sul primo seed, che prova tutte le combinazioni con l'ultima parola cambiata
hero member
Activity: 784
Merit: 1416
June 02, 2019, 10:14:59 AM
#22
L'op non ha il pin quindi penso sia il massimo che si può fare, se non sbaglio il codice modificato di quel sito assume che tu lo abbia giusto?

legendary
Activity: 3570
Merit: 1985
June 02, 2019, 09:05:33 AM
#21
hero member
Activity: 784
Merit: 1416
June 02, 2019, 05:24:17 AM
#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



legendary
Activity: 3570
Merit: 1985
June 01, 2019, 11:54:23 AM
#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(''+savedMnemonic+'');
    $('#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
hero member
Activity: 784
Merit: 1416
June 01, 2019, 09:00:23 AM
#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.
legendary
Activity: 3570
Merit: 1985
June 01, 2019, 06:36:27 AM
#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.
hero member
Activity: 784
Merit: 1416
June 01, 2019, 12: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.
legendary
Activity: 3570
Merit: 1985
May 31, 2019, 05:31:41 PM
#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.
legendary
Activity: 2534
Merit: 2624
May 31, 2019, 04: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)

legendary
Activity: 3724
Merit: 1738
Join the world-leading crypto sportsbook NOW!
May 31, 2019, 01: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
legendary
Activity: 3570
Merit: 1985
May 29, 2019, 05: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
member
Activity: 187
Merit: 45
May 29, 2019, 04: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".
hero member
Activity: 784
Merit: 1416
May 29, 2019, 01: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
member
Activity: 110
Merit: 94
May 28, 2019, 07:57:33 AM
#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
hero member
Activity: 784
Merit: 1416
May 28, 2019, 07:07:04 AM
#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
legendary
Activity: 2534
Merit: 2624
May 28, 2019, 06: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 ?


hero member
Activity: 784
Merit: 1416
May 28, 2019, 04: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.

member
Activity: 110
Merit: 94
May 28, 2019, 02:43:49 AM
#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 :/
hero member
Activity: 784
Merit: 1416
May 28, 2019, 12: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
member
Activity: 168
Merit: 86
May 27, 2019, 07: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
hero member
Activity: 784
Merit: 1416
May 26, 2019, 06:32:37 AM
#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.
member
Activity: 168
Merit: 86
May 26, 2019, 05: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.
Jump to: