The transactions output are to P2SH or P2WSH address where unlock script allows Alice to spend anytime, but Bob to spend in N days after broadcast time.
I am not much into coding or technical things, how a regular user can perform this task? Alice (owner) will just set an option of N days in a wallet. Then the wallet creates transactions automatically when sees new UTXO under control. Then it will send it to heir via some standard peer to peer channel (email, messenger, etc.) From Bob's (heir) side a wallet will get and store the tx. It can be new wallet software with this functionality or an add-on to existing one. Cicada were working on a Key Escrow System. Not sure if it was ever released as such.
|
|
|
Interesting but I can't tell myself if there's a logical explanation other than the (Wrong) logic that those set of words for sure spit out those parts of the hash.
It's not a one off with the same set of words in different positions, but do you also get the same findings with other sets of words? Or if you progressively replace 1 word in the same set with new words from dictionary?
Which v electrum?
I was running this specific set of words from the word list. I believe most of this code is from either v1 or 2 of electrum it's like creating the "old style" wallet format. From what I am seeing come back are far to close to say there is not something there. be it the way the words are being calculated into integer or otherwise. If I take the entire word list and use them the results do not come back like such only when exactly 12 words are selected you get this same start to them. It also works if you take any 12 words and do this function which to me seems very odd.
|
|
|
Holy crap.
That could have ended very bad indeed.
|
|
|
You have got something interesting but in my opinion its not so easy to detect those combination by using single partial match only. If you look deeply on those set of words then you can see there that in every single combination multiple words organised in different position. Its not like that same words are using on similar place or in a common combination each time. Every single time those words are making their pairs by changing previous combination. For those pairs of words easily more thousands of combination could be generated which is kinda tough to detect AFAIK.
Yes if you look at the words they are not in the same positions so why or how could the produce a hash with the same leading start as the previous one? thats my point. unless there something in the code I am not seeing that's causing it but from what I can see its all electrum code from a old wallet. I am wondering if there may be some kind of flaw with the old electrum wallets that people missed I cannot understand how 2 words sets with the same words but in very different positions can produce a hash with the same leading characters unless there is a problem along the road somewhere. I may be wrong but when you have 20k of these all very very very close it tells you something is wrong very wrong.
|
|
|
I can understand why you'd say it's strange, but normally hash would be totally different even if only 1 bit of the input is changed.
I wonder if you could try it again, but using cryptographic random function instead.
here is the entire script that produces them. Do you not find it strange that the words are all jumbled up but still you are getting hashes that show the same leading characters are matching. even though the words are not in the same place or even next to each other. as far as I am aware this is the old electrum code for "old style" wallets. def mn_encode( message ): out = [] for i in range(len(message)/8): word = message[8*i:8*i+8] x = int(word, 16) w1 = (x%n) w2 = ((x/n) + w1)%n w3 = ((x/n/n) + w2)%n out += [ words[w1], words[w2], words[w3] ] return out
def mn_decode( wlist ): out = '' for i in range(len(wlist)/3): word1, word2, word3 = wlist[3*i:3*i+3] w1 = words.index(word1) w2 = (words.index(word2))%n w3 = (words.index(word3))%n x = w1 +n*((w2-w1)%n) +n*n*((w3-w2)%n) out += '%08x'%x return out
def stretch_key(seed): oldseed = seed for i in range(100000): seed = hashlib.sha256(seed + oldseed).digest() return string_to_number( seed )
def mpk_from_seed(seed): curve = SECP256k1 secexp = stretch_key(seed) master_private_key = ecdsa.SigningKey.from_secret_exponent( secexp, curve = SECP256k1 ) master_public_key = master_private_key.get_verifying_key().to_string().encode('hex') return master_public_key
class Account(object): def __init__(self, v): self.addresses = v.get('0', []) self.change = v.get('1', [])
def dump(self): return {'0':self.addresses, '1':self.change}
def get_addresses(self, for_change): return self.change[:] if for_change else self.addresses[:]
def create_new_address(self, for_change): addresses = self.change if for_change else self.addresses n = len(addresses) address = self.get_address( for_change, n) addresses.append(address) return address
def get_address(self, for_change, n): pass def get_pubkeys(self, sequence): return [ self.get_pubkey( *sequence )] class OldAccount(Account): """ Privatekey(type,n) = Master_private_key + H(n|S|type) """
def __init__(self, v): self.addresses = v.get(0, []) self.change = v.get(1, []) self.mpk = v['mpk'].decode('hex')
def dump(self): return {0:self.addresses, 1:self.change}
@classmethod def mpk_from_seed(klass, seed): curve = SECP256k1 secexp = klass.stretch_key(seed) master_private_key = ecdsa.SigningKey.from_secret_exponent( secexp, curve = SECP256k1 ) master_public_key = master_private_key.get_verifying_key().to_string().encode('hex') return master_public_key
@classmethod def stretch_key(self,seed): oldseed = seed for i in range(100000): seed = hashlib.sha256(seed + oldseed).digest() return string_to_number( seed )
def get_sequence(self, for_change, n): return string_to_number( Hash( "%d:%d:"%(n,for_change) + self.mpk ) )
def get_address(self, for_change, n): pubkey = self.get_pubkey(for_change, n) address = public_key_to_bc_address( pubkey.decode('hex') ) return address
def get_pubkey(self, for_change, n): curve = SECP256k1 mpk = self.mpk z = self.get_sequence(for_change, n) master_public_key = ecdsa.VerifyingKey.from_string( mpk, curve = SECP256k1 ) pubkey_point = master_public_key.pubkey.point + z*curve.generator public_key2 = ecdsa.VerifyingKey.from_public_point( pubkey_point, curve = SECP256k1 ) return '04' + public_key2.to_string().encode('hex')
def get_private_key_from_stretched_exponent(self, for_change, n, secexp): order = generator_secp256k1.order() secexp = ( secexp + self.get_sequence(for_change, n) ) % order pk = number_to_string( secexp, generator_secp256k1.order() ) compressed = False return SecretToASecret( pk, compressed ) def get_private_key(self, seed, sequence): for_change, n = sequence secexp = self.stretch_key(seed) return self.get_private_key_from_stretched_exponent(for_change, n, secexp)
def check_seed(self, seed): curve = SECP256k1 secexp = self.stretch_key(seed) master_private_key = ecdsa.SigningKey.from_secret_exponent( secexp, curve = SECP256k1 ) master_public_key = master_private_key.get_verifying_key().to_string().encode('hex') if master_public_key != self.mpk: print_error('invalid password (mpk)') raise BaseException('Invalid password') return True
def redeem_script(self, sequence): return None
def b58encode(v): """ encode v, which is a string of bytes, to base58."""
long_value = 0L for (i, c) in enumerate(v[::-1]): long_value += (256**i) * ord(c)
result = '' while long_value >= __b58base: div, mod = divmod(long_value, __b58base) result = __b58chars[mod] + result long_value = div result = __b58chars[long_value] + result
# Bitcoin does a little leading-zero-compression: # leading 0-bytes in the input become leading-1s nPad = 0 for c in v: if c == '\0': nPad += 1 else: break
return (__b58chars[0]*nPad) + result
def b58decode(v, length): """ decode v into a string of len bytes.""" long_value = 0L for (i, c) in enumerate(v[::-1]): long_value += __b58chars.find(c) * (__b58base**i)
result = '' while long_value >= 256: div, mod = divmod(long_value, 256) result = chr(mod) + result long_value = div result = chr(long_value) + result
nPad = 0 for c in v: if c == __b58chars[0]: nPad += 1 else: break
result = chr(0)*nPad + result if length is not None and len(result) != length: return None
return result
__b58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' __b58base = len(__b58chars)
def EncodeBase58Check(vchIn): hash = Hash(vchIn) return b58encode(vchIn + hash[0:4])
def DecodeBase58Check(psz): vchRet = b58decode(psz, None) key = vchRet[0:-4] csum = vchRet[-4:] hash = Hash(key) cs32 = hash[0:4] if cs32 != csum: return None else: return key def public_key_to_bc_address(public_key): h160 = hash_160(public_key) return hash_160_to_bc_address(h160) def hash_160(public_key): try: md = hashlib.new('ripemd160') md.update(hashlib.sha256(public_key).digest()) return md.digest() except: import ripemd md = ripemd.new(hashlib.sha256(public_key).digest()) return md.digest() def hash_160_to_bc_address(h160, addrtype = 0): vh160 = chr(addrtype) + h160 h = Hash(vh160) addr = vh160 + h[0:4] return b58encode(addr) mnemonic_hash = lambda x: hmac_sha_512("Bitcoin mnemonic", x).encode('hex') hmac_sha_512 = lambda x,y: hmac.new(x, y, hashlib.sha512).digest() Hash = lambda x: hashlib.sha256(hashlib.sha256(x).digest()).digest()
def hack(t, d): while True: seed = mn_decode(guess) mpk = OldAccount.mpk_from_seed(seed) acc = OldAccount({'mpk':mpk, 0:[], 1:[]}) #pk = number_to_string( secexp, generator_secp256k1.order() ) #compressed = False # SecretToASecret( pk, compressed ) addy = acc.create_new_address(False) with open("addresses.txt", "a+") as myfile: myfile.write(mpk + ": " + addy + "\t" + seed + "\n") for example lets look at number 7 ['fruit', 'stone', 'enrich', 'cupboard', 'vendor', 'idle', 'alter', 'ensure', 'horn', 'segment', 'spawn', 'smooth'] 0: 1HX5wVovCUMmJCFuZ5PQ3JRFSvr1jeud6h: fed1b2acfef9e43800286ab300c9967a: ee4875dd10630520647378f69b0974be59b076d9443ff5b999645411bb156a6cc3934d67cfb9ab3 c7d97f5b933930d3f837b21000c91bf726fdc0d580ac6ef3d ['smooth', 'vendor', 'idle', 'enrich', 'segment', 'horn', 'alter', 'spawn', 'ensure', 'stone', 'fruit', 'cupboard'] 0: 13WJoAWkqftY9DPxBEDDkk3xCTdK6PM1Yg: fed19f9fffc3c6da0028645900c9967d: d2e3b54a56868fa4d201c72aedb6e9d99a55cad5a1215d0d87e0399cc70663e8194cdba5dbedd99 250b5110941d5e326ae32bb0a14c84a1847fc5a51cc8d174f why would it return the 2 values that are so close at the start this is not a one off by the way. if i let this run for hours 95% of them have a relation like this even with the words being used at very different parts of the seed. I think there is something more here that I am missing but those hashes should not be so close considering the functions used to create them? Thanks guys. Magic
|
|
|
This guide is well out of date now and missing key info and things that need to be done.
if you fork early coins that still have the old SSL libs ect for example you open up your coin to attacks.
This guide is outdated and should NOT be used for a production coin now.
Guys it was posted in 2013 lol just a touch out of date don't you think lol
|
|
|
Hello everyone. I have a strange topic I want to ask about, I have been doing some testing with seed words and have found something interesting that I cannot explain and I am looking for some advice or possibly the answer to why this is happening. So I have a small python script that is used the old electrum code to generate the MPK seed and PK and PubK. After running it with a specific set of words I started to notice many similarity in some of the hashes being returned to me. far too many to be a coincidence. the word set being used is ['ensure', 'alter', 'segment', 'spawn', 'cupboard', 'idle', 'horn', 'enrich', 'vendor', 'smooth', 'fruit', 'stone'] Here are some of the results that came back. Partial Match 1 ['ensure', 'alter', 'segment', 'spawn', 'cupboard', 'idle', 'horn', 'enrich', 'vendor', 'smooth', 'fruit', 'stone'] 0: 1BC5kyKk4Cp8BQQnCGUrGyALKVRAFv8ZbC: [b]0142aa16fea967b90142aa1700f20785[/b]: 47acd3ff230114489bd8843f5844e30b918dbf9d1959c4005555bb7a1ff5c51811259339652327cfb0faa221cb64d2726daa105901eeea6a66cc7503258da122
['horn', 'enrich', 'vendor', 'segment', 'smooth', 'idle', 'alter', 'fruit', 'stone', 'cupboard', 'ensure', 'spawn'] 0: 13XYF15nGbyTZCSAF1dzaGhmES4kdcqE3U: [b]0142aa17ff4a937e00c9d5f71003c8196[/b]: 62ea4c8b70b138180a5bae9516490f577d613a9988ac085267598d24f820c594ead48fcc09ed804222760b877927bd6acaf1900943d79a5adffdac42b41bd16b P2 ['idle', 'smooth', 'enrich', 'segment', 'fruit', 'cupboard', 'horn', 'vendor', 'ensure', 'alter', 'stone', 'spawn'] 0: 13MdNvvebwPoADLqh8nMip7tgtHyBCe8rf: [b]ff731dea00c9a988ff730ae1fefa2a0d[/b]: 12a8d7a5d021a0b55f31c08877ee468a6f95c01a9f391e85a29d4d0cd4bb71c482e741f5a73b43c6fbd0f9a1cc3e4ef3b72dd493ee0d27ac3b6fd061d4c0474f
['smooth', 'cupboard', 'horn', 'idle', 'ensure', 'spawn', 'enrich', 'vendor', 'segment', 'alter', 'stone', 'fruit'] 0: 14aB3QzdqrZYWJ8ctoPbzcuukzEuVLTn7N:[b] ff73048910014696c100147c7cff7330f9[/b]: d7a5be995e9e0aade40bbd41f0b418597f912c79dfbcc8b14b3247ea52b09a8b9a632c90d8a388cafdc147e6595f9c76a4b530e99f46a25abe420b039d51aae6 P3 ['segment', 'horn', 'enrich', 'smooth', 'cupboard', 'idle', 'ensure', 'alter', 'fruit', 'vendor', 'stone', 'spawn'] 0: 1BYyy7W4SxTV18vtX343AvDVnpg9WSsw5S: [b]ffebe55afea94e5500f1facefef9f745[/b]: 0184be21c8607345ea934384bfce9b00b6b0c99d40910b43944946d071306705ab603b6f9f7e8ae30cd7b6a59f2a926a38af711ef68fdaa41d4532fc4640921a
['spawn', 'ensure', 'enrich', 'cupboard', 'horn', 'smooth', 'alter', 'idle', 'fruit', 'stone', 'segment', 'vendor'] 0: 1QHzzhLEYb1jmmerkDBeasfcpHNoq4dNVX: [b]ffebfebd0078e734011a5f2300509c45[/b]: c799a5f28bce411ff19c445c2ccce8ff310fdd04ee76cbc36e86be451cbebb5176b14604461ab9d6eeee38741635092b3d46da772e1d1a0ca6981e25c5b9f148 P4 ['smooth', 'spawn', 'cupboard', 'idle', 'horn', 'ensure', 'alter', 'fruit', 'segment', 'enrich', 'vendor', 'stone'] 0: 18mKvV94QZa78GvQAM39LBNLMbaoHhqL3: [b]0142a3bf100146fc60050cf0b0050dbc0[/b]: 8f71f7cfdfd400c6313cbfa99ef3b8964dfc6d3022d797e84e7b5e1a3d177d7837ff3976c7c588b163aa433127c000cf2d850c6b321688dbfdaa63ca8c67b67a
['fruit', 'ensure', 'stone', 'cupboard', 'horn', 'spawn', 'smooth', 'vendor', 'enrich', 'alter', 'segment', 'idle'] 0: 1AsFMbNHudUAit1748jaPxL2E45nLRKou5: [b]0142b07210014304cff224ee7fefa16ff:[/b] a3cdb77d9971ee5f72d93859b051cd7ed67e104f05ab83d92eb00561aa2baf1b1af8ad61f799bb169d473e753c537f7166d5698ead59f198ae8565f325bdea4f P5 ['segment', 'ensure', 'horn', 'fruit', 'enrich', 'alter', 'idle', 'vendor', 'spawn', 'smooth', 'stone', 'cupboard'] 0: 1DYNQRdnELPQNpc8z483TfS6JthT7GEjjz: [b]005095e81003c8e46ff4ad2fa100146973[/b]: 05e35ce254f82deaa6b5ca9a1d1cef64c5242f4281a948b430385e6d7c67157285f92025dd16a82e4fb98033f553e6e4b8b9c85dd404b71d0ef6d57f11f4b870
['fruit', 'spawn', 'ensure', 'cupboard', 'stone', 'enrich', 'idle', 'alter', 'horn', 'segment', 'smooth', 'vendor'] 0: 14QqCQiTkJVyHc5KgsuJj3dvVQiZM6pWWT: [b]00509c40fed1994800a164ea0079009a[/b]: 685e32aae2053931b1a06ca39d9e2ae0c26b112ceb831f433ac231f6146f06e98ee985f02548fa31735e84c892f2310da346be48d0b627e79cd13f0c2193d27a P6 ['ensure', 'stone', 'fruit', 'horn', 'cupboard', 'spawn', 'idle', 'alter', 'segment', 'smooth', 'vendor', 'enrich'] 0: 1AoCMiZEiuUwdCCyf2bbg9HBbBYqqivd7: [b]ff731deeff2261f3011a6bd6ff224ee7:[/b] 5ec064a83f2a19d3736e1a96f1eaa3cd54cd8e75fe5351d0e986a2dba5e27b437e36855bb3368c28c21a36f76a3c2844d5ce1acf071a0daa4d0207d3da54b042
['horn', 'vendor', 'smooth', 'alter', 'segment', 'ensure', 'spawn', 'idle', 'stone', 'fruit', 'enrich', 'cupboard'] 0: 1Yq6kidaUtpzdprSRGKePBNHXjU2GrcBM:[b] ffec11cdff9b758f01e408a5016afb62[/b]: b5dc00ff63b649abd61be60d58b1909f25c45e5f08900d59507ff39f06a2013aa6c626eb56112efa8bae2acaaa19fc2dfc9f361f373c981c8ec4619d489fca63
P7 ['fruit', 'stone', 'enrich', 'cupboard', 'vendor', 'idle', 'alter', 'ensure', 'horn', 'segment', 'spawn', 'smooth'] 0: 1HX5wVovCUMmJCFuZ5PQ3JRFSvr1jeud6h: [b]fed1b2acfef9e43800286ab300c9967a:[/b] ee4875dd10630520647378f69b0974be59b076d9443ff5b999645411bb156a6cc3934d67cfb9ab3c7d97f5b933930d3f837b21000c91bf726fdc0d580ac6ef3d
['smooth', 'vendor', 'idle', 'enrich', 'segment', 'horn', 'alter', 'spawn', 'ensure', 'stone', 'fruit', 'cupboard'] 0: 13WJoAWkqftY9DPxBEDDkk3xCTdK6PM1Yg:[b] fed19f9fffc3c6da0028645900c9967d[/b]: d2e3b54a56868fa4d201c72aedb6e9d99a55cad5a1215d0d87e0399cc70663e8194cdba5dbedd99250b5110941d5e326ae32bb0a14c84a1847fc5a51cc8d174f Further Breakdown Words Used : ['ensure', 'alter', 'segment', 'spawn', 'cupboard', 'idle', 'horn', 'enrich', 'vendor', 'smooth', 'fruit', 'stone'] 0142aa16fea967b90142aa1700f20785 = 1BC5kyKk4Cp8BQQnCGUrGyALKVRAFv8ZbC
Words Used: ['horn', 'enrich', 'vendor', 'segment', 'smooth', 'idle', 'alter', 'fruit', 'stone', 'cupboard', 'ensure', 'spawn'] 0142aa17ff4a937e00c9d5f71003c8196 = 13XYF15nGbyTZCSAF1dzaGhmES4kdcqE3U
Words Used: ['idle', 'smooth', 'enrich', 'segment', 'fruit', 'cupboard', 'horn', 'vendor', 'ensure', 'alter', 'stone', 'spawn'] ff731dea00c9a988ff730ae1fefa2a0d = 13MdNvvebwPoADLqh8nMip7tgtHyBCe8rf
Words Used: ['smooth', 'cupboard', 'horn', 'idle', 'ensure', 'spawn', 'enrich', 'vendor', 'segment', 'alter', 'stone', 'fruit'] ff73048910014696c100147c7cff7330f9 = 14aB3QzdqrZYWJ8ctoPbzcuukzEuVLTn7N
Words Used: ['smooth', 'spawn', 'cupboard', 'idle', 'horn', 'ensure', 'alter', 'fruit', 'segment', 'enrich', 'vendor', 'stone'] 0142a3bf100146fc60050cf0b0050dbc0 = 18mKvV94QZa78GvQAM39LBNLMbaoHhqL3
Words Used: ['fruit', 'ensure', 'stone', 'cupboard', 'horn', 'spawn', 'smooth', 'vendor', 'enrich', 'alter', 'segment', 'idle'] 0142b07210014304cff224ee7fefa16ff = 1AsFMbNHudUAit1748jaPxL2E45nLRKou5
Words Used: ['segment', 'ensure', 'horn', 'fruit', 'enrich', 'alter', 'idle', 'vendor', 'spawn', 'smooth', 'stone', 'cupboard'] 005095e81003c8e46ff4ad2fa100146973 = 1DYNQRdnELPQNpc8z483TfS6JthT7GEjjz
Words Used: ['fruit', 'spawn', 'ensure', 'cupboard', 'stone', 'enrich', 'idle', 'alter', 'horn', 'segment', 'smooth', 'vendor'] 00509c40fed1994800a164ea0079009a = 14QqCQiTkJVyHc5KgsuJj3dvVQiZM6pWWT For reference here is parts of the code used to generate them.. def mpk_from_seed(seed): curve = SECP256k1 secexp = stretch_key(seed) master_private_key = ecdsa.SigningKey.from_secret_exponent( secexp, curve = SECP256k1 ) master_public_key = master_private_key.get_verifying_key().to_string().encode('hex') return master_public_key
while True: guess = random.sample(words,12) #guess = "sensure alter segment spawn cupboard idle horn enrich vendor smooth fruit stone".split() print guess seed = mn_decode(guess) mpk = OldAccount.mpk_from_seed(seed) acc = OldAccount({'mpk':mpk, 0:[], 1:[]}) secexp = number_to_string(secexp, generator_secp256k1.order()) compressed = False SecretToASecret( pk, compressed ) My thoughts were that the old electrum way of doing things each digit represented by a word is variable, it depends on the previous word. if this is the case the returned hashes make no logical explanation for there matching pairs for example if you look at the first two being 0142aa16fea967b90142aa1700f20785 ['ensure', 'alter', 'segment', 'spawn', 'cupboard', 'idle', 'horn', 'enrich', 'vendor', 'smooth', 'fruit', 'stone'] and 0142aa17ff4a937e00c9d5f71003c8196 ['horn', 'enrich', 'vendor', 'segment', 'smooth', 'idle', 'alter', 'fruit', 'stone', 'cupboard', 'ensure', 'spawn'] if the were to follow this rule then the hashes should be much much different as the words used are in a totally different order. I also noticed many HEX values showing up during this for color values. 00509c40fed1994800a164ea0079009a = 14QqCQiTkJVyHc5KgsuJj3dvVQiZM6pWWT #00509c = Royal Blue | RGBA 90, 80, 156, 1) Dose the old electrum style wallet use color hex codes as part of the number process because from what I am seeing there seems to be some kind of detectable issue with the hashing of the same words in different orders ? I hope someone can shed some light on this matter more as I am now rather stumped on where to look into this further. Magic
|
|
|
I am wondering how OTP will prevent if you are sending crypto-currency into wrong address. OTP will ensure that fund sending by right person, it will not verify address that you are going to send funds.
I also don't see how OTP can mitigate cases where a user sends funds to the wrong address (eg. due to clipboard-malware). The only way I currently see to avoid this problem is to (1) double check the address before pressing send and (2) confirming the address over a secondary device / communication channel (eg. via phone or email). I'm not sure if there's a good solution for automating / integrating this process of recipient confirmation though. Sometimes this is not enough the clipboard malware strains are becoming much more in-depth you may paste the correct address double check it but when the send button is presses the malware then manipulates the data to replace the address only after it's send do you realize that the funds are going to another address and not the one being pasted in. The old paste in style is not the cyber crims choice of tool anymore manipulation of the packet it where they seem to be at now.
|
|
|
BitcoinTX.net - Great name for a Block explorer / mining pool. BitcoinOptimist.com - Would work very well as a news outlet or price analysis site. CryptoGear.net - Good name for crypto hardware sales BtcExplode.com - This could be good as a price alert site (say bitcoin starts to pump this site could send alerts to people when bitcoin explodes alerts go out) CryptoInforms.com - Not sure about this one possible it may be good to put regulation information here for people interested in starting crypto company. BtcDiva.com - A site just for the ladies out there make it pink put some cute coins there and trinkets for sale it might do very well.
|
|
|
If I am not wrong, the BTC-e guys openly challenged the feds after the latter tried multiple times to get the website closed down (for the refusal to conduct KYC). They thought that since they were all based in Russia, the Feds will never be able to catch them. It ended very badly for them. First, one of the founders (Alexander Vinnik) was arrested in Greece and in all certainty he will be deported to the US (where he will be given life without parole). Just a few weeks later, a part of their funds (both crypto and fiat) were seized by the feds. And surprisingly even after all this, these guys refused to back down. They set up another website (WEx.nz), restored the user balance (partly in crypto and partly in tokens), resumed trading and once again challenged the feds. The feds devoted all their resources to finish them once and for all, and in the end it was a similar story.
I'm sure it was reported that Vinnik had gone on hunger-strike in protest about being extradited to the US to faces charges. I think he ended up in quite a serious condition and his legal team were fighting the extradition to the US. https://www.coindesk.com/alleged-btc-e-operator-alexander-vinnik-seeks-extradition-to-russiahttps://www.facebook.com/cointelegraph/videos/alexander-vinnik-to-go-on-hunger-strike-from-monday/319482565448456/Seems that there arrest paperwork at the time was also out of date at the time of Mr Vinnik's arrest which in turn should cause the investigation some problems as they technically broke the law to detain Mr Vinnik.
|
|
|
import hashlib, ecdsa from ecdsa.curves import SECP256k1 from ecdsa.ellipticcurve import Point from ecdsa.util import string_to_number, number_to_string from ecdsa.ecdsa import curve_secp256k1, generator_secp256k1
numberofreceivingaddresses=300; numberofchangeaddresses=300;
def sha256(x): return hashlib.sha256(x).digest()
def Hash(x): if type(x) is unicode: x=x.encode('utf-8') return sha256(sha256(x))
def pw_decode(s, password): if password is not None: secret = Hash(password) try: d = DecodeAES(secret, s).decode("utf8") except Exception: raise Exception('Invalid password') return d else: return s
def get_address(mpk, for_change, n): pubkey = get_pubkey(mpk,for_change, n) address = public_key_to_bc_address( pubkey.decode('hex') ) return address
def get_pubkey(mpk, for_change, n): curve = SECP256k1 z = get_sequence(mpk,for_change,n); master_public_key = ecdsa.VerifyingKey.from_string( mpk, curve = SECP256k1 ) pubkey_point = master_public_key.pubkey.point + z*curve.generator public_key2 = ecdsa.VerifyingKey.from_public_point( pubkey_point, curve = SECP256k1 ) return '04' + public_key2.to_string().encode('hex')
def get_sequence(mpk, for_change, n): return string_to_number( Hash( "%d:%d:"%(n,for_change) + mpk ) )
def get_private_key_from_stretched_exponent(mpk,for_change, n, secexp): order = generator_secp256k1.order() secexp = ( secexp + get_sequence(mpk,for_change, n) ) % order pk = number_to_string( secexp, generator_secp256k1.order() ) compressed = False return SecretToASecret( pk, compressed ) def get_private_key(mpk,seed, sequence): for_change, n = sequence secexp = stretch_key(seed) pk = get_private_key_from_stretched_exponent(mpk,for_change, n, secexp) return pk;
def stretch_key(seed): oldseed = seed for i in range(100000): seed = hashlib.sha256(seed + oldseed).digest() return string_to_number( seed )
def public_key_to_bc_address(public_key): h160 = hash_160(public_key) return hash_160_to_bc_address(h160)
def SecretToASecret(secret, compressed=False, addrtype=0): vchIn = chr((addrtype+128)&255) + secret if compressed: vchIn += '\01' return EncodeBase58Check(vchIn)
def EncodeBase58Check(vchIn): hash = Hash(vchIn) return b58encode(vchIn + hash[0:4])
def b58encode(v): """ encode v, which is a string of bytes, to base58."""
long_value = 0L for (i, c) in enumerate(v[::-1]): long_value += (256**i) * ord(c) result = '' while long_value >= __b58base: div, mod = divmod(long_value, __b58base) result = __b58chars[mod] + result long_value = div result = __b58chars[long_value] + result
# Bitcoin does a little leading-zero-compression: # leading 0-bytes in the input become leading-1s nPad = 0 for c in v: if c == '\0': nPad += 1 else: break
return (__b58chars[0]*nPad) + result
def hash_160(public_key): try: md = hashlib.new('ripemd160') md.update(sha256(public_key)) return md.digest() except Exception: import ripemd md = ripemd.new(sha256(public_key)) return md.digest() def hash_160_to_bc_address(h160, addrtype = 0): vh160 = chr(addrtype) + h160 h = Hash(vh160) addr = vh160 + h[0:4] return b58encode(addr)
__b58chars = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz' __b58base = len(__b58chars)
##-------------------------------------------------------------------------------
words = [ "like", "just", "love", "know", "never", "want", "time", "out", "there", "make", "look", "eye", "down", "only", "think", "heart", "back", "then", "into", "about", "more", "away", "still", "them", "take", "thing", "even", "through", "long", "always", "world", "too", "friend", "tell", "try", "hand", "thought", "over", "here", "other", "need", "smile", "again", "much", "cry", "been", "night", "ever", "little", "said", "end", "some", "those", "around", "mind", "people", "girl", "leave", "dream", "left", "turn", "myself", "give", "nothing", "really", "off", "before", "something", "find", "walk", "wish", "good", "once", "place", "ask", "stop", "keep", "watch", "seem", "everything", "wait", "got", "yet", "made", "remember", "start", "alone", "run", "hope", "maybe", "believe", "body", "hate", "after", "close", "talk", "stand", "own", "each", "hurt", "help", "home", "god", "soul", "new", "many", "two", "inside", "should", "true", "first", "fear", "mean", "better", "play", "another", "gone", "change", "use", "wonder", "someone", "hair", "cold", "open", "best", "any", "behind", "happen", "water", "dark", "laugh", "stay", "forever", "name", "work", "show", "sky", "break", "came", "deep", "door", "put", "black", "together", "upon", "happy", "such", "great", "white", "matter", "fill", "past", "please", "burn", "cause", "enough", "touch", "moment", "soon", "voice", "scream", "anything", "stare", "sound", "red", "everyone", "hide", "kiss", "truth", "death", "beautiful", "mine", "blood", "broken", "very", "pass", "next", "forget", "tree", "wrong", "air", "mother", "understand", "lip", "hit", "wall", "memory", "sleep", "free", "high", "realize", "school", "might", "skin", "sweet", "perfect", "blue", "kill", "breath", "dance", "against", "fly", "between", "grow", "strong", "under", "listen", "bring", "sometimes", "speak", "pull", "person", "become", "family", "begin", "ground", "real", "small", "father", "sure", "feet", "rest", "young", "finally", "land", "across", "today", "different", "guy", "line", "fire", "reason", "reach", "second", "slowly", "write", "eat", "smell", "mouth", "step", "learn", "three", "floor", "promise", "breathe", "darkness", "push", "earth", "guess", "save", "song", "above", "along", "both", "color", "house", "almost", "sorry", "anymore", "brother", "okay", "dear", "game", "fade", "already", "apart", "warm", "beauty", "heard", "notice", "question", "shine", "began", "piece", "whole", "shadow", "secret", "street", "within", "finger", "point", "morning", "whisper", "child", "moon", "green", "story", "glass", "kid", "silence", "since", "soft", "yourself", "empty", "shall", "angel", "answer", "baby", "bright", "dad", "path", "worry", "hour", "drop", "follow", "power", "war", "half", "flow", "heaven", "act", "chance", "fact", "least", "tired", "children", "near", "quite", "afraid", "rise", "sea", "taste", "window", "cover", "nice", "trust", "lot", "sad", "cool", "force", "peace", "return", "blind", "easy", "ready", "roll", "rose", "drive", "held", "music", "beneath", "hang", "mom", "paint", "emotion", "quiet", "clear", "cloud", "few", "pretty", "bird", "outside", "paper", "picture", "front", "rock", "simple", "anyone", "meant", "reality", "road", "sense", "waste", "bit", "leaf", "thank", "happiness", "meet", "men", "smoke", "truly", "decide", "self", "age", "book", "form", "alive", "carry", "escape", "damn", "instead", "able", "ice", "minute", "throw", "catch", "leg", "ring", "course", "goodbye", "lead", "poem", "sick", "corner", "desire", "known", "problem", "remind", "shoulder", "suppose", "toward", "wave", "drink", "jump", "woman", "pretend", "sister", "week", "human", "joy", "crack", "grey", "pray", "surprise", "dry", "knee", "less", "search", "bleed", "caught", "clean", "embrace", "future", "king", "son", "sorrow", "chest", "hug", "remain", "sat", "worth", "blow", "daddy", "final", "parent", "tight", "also", "create", "lonely", "safe", "cross", "dress", "evil", "silent", "bone", "fate", "perhaps", "anger", "class", "scar", "snow", "tiny", "tonight", "continue", "control", "dog", "edge", "mirror", "month", "suddenly", "comfort", "given", "loud", "quickly", "gaze", "plan", "rush", "stone", "town", "battle", "ignore", "spirit", "stood", "stupid", "yours", "brown", "build", "dust", "hey", "kept", "pay", "phone", "twist", "although", "ball", "beyond", "hidden", "nose", "taken", "fail", "float", "pure", "somehow", "wash", "wrap", "angry", "cheek", "creature", "forgotten", "heat", "rip", "single", "space", "special", "weak", "whatever", "yell", "anyway", "blame", "job", "choose", "country", "curse", "drift", "echo", "figure", "grew", "laughter", "neck", "suffer", "worse", "yeah", "disappear", "foot", "forward", "knife", "mess", "somewhere", "stomach", "storm", "beg", "idea", "lift", "offer", "breeze", "field", "five", "often", "simply", "stuck", "win", "allow", "confuse", "enjoy", "except", "flower", "seek", "strength", "calm", "grin", "gun", "heavy", "hill", "large", "ocean", "shoe", "sigh", "straight", "summer", "tongue", "accept", "crazy", "everyday", "exist", "grass", "mistake", "sent", "shut", "surround", "table", "ache", "brain", "destroy", "heal", "nature", "shout", "sign", "stain", "choice", "doubt", "glance", "glow", "mountain", "queen", "stranger", "throat", "tomorrow", "city", "either", "fish", "flame", "rather", "shape", "spin", "spread", "ash", "distance", "finish", "image", "imagine", "important", "nobody", "shatter", "warmth", "became", "feed", "flesh", "funny", "lust", "shirt", "trouble", "yellow", "attention", "bare", "bite", "money", "protect", "amaze", "appear", "born", "choke", "completely", "daughter", "fresh", "friendship", "gentle", "probably", "six", "deserve", "expect", "grab", "middle", "nightmare", "river", "thousand", "weight", "worst", "wound", "barely", "bottle", "cream", "regret", "relationship", "stick", "test", "crush", "endless", "fault", "itself", "rule", "spill", "art", "circle", "join", "kick", "mask", "master", "passion", "quick", "raise", "smooth", "unless", "wander", "actually", "broke", "chair", "deal", "favorite", "gift", "note", "number", "sweat", "box", "chill", "clothes", "lady", "mark", "park", "poor", "sadness", "tie", "animal", "belong", "brush", "consume", "dawn", "forest", "innocent", "pen", "pride", "stream", "thick", "clay", "complete", "count", "draw", "faith", "press", "silver", "struggle", "surface", "taught", "teach", "wet", "bless", "chase", "climb", "enter", "letter", "melt", "metal", "movie", "stretch", "swing", "vision", "wife", "beside", "crash", "forgot", "guide", "haunt", "joke", "knock", "plant", "pour", "prove", "reveal", "steal", "stuff", "trip", "wood", "wrist", "bother", "bottom", "crawl", "crowd", "fix", "forgive", "frown", "grace", "loose", "lucky", "party", "release", "surely", "survive", "teacher", "gently", "grip", "speed", "suicide", "travel", "treat", "vein", "written", "cage", "chain", "conversation", "date", "enemy", "however", "interest", "million", "page", "pink", "proud", "sway", "themselves", "winter", "church", "cruel", "cup", "demon", "experience", "freedom", "pair", "pop", "purpose", "respect", "shoot", "softly", "state", "strange", "bar", "birth", "curl", "dirt", "excuse", "lord", "lovely", "monster", "order", "pack", "pants", "pool", "scene", "seven", "shame", "slide", "ugly", "among", "blade", "blonde", "closet", "creek", "deny", "drug", "eternity", "gain", "grade", "handle", "key", "linger", "pale", "prepare", "swallow", "swim", "tremble", "wheel", "won", "cast", "cigarette", "claim", "college", "direction", "dirty", "gather", "ghost", "hundred", "loss", "lung", "orange", "present", "swear", "swirl", "twice", "wild", "bitter", "blanket", "doctor", "everywhere", "flash", "grown", "knowledge", "numb", "pressure", "radio", "repeat", "ruin", "spend", "unknown", "buy", "clock", "devil", "early", "false", "fantasy", "pound", "precious", "refuse", "sheet", "teeth", "welcome", "add", "ahead", "block", "bury", "caress", "content", "depth", "despite", "distant", "marry", "purple", "threw", "whenever", "bomb", "dull", "easily", "grasp", "hospital", "innocence", "normal", "receive", "reply", "rhyme", "shade", "someday", "sword", "toe", "visit", "asleep", "bought", "center", "consider", "flat", "hero", "history", "ink", "insane", "muscle", "mystery", "pocket", "reflection", "shove", "silently", "smart", "soldier", "spot", "stress", "train", "type", "view", "whether", "bus", "energy", "explain", "holy", "hunger", "inch", "magic", "mix", "noise", "nowhere", "prayer", "presence", "shock", "snap", "spider", "study", "thunder", "trail", "admit", "agree", "bag", "bang", "bound", "butterfly", "cute", "exactly", "explode", "familiar", "fold", "further", "pierce", "reflect", "scent", "selfish", "sharp", "sink", "spring", "stumble", "universe", "weep", "women", "wonderful", "action", "ancient", "attempt", "avoid", "birthday", "branch", "chocolate", "core", "depress", "drunk", "especially", "focus", "fruit", "honest", "match", "palm", "perfectly", "pillow", "pity", "poison", "roar", "shift", "slightly", "thump", "truck", "tune", "twenty", "unable", "wipe", "wrote", "coat", "constant", "dinner", "drove", "egg", "eternal", "flight", "flood", "frame", "freak", "gasp", "glad", "hollow", "motion", "peer", "plastic", "root", "screen", "season", "sting", "strike", "team", "unlike", "victim", "volume", "warn", "weird", "attack", "await", "awake", "built", "charm", "crave", "despair", "fought", "grant", "grief", "horse", "limit", "message", "ripple", "sanity", "scatter", "serve", "split", "string", "trick", "annoy", "blur", "boat", "brave", "clearly", "cling", "connect", "fist", "forth", "imagination", "iron", "jock", "judge", "lesson", "milk", "misery", "nail", "naked", "ourselves", "poet", "possible", "princess", "sail", "size", "snake", "society", "stroke", "torture", "toss", "trace", "wise", "bloom", "bullet", "cell", "check", "cost", "darling", "during", "footstep", "fragile", "hallway", "hardly", "horizon", "invisible", "journey", "midnight", "mud", "nod", "pause", "relax", "shiver", "sudden", "value", "youth", "abuse", "admire", "blink", "breast", "bruise", "constantly", "couple", "creep", "curve", "difference", "dumb", "emptiness", "gotta", "honor", "plain", "planet", "recall", "rub", "ship", "slam", "soar", "somebody", "tightly", "weather", "adore", "approach", "bond", "bread", "burst", "candle", "coffee", "cousin", "crime", "desert", "flutter", "frozen", "grand", "heel", "hello", "language", "level", "movement", "pleasure", "powerful", "random", "rhythm", "settle", "silly", "slap", "sort", "spoken", "steel", "threaten", "tumble", "upset", "aside", "awkward", "bee", "blank", "board", "button", "card", "carefully", "complain", "crap", "deeply", "discover", "drag", "dread", "effort", "entire", "fairy", "giant", "gotten", "greet", "illusion", "jeans", "leap", "liquid", "march", "mend", "nervous", "nine", "replace", "rope", "spine", "stole", "terror", "accident", "apple", "balance", "boom", "childhood", "collect", "demand", "depression", "eventually", "faint", "glare", "goal", "group", "honey", "kitchen", "laid", "limb", "machine", "mere", "mold", "murder", "nerve", "painful", "poetry", "prince", "rabbit", "shelter", "shore", "shower", "soothe", "stair", "steady", "sunlight", "tangle", "tease", "treasure", "uncle", "begun", "bliss", "canvas", "cheer", "claw", "clutch", "commit", "crimson", "crystal", "delight", "doll", "existence", "express", "fog", "football", "gay", "goose", "guard", "hatred", "illuminate", "mass", "math", "mourn", "rich", "rough", "skip", "stir", "student", "style", "support", "thorn", "tough", "yard", "yearn", "yesterday", "advice", "appreciate", "autumn", "bank", "beam", "bowl", "capture", "carve", "collapse", "confusion", "creation", "dove", "feather", "girlfriend", "glory", "government", "harsh", "hop", "inner", "loser", "moonlight", "neighbor", "neither", "peach", "pig", "praise", "screw", "shield", "shimmer", "sneak", "stab", "subject", "throughout", "thrown", "tower", "twirl", "wow", "army", "arrive", "bathroom", "bump", "cease", "cookie", "couch", "courage", "dim", "guilt", "howl", "hum", "husband", "insult", "led", "lunch", "mock", "mostly", "natural", "nearly", "needle", "nerd", "peaceful", "perfection", "pile", "price", "remove", "roam", "sanctuary", "serious", "shiny", "shook", "sob", "stolen", "tap", "vain", "void", "warrior", "wrinkle", "affection", "apologize", "blossom", "bounce", "bridge", "cheap", "crumble", "decision", "descend", "desperately", "dig", "dot", "flip", "frighten", "heartbeat", "huge", "lazy", "lick", "odd", "opinion", "process", "puzzle", "quietly", "retreat", "score", "sentence", "separate", "situation", "skill", "soak", "square", "stray", "taint", "task", "tide", "underneath", "veil", "whistle", "anywhere", "bedroom", "bid", "bloody", "burden", "careful", "compare", "concern", "curtain", "decay", "defeat", "describe", "double", "dreamer", "driver", "dwell", "evening", "flare", "flicker", "grandma", "guitar", "harm", "horrible", "hungry", "indeed", "lace", "melody", "monkey", "nation", "object", "obviously", "rainbow", "salt", "scratch", "shown", "shy", "stage", "stun", "third", "tickle", "useless", "weakness", "worship", "worthless", "afternoon", "beard", "boyfriend", "bubble", "busy", "certain", "chin", "concrete", "desk", "diamond", "doom", "drawn", "due", "felicity", "freeze", "frost", "garden", "glide", "harmony", "hopefully", "hunt", "jealous", "lightning", "mama", "mercy", "peel", "physical", "position", "pulse", "punch", "quit", "rant", "respond", "salty", "sane", "satisfy", "savior", "sheep", "slept", "social", "sport", "tuck", "utter", "valley", "wolf", "aim", "alas", "alter", "arrow", "awaken", "beaten", "belief", "brand", "ceiling", "cheese", "clue", "confidence", "connection", "daily", "disguise", "eager", "erase", "essence", "everytime", "expression", "fan", "flag", "flirt", "foul", "fur", "giggle", "glorious", "ignorance", "law", "lifeless", "measure", "mighty", "muse", "north", "opposite", "paradise", "patience", "patient", "pencil", "petal", "plate", "ponder", "possibly", "practice", "slice", "spell", "stock", "strife", "strip", "suffocate", "suit", "tender", "tool", "trade", "velvet", "verse", "waist", "witch", "aunt", "bench", "bold", "cap", "certainly", "click", "companion", "creator", "dart", "delicate", "determine", "dish", "dragon", "drama", "drum", "dude", "everybody", "feast", "forehead", "former", "fright", "fully", "gas", "hook", "hurl", "invite", "juice", "manage", "moral", "possess", "raw", "rebel", "royal", "scale", "scary", "several", "slight", "stubborn", "swell", "talent", "tea", "terrible", "thread", "torment", "trickle", "usually", "vast", "violence", "weave", "acid", "agony", "ashamed", "awe", "belly", "blend", "blush", "character", "cheat", "common", "company", "coward", "creak", "danger", "deadly", "defense", "define", "depend", "desperate", "destination", "dew", "duck", "dusty", "embarrass", "engine", "example", "explore", "foe", "freely", "frustrate", "generation", "glove", "guilty", "health", "hurry", "idiot", "impossible", "inhale", "jaw", "kingdom", "mention", "mist", "moan", "mumble", "mutter", "observe", "ode", "pathetic", "pattern", "pie", "prefer", "puff", "rape", "rare", "revenge", "rude", "scrape", "spiral", "squeeze", "strain", "sunset", "suspend", "sympathy", "thigh", "throne", "total", "unseen", "weapon", "weary" ]
def mn_decode( wlist ): n=1626; out = '' for i in range(len(wlist)/3): word1, word2, word3 = wlist[3*i:3*i+3] w1 = words.index(word1) w2 = (words.index(word2))%n w3 = (words.index(word3))%n x = w1 +n*((w2-w1)%n) +n*n*((w3-w2)%n) out += '%08x'%x return out
##--------------------------------------------------------------------------------
clue="1pP35yQkzWe9sPwxrfMS1AQEMoyQc91pa"
origseed=["idle", "alter", "enrich", "spawn", "ensure", "horn", "fruit", "smooth", "segment", "vendor", "cupboard", "stone"];
for x in range(0, 12): myseed=origseed[:]; for y in range(0,1626): variedword=words[y];
myseed2 = "" myseed[x]=variedword; for i in myseed: myseed2 += str(i) + " "; myseed2 = myseed2[:-1] print "Attempting seed: "+myseed2; seed=myseed2; print " "; plainseed=seed; print "We're on seed word "+str(x+1)+" iteration "+str(y); print " "; seedlist=str.split(seed); password = None; seed=mn_decode(seedlist); oldseed=seed; newseed=stretch_key(seed); curve = SECP256k1 master_private_key = ecdsa.SigningKey.from_secret_exponent( newseed, curve = SECP256k1 ); master_public_key = master_private_key.get_verifying_key().to_string().encode('hex'); mpk=master_public_key.decode('hex'); for ra in range(0,numberofreceivingaddresses): foundseed=0; addy=get_address(mpk,0,ra); if addy==clue: print "WOWWWWWWW!!! FOUND THE SEED!!!"; foundseed=1; print plainseed; if foundseed==1: quit() This will check every possible combination of the seed and it will also generate many addresses to check. You can lower the number of addresses generated if required.. Good luck as this is quite slow.
|
|
|
Thanks guys you solved my issue and thank you for the explanations and script. @pooya87 I ran out of merits so IOU 1+ merit
|
|
|
Trying to convert pub key to corresponding hash 160. input.txt would have the public addresses inside output would be the hash160's but the issue is the hash 160's that come back do not match on the explorer. Is there a step that is missing from the conversion? I read that I need possibly base58 check Thanks in advance! import hashlib,binascii
# Set Output file with open('OUT.txt', 'w') as result:
# Set input addresses for word in open('input.txt').read().split():
# Check encoding and set Algorithm choice SHA1, SHA224, SHA256, SHA384, SHA512, RIPEMD160, MD5, h = hashlib.new('ripemd160', word.encode('utf-8')).digest() result.write(binascii.hexlify(h) + '\n')
|
|
|
Thanks, you might be right! I will have a gander... Thank you again!!
Most welcome.
|
|
|
Seems every time we get close to my magic number 128 diff we re-target and it falls further away! Come on 128! (i know means nothing but as humans we just love special numbers CK would you have an idea of how much hash rate would be needed to make solves here every month?
|
|
|
Downside to password manager is you lose or get hacked that one master password you can say goodbye to all your accounts.
I really don't think password managers are a good solution.
What I used to do for my miners was have a logbook give every miner a number and a random password in the logbook this way someone would need physical access to get your miner passwords.
The less you keep in digital format the less you have to lose.
|
|
|
What would be nice is some users to get something like the report button that marks topics like this. I have submitted a few with the report button but I feel this is more for alerting to serious concerns like virus or phishing attempts it would be an idea to have people who are merit sources possibly have additional button to flag potential spam, low worth posts, and scams.
I don't know if there has been a system like this proposed but I think if there were some members who had some kind of secondary way to flag these accounts it might make banning them simpler.
Or a system of De-merit.
User N00B joins and posts a simple easy to find question on the forum or with google like
How do I check a my wallet on the blockchain.
Merit-souce ( can flag the message, 1. spam, 2. non-constructive
every time you get a STRIKE from a merit source you should either lose merit or if you have a fresh account a warning for low-constructive posts
I also think it might be an idea to have new users view a forum rules post and accept the rules this way anyone falling foul of them cannot claim they did not know ect ect as they would have accepted them once joined. There seems to be many bot's on the forum posting questions they are always of very low value or very low quality I would say after 3 strikes you get banned.
This action in turn will ban the "question bots" and low quality content from spamming up the forum and good technical and valid questions won't be lost to them either.
Just my 2 sat's
|
|
|
this is not the only account wich has been freez and closed, same thing for coinbase for no reason and kraken because my bank account was not in my country.
this is really stupid and if you read the policy of this exchanges, all their terms of service are not clear and contradictory.
coinbase has rob me and never back send my btc, kraken have freez my account and have made me lost my time during bull run of 2017 and now bittrex have rob me and dont want back send my money.
This is not the first claim that has been made my users against Bittrex, What I find strange is the fact they ask for selfies what use would they be anyway not like you submit one when you signed up to there exchange so why would they need this what purpose would it server them if they have no "original" reference.I have the same issue with Binance and a lost 2fa they refuse remove my 2FA until I submit them photo's and government issued ID which is not happening. I think we all supported the wrong exchanges in the past my advice from now on is to stick to DEX markets this way you can ensure no need for KYC. I think we are about to see the next collapse of some exchanges either from "hacking" or insider exit scams. i dont, i just refused and ask the refund but they want 3 selfies for let me withdraw my funds, pict front, left and right, like criminal, i never see that, any exchanges have never ask me that for refund me. You misunderstood me I am saying it makes no sense for them to ASK for photo's if they have no Reference IE passport at signup to compare it to. Stand your ground with them ask them for there company information including trading address and company references my only other advice would be seek legal advice over this. If they have your money and won't give back you have re-course but would require advice from legal advisor. Stand your ground if they did not request ID at sign up they should not be asking for it now if it's a change of service terms they MUST first inform you the customer. I hope you get your funds back.
|
|
|
this is not the only account wich has been freez and closed, same thing for coinbase for no reason and kraken because my bank account was not in my country.
this is really stupid and if you read the policy of this exchanges, all their terms of service are not clear and contradictory.
coinbase has rob me and never back send my btc, kraken have freez my account and have made me lost my time during bull run of 2017 and now bittrex have rob me and dont want back send my money.
This is not the first claim that has been made my users against Bittrex, What I find strange is the fact they ask for selfies what use would they be anyway not like you submit one when you signed up to there exchange so why would they need this what purpose would it server them if they have no "original" reference. I have the same issue with Binance and a lost 2fa they refuse remove my 2FA until I submit them photo's and government issued ID which is not happening. I think we all supported the wrong exchanges in the past my advice from now on is to stick to DEX markets this way you can ensure no need for KYC. I think we are about to see the next collapse of some exchanges either from "hacking" or insider exit scams.
|
|
|
|