Bagaimana untuk memecahkan hadiah teka-teki kunci peribadi OKX untuk Hari Lingkaran Dunia (dengan kod penuh)

Penulis:Pencipta Kuantiti, Dicipta: 2023-03-14 23:25:45, Dikemas kini: 2023-09-18 20:08:33

img

Lihatlah kumpulan besar di sebelah yang berkata OKX sedang mengadakan acara untuk menghapuskan rahsia pada Hari Penggambaran Dunia, topiknya adalah sebagai berikut:

img

Sebagai seorang petani lama, saya melihat mesej itu, sudut mulutnya sedikit naik, saya membuka MacBook Pro saya, saya tidak berkata apa-apa, saya mulakan.

Analisis

Menurut pihak berkuasa, terdapat 61 bit kunci di dalam gambar yang bertindih dengan kelajuan, dan kunci peribadi yang anda semua tahu panjangnya adalah 32 bait, ditukar kepada hex iaitu 64 bit ditambah dengan awalan 0x, sehingga 66 bit, sudah ada 61 bit, dengan pandangan mata, "0X" pada baris pertama dalam gambar jelas bukan kelajuan adalah awal awal, dan terdapat 5 digit kanan ((0123456789ABCDEF) susunan rawak aksara ini, tidak ada masalah dengan kekerasan, mulakan.

Menggunakan alat Mac yang disertakan untuk mengemas kini warna yang mudah

img

Dan Mac akan mengiktiraf aksara dalam gambar secara automatik, dan kita akan menyalin secara langsung:

3.141592653589793230X1D64338
А694502884197169399375105820
974925E123078164062862089986
28033DB034211706409914808651
32823066470ED424609550582231
8B3
81284
•探索,
038
永无止境
027
493
05%
0128
4756482337867831731712019091
47D9E56692346034861045432664
8213393607743749141273724587
006606315588174881BEEA209628
2925409192744436789259036001

Gambar ini pasti tidak berfungsi, dan kami telah mengubahnya secara manual, dan gambar yang tidak disahkan yang disembunyikan di bawah ini ditandakan sebagai *, tidak pasti, dan kami akan membincangkannya kemudian. Yang lain terikat dengan gambar, yang boleh difahami dengan melihat bentuk penulisan font lain, pada masa ini kita ke Python, mengira perbezaan antara dua, yang sama dengan tag_' dinyatakan, hanya menunjukkan perbezaan

img = '''
3.141592653589793230X1D64338
A694502884197169399375105820
974925E123078164062862089986
28033DB034211706409914808651
32823066470ED424609550582231
8B32594081284811174502841027
0193**2*D2299964462294895493
0381960EFC8103F9365933446128
4756482337867831731712019091
47D9E56692346034861045432664
82133936077A3749141273724587
006606315588174881BEEA209628
2925409192744436789259036001
'''
# 真实圆周率
real='''
3.14159265358979323846264338
3279502884197169399375105820
9749445923078164062862089986
2803482534211706798214808651
3282306647093844609550582231
7253594081284811174502841027
0193852110555964462294895493
0381964428810975665933446128
4756482337867831652712019091
4564856692346034861045432664
8213393607260249141273724587
0066063155881748815209209628
2925409171536436789259036001
'''

items = img.strip().split('\n')
diffStr = ''
for pos, line in enumerate(real.strip().split('\n')):
    for i, c in enumerate(line):
        imgLine = list(items[pos])
        if line[i] == imgLine[i]:
            imgLine[i] = '_'
        else:
            diffStr += imgLine[i]
        items[pos] = ''.join(imgLine)
print('\n'.join(items))
print(diffStr, 'Len:', len(diffStr))

Hasil pelaksanaan adalah sebagai berikut:

___________________0X1D_____
A694________________________
____25E1____________________
____3DB0________4099________
___________ED42_____________
8B32________________________
____**_*D2299_______________
______0EFC___3F93___________
________________731_________
_7D9E_______________________
__________7A37______________
__________________BEEA______
________92744_______________
0X1DA69425E13DB04099ED428B32***D22990EFC3F937317D9E7A37BEEA92744 Len: 64

Saya akan cuba untuk menghapuskan dia, kerana jika saya tidak menghapuskan 61 digit yang lain, ia tidak masalah. Tinggalkan perbezaan yang paling pasti, dan akhirnya perhatikan prefix sebagai berikut:

0X1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744

Pada bahagian bawah, anda perlu masuk ke Python, dengan kekerasan untuk menaiki baki rantai OK, untuk membandingkan baki kunci peribadi mana yang mana, sebenarnya anda juga boleh memilih kunci awam yang telah ditransfer 314 USDT terlebih dahulu, ini lebih cepat, melihat laman web yang mengatakan ada gas, maka anda boleh melihat baki langsung, kodnya agak berantakan.

import sys
import web3,time,logging
from eth_account import Account
from web3 import Web3
logging.basicConfig(level=logging.INFO, format='%(asctime)s %(message)s')
w3 = Web3(Web3.HTTPProvider("https://exchainrpc.okex.org"))
logging.info(w3.clientVersion)
found = None

def get_balance_gas(key):
    global found
    _counter += 1
    address = Account.from_key(key).address
    logging.info('fetch address %s %s' % (found, address))
    while True:
        try:
            balance = w3.eth.get_balance(address)
            break
        except:
            logging.warning(traceback.format_exc())
            time.sleep(1)
            continue
    if balance != 0:
        found = key
        raise BaseException('Found balance: %s %s' % (address, balance))
    return balance

from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(max_workers=50)
keys = []
prefix = '1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744'
# 无所谓优化算法了, 争分夺秒跑密钥
ch = '0123456789ABCDEF'
for a in range(0, 16):
    for b in range(0, 16):
        for c in range(0, 16):
            for d in range(0, 16):
                for e in range(0, 16):
                    keys.append("0x"+prefix+ch[a]+ch[b]+ch[c]+ch[d]+ch[e])
print('all keys:', len(keys))
tasks = [None for t in keys]
for idx, key in enumerate(keys):
    tasks[idx] = executor.submit(get_balance_gas, key)
for t in tasks:
    t.result()
    

Jadi anda boleh lihat bahawa saya perlu 104,85,76 kali untuk menggunakan pelbagai benang dengan lebih cepat, dan saya meletakkan ia di salah satu pelayan saya.

2023-03-15 00:20:19,491 exchain-v1.6.8.5
all keys: 1048576
2023-03-15 00:20:20,372 fetch address None 0xc20C41f06F2428a0FD84ef03Ec6960992F5f8016
2023-03-15 00:20:20,473 fetch address None 0xcFa87ee54bc1c14c09a3AB3f41640bBab5C5480a
2023-03-15 00:20:20,483 fetch address None 0x126E922652f8B276F231D0eCA94d98685a26a45D
以下省略......

Dalam menunggu dengan cemas~~~~, berita buruk datang, taktik sebelum berundur tidak berjaya, semuanya dipaparkan

Perjalanan puncak berputar

Tidak sepatutnya, BTS tidak faham, saya mula mencari perbincangan di Twitter dan mendapati semua orang mengambil langkah yang hampir sama dengan saya, tetapi yang peliknya, tiada siapa yang mengatakan bahawa mereka berjaya memecahkannya, dan tiada pihak berkuasa yang mengumumkan 61 yang betul, dan pada masa itu saya mendapat perhatian daripada sebuah tweet yang aneh kerana terdapat perbezaan di antara mereka.D2299Saya yakin, tetapi dia juga kelihatan yakin.

img

Tetapi orang yang menyiarkan 61 digit itu adalah D2290, dan dia mengatakan bahawa ia telah diperiksa dengan teliti, tidak kira apa-apa, nasib baik, ia juga adalah penjimatan elektrik.

img

Dengan semangat untuk mencuba, saya mendapat 61 orang yang telah saya temui, dan semua orang kelihatan yakin.

img

Semua awalan yang dijumpai di kawasan komen dikumpulkan dan dijelajahi dengan kod yang kukuh, kod asas tidak berubah, tidak dipetik semula.

prefixs =[
'1DA69425E13DB04099ED428B3202290EFC3F9317317D9E7A37BEEA92744',
'1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744',
'1DA69425E13DB04099ED428B320D2290EFC3F937317D9E7A37BEEA92744',
'1DA694255E3DB040990ED428B3208890EFC3F937317D9E7A37BEEA92744',
'1DA69425E13DB04099ED428B3202299EFC3F9317317D9E7A37BEEA92744',
'1DA69425E13DB01099ED428B3202290EFC3F9317317D9E7A37BEEA92744',
'1DA69425E13DB04099ED428B32D2290EFC3F9317317D9E7A37BEEA92744',
'1DA69425E13DB04099ED428B32D22990EFC3F937317D9E7A37BEEA92744',
]

Sebenarnya, ada lebih banyak mesej baru di belakang, dan ada seorang adik yang mempunyai nilai PI yang berbeza dengan saya, yang luar biasa. Jika anda tidak percaya dengan mata anda, berlari keluar dan menunjukkan bahawa salah satu daripada kunci di depan anda adalah benar, ini tidak saintifik, kunci peribadi adalah:

1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155

Dia D229 di sini, tapi gambarnya jelas D2299, dan 731 di belakang adalah 7, dia dua di sini. Tetapi ia adalah 61 digit yang betul, tidak diketahui bagaimana dia mengira sendiri, sangat ingin tahu, tetapi saya tidak ragu-ragu tentang operasi saya, melihat bahagian komen mengatakan pelanggan rasmi mengatakan bahawa terdapat versi lain dari kadar lingkaran, saya tidak tahu apa-apa, dengan pengetahuan yang saya pelajari dan pemahaman manusia mengenai alam semesta, kadar lingkaran ini tidak masuk akal boleh mewakili alam semesta yang tidak terbatas, pecahan-pecahan kecilnya tidak akan pernah berulang atau berakhir, anda boleh memahami dia sebagai UUID anda di alam semesta ini, jika ada versi lain, mungkin dari dunia selari.

Ini adalah jawapan seorang lagi kakak lelaki kepada perkhidmatan pelanggan selepas ditanya:

img

Ini adalah pengetahuan yang sangat baik.

Kod pertukaran wang Web3

Akhirnya, kod untuk memindahkan bonus, pada kali ini saya menggunakan fungsi Web3 platform FMZ secara langsung, alamat rantaian ditetapkan sebagai OKC dan berfungsi, dan kunci peribadi yang ditambahkan pada pertukaran tidak berfungsi, dan kedua-dua baris disusun, dijalankan secara langsung dalam mod alat debugging.

img

Bukti

Alamat kunci awam yang telah dipecahkan

>>> from eth_account import Account
>>> Account.from_key('0x1DA69425E13DB04099ED428B32D2290EFC3F9373177D9E7A37BEEA92744C8155').address
'0x0bd08825e05e540C9508961a32E58D14da47275A'

Lihat pautan:https://www.okx.com/cn/explorer/okc/address/0x0bd08825e05e540c9508961a32e58d14da47275a

TX, yang saya bawa selepas itu:https://www.okx.com/cn/explorer/okc/tx/0x4211418b09571011417257201aaf10fc3c5d638809a9456eb5aba5fe8c5d4e2c

Anda boleh lihat alamat penerima adalah:

0x25f0a126be95f437ee71d7c4de725567c5f6c731

img

Untuk membuktikan bahawa alamat itu adalah milik saya, saya memindahkan bil ke alamat lubang hitam menggunakan alamat penerima ini.

https://www.okx.com/cn/explorer/okc/tx/0xc32b5e299064456af3eb67c34a3b153f74a1bd18a31429052e3e3c5614bcdb6e

Alamat lubang hitam ialah:0x0000000000000000005757572e464d5a2e434f4d

Alamat lubang hitam ini mengandungi satu alamat yang telah di-decrypt dengan

~ % python -c 'print(bytes.fromhex("0000000000000000005757572e464d5a2e434f4d"))'
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00WWW.FMZ.COM'

Perkataan seterusnya

Saya akan berhenti di sini, kembali ke belakang, atau terima kasih kepada pengetahuan yang saya perolehi selama bertahun-tahun, jika tidak, saya tidak akan memecahkannya dengan cepat, dan orang lain akan mendahului saya. Saya yakin gambar rasmi adalah salah, atau lebih baik, lebih baik saya baca sebelum jawapan diterbitkan, dan berharap OKX akan lebih tegas apabila mengadakan acara serupa pada masa akan datang.


Berkaitan

Lebih lanjut

DadyBerapa lama masa yang diperlukan untuk 104 juta kali?

Johnny.Z sangat sombong!!!

btcrobotKemahiran pertama

Ukuran okZ sangat sombong!!!

Pencipta KuantitiKira-kira 20 minit

Pencipta KuantitiKereta tua datang.